From 985f0b359dc8b6ed4a8d5d3172ea905818ccce33 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 21 Jul 2021 17:00:34 +0200 Subject: [PATCH 01/36] first commit. --- .../adventofcode/days/day01/Day01.java | 56 +++++++++++++++++-- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index e703d306..e428ba8d 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -6,7 +6,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.io.File; +import java.io.FileNotFoundException; +import java.util.ArrayList; import java.util.HashMap; +import java.util.Scanner; +import java.util.stream.Collectors; /** * Implementation for Day 1: Chronal Calibration. @@ -25,7 +30,7 @@ public class Day01 implements Days { @Autowired Day01(FileReaders fileReaders) { this.problemStatus = new HashMap<>(); - this.problemStatus.put("1", ProblemStatusEnum.UNSOLVED); + this.problemStatus.put("1", ProblemStatusEnum.SOLVED); this.problemStatus.put("2", ProblemStatusEnum.UNSOLVED); } @@ -41,7 +46,11 @@ public HashMap getProblemStatus() { @Override public String firstPart() { - return "Part 1 - Frequency: " + calculateFrequency(); + try { + return "" + calculateNumber(); + } catch (FileNotFoundException e) { + return "error"; + } } @Override @@ -55,7 +64,44 @@ public String secondPart() { * * @return the final frequency */ - private int calculateFrequency() { - return 0; +// private int calculateFrequency() { +// return 0; +// } + private int calculateNumber() throws FileNotFoundException { + + // read data file + + Scanner s = new Scanner(new File("/Users/jenni/dedica/AdventOfCode/Jenni/Day01/src/input.txt")); + ArrayList data = new ArrayList(); + + while (s.hasNext()) { + int i = Integer.parseInt(s.next()); + data.add(i); + } + s.close(); + + + // DAY 1 PUZZLE 1: + + // clone data list + ArrayList data1 = (ArrayList) data.clone(); + + // create arraylist that is subtracted by 2020 + ArrayList data2 = new ArrayList(); + + for (int j = 0; j < data.size(); j++) { + data2.add(2020 - data1.get(j)); + } + +// data.stream().map(a -> 2020-a).collect(Collectors.toList()); + + // check for intersection of two arraylists + ArrayList test = new ArrayList(); + data1.retainAll(data2); + + // multiplication of "intersected" values is the puzzle's answer! + System.out.println("The answer of Puzzle Day 1.1 is: " + data1.get(0) * data1.get(1)); + return data1.get(0) * data1.get(1); + } + } -} From ce088712e9288412af35767d3a9c079e4ce862a1 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Thu, 22 Jul 2021 11:10:58 +0200 Subject: [PATCH 02/36] Hello World! This is my first commit while actually "knowing" what I am doing. ;) In this commit I updated Day01.java with the puzzle's answers methods and I wrote a test script for puzzle day 1.1.. --- .../adventofcode/days/day01/Day01.java | 72 +++++++++++++------ 1 file changed, 52 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index e428ba8d..604ebf6e 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -31,7 +31,7 @@ public class Day01 implements Days { Day01(FileReaders fileReaders) { this.problemStatus = new HashMap<>(); this.problemStatus.put("1", ProblemStatusEnum.SOLVED); - this.problemStatus.put("2", ProblemStatusEnum.UNSOLVED); + this.problemStatus.put("2", ProblemStatusEnum.SOLVED); } @Override @@ -47,7 +47,7 @@ public HashMap getProblemStatus() { @Override public String firstPart() { try { - return "" + calculateNumber(); + return "Product 1: " + calculateNumber1(); } catch (FileNotFoundException e) { return "error"; } @@ -55,22 +55,24 @@ public String firstPart() { @Override public String secondPart() { - return null; + try { + return "Product 2: " + calculateNumber2(); + } catch (FileNotFoundException e) { + return "error"; + } } /** * Primary method for Day 1, Part 1. - * Calculates the final frequency as the sum of all frequencies. + * Calculates the product of two specific numbers from a list * * @return the final frequency */ -// private int calculateFrequency() { -// return 0; -// } - private int calculateNumber() throws FileNotFoundException { - // read data file + private int calculateNumber1() throws FileNotFoundException { + + // read data file Scanner s = new Scanner(new File("/Users/jenni/dedica/AdventOfCode/Jenni/Day01/src/input.txt")); ArrayList data = new ArrayList(); @@ -80,28 +82,58 @@ private int calculateNumber() throws FileNotFoundException { } s.close(); + // create arraylist that is subtracted by 2020 + ArrayList data2 = new ArrayList(); + + for (int j = 0; j < data.size(); j++) { + data2.add(2020 - data.get(j)); + } + + // check for intersection of two arraylists + ArrayList test = new ArrayList(); + data.retainAll(data2); + + // multiplication of "intersected" values is the puzzle's answer! + System.out.println("The answer of Puzzle Day 1.1 is: " + data.get(0) * data.get(1)); + return data.get(0) * data.get(1); + } + + private int calculateNumber2() throws FileNotFoundException { - // DAY 1 PUZZLE 1: + // read data file + Scanner s = new Scanner(new File("/Users/jenni/dedica/AdventOfCode/Jenni/Day01/src/input.txt")); + ArrayList data = new ArrayList(); - // clone data list - ArrayList data1 = (ArrayList) data.clone(); + while (s.hasNext()) { + int i = Integer.parseInt(s.next()); + data.add(i); + } + s.close(); // create arraylist that is subtracted by 2020 ArrayList data2 = new ArrayList(); for (int j = 0; j < data.size(); j++) { - data2.add(2020 - data1.get(j)); + data2.add(2020 - data.get(j)); } -// data.stream().map(a -> 2020-a).collect(Collectors.toList()); + ArrayList data3 = new ArrayList(); - // check for intersection of two arraylists - ArrayList test = new ArrayList(); - data1.retainAll(data2); + for (int k=0; k Date: Tue, 27 Jul 2021 22:52:16 +0200 Subject: [PATCH 03/36] I added the code to puzzle day 2 (both parts) in Day02.java. Additionally, I wrote several test scripts (Day02Test.java). --- .../org/haffson/adventofcode/Application.java | 1 + .../adventofcode/days/day02/Day02.java | 177 ++++++++++++++++++ .../adventofcode/days/day01/Day01Test.java | 2 +- 3 files changed, 179 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/haffson/adventofcode/days/day02/Day02.java diff --git a/src/main/java/org/haffson/adventofcode/Application.java b/src/main/java/org/haffson/adventofcode/Application.java index 1ec93423..46da1014 100644 --- a/src/main/java/org/haffson/adventofcode/Application.java +++ b/src/main/java/org/haffson/adventofcode/Application.java @@ -13,5 +13,6 @@ public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); + } } diff --git a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java new file mode 100644 index 00000000..cd3647c0 --- /dev/null +++ b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java @@ -0,0 +1,177 @@ +package org.haffson.adventofcode.days.day02; + +import org.haffson.adventofcode.ProblemStatusEnum; +import org.haffson.adventofcode.days.Days; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Scanner; + + + +/** + * Implementation for Day 1: Chronal Calibration. + */ +@Component +public class Day02 implements Days { + + private final String path = "/Users/jenni/dedica/AdventOfCode/Jenni/Day02/src/input.txt"; + private List rawData = getRawDataAsList(path); + + /** The puzzle status {@code HashMap} */ + private final HashMap problemStatus; + + @Autowired + Day02() { + this.problemStatus = new HashMap<>(); + this.problemStatus.put("1", ProblemStatusEnum.SOLVED); + this.problemStatus.put("2", ProblemStatusEnum.SOLVED); + } + + @Override + public int getDay() { + return 2; + } + + @Override + public HashMap getProblemStatus() { + return problemStatus; + } + + @Override + public String firstPart() { + try { + return "Part 1 answer: " + getNumberPwd1(); + } catch (FileNotFoundException e) { + return "Error in method 1"; + } + } + + @Override + public String secondPart() { + try { + return "Part 2 answer: " + getNumberPwd2(); + } catch (FileNotFoundException e) { + return "Error in method 2"; + } + } + + + /** Method to read raw data from file into list + * + * @return raw data as list + */ + public List getRawDataAsList(String path) { + List rawData = new ArrayList<>(); + + try { + Scanner s = new Scanner(new File(path)).useDelimiter("\n"); + while (s.hasNext()) { + rawData.add(s.next()); + } + s.close(); + } catch (FileNotFoundException e) { + System.out.println("File not found!"); + } + return rawData; + } + + /** + * Method getData() to get min and max number, letter and password from raw data + * First, create class Data to avoid having multiple return values + */ + public static class Data { + int min; + int max; + String letter; + String pwd; + + public Data(int min, int max, String letter, String pwd) { + this.min = min; + this.max = max; + this.letter = letter; + this.pwd = pwd; + } + } + + public List getData(List rawData) { + + List dataArrayList = new ArrayList<>(); + + for (int i = 0; i < rawData.size(); i++) { + + String line = rawData.get(i); + + // match patterns to determine min and max number of the letter in pwd, the searched letter and pwd itself + String pattern = "(\\d+)-(\\d+)\\s+(\\w):\\s+(\\w*)"; + int min = Integer.parseInt(line.replaceAll(pattern, "$1")); + int max = Integer.parseInt(line.replaceAll(pattern, "$2")); + String letter = line.replaceAll(pattern, "$3"); + String pwd = line.replaceAll(pattern, "$4"); + + dataArrayList.add(new Data(min, max, letter, pwd)); + } + return dataArrayList; + } + + + /** + * Primary method for Day 1, Part 1. + * Gets the number of correct passwords from a list + * + * @return the number of correct pwds in list + */ + + private int getNumberPwd1() throws FileNotFoundException { + // get data + List data = getData(rawData); + + int countCorrPwd = 0; // answer to puzzle day 2.1: number of correct passwords in list + + // loop through passwords + for (int i=0; i < data.size(); i++ ) { + int count = 0; // number of letter appearance in pwd + + // count how often specific letter appears in pwd + for (int j = 0; j < data.get(i).pwd.length(); j++) { + if (data.get(i).pwd.charAt(j) == data.get(i).letter.charAt(0)) count++; + } + // check if count meets criteria for correct pwd + if (count >= data.get(i).min && count <= data.get(i).max) { + countCorrPwd++; + } + } + return countCorrPwd; + } + + // if raw data is not read via file, e.g. test data + public void addInput(List rawData) { + this.rawData = rawData; + } + + private int getNumberPwd2() throws FileNotFoundException { + // get data + List data = getData(rawData); + + int countCorrPwd = 0; // answer to puzzle day 2.2: number of correct passwords in list + + // loop through passwords + for (int i=0; i < data.size(); i++ ) { + + boolean onlyFirstPosition = data.get(i).pwd.charAt(data.get(i).min - 1) == data.get(i).letter.charAt(0) && data.get(i).pwd.charAt(data.get(i).max - 1) != data.get(i).letter.charAt(0); + boolean onlySecondPosition = data.get(i).pwd.charAt(data.get(i).max - 1) == data.get(i).letter.charAt(0) && data.get(i).pwd.charAt(data.get(i).min - 1) != data.get(i).letter.charAt(0); + + // letter must appear only once (either only(!) at first or only(!) at second position) + if ((onlyFirstPosition && !onlySecondPosition) || (!onlyFirstPosition && onlySecondPosition)) { + countCorrPwd++; + } + } + return countCorrPwd; + } + +} diff --git a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java index 4ef0c170..6321bdf8 100644 --- a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java @@ -26,7 +26,7 @@ public void test_firstPart_returnsExpectedResult() { //arrange Day01 day01 = new Day01(fileReaders); - String expectedResult = "Part 1 - Frequency: " + 0; + String expectedResult = "Product 1: " + 326211; //act String actualResult = day01.firstPart(); From aacb06f06ac6833c91682611d6b17357b650d5ef Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Tue, 27 Jul 2021 22:57:55 +0200 Subject: [PATCH 04/36] I added the code to puzzle day 2 (both parts) in Day02.java. Additionally, I wrote several test scripts (Day02Test.java). --- .../adventofcode/days/day02/Day02Test.java | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java diff --git a/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java b/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java new file mode 100644 index 00000000..00eb6f16 --- /dev/null +++ b/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java @@ -0,0 +1,104 @@ +package org.haffson.adventofcode.days.day02; + +import org.haffson.adventofcode.utils.FileReaders; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.ArrayList; +import java.util.List; + +//@RunWith(SpringRunner.class) +public class Day02Test { + + @Test + public void testGetDay() { + Day02 day02 = new Day02(); + int expectedResult = 2; + int actualResult = day02.getDay(); + Assert.assertEquals(expectedResult, actualResult); + } + + + // First part test data + @Test + public void test_firstPart_returnsExpectedResult() { + + List rawData = new ArrayList<>(); + rawData.add("1-3 a: abcde"); + rawData.add("1-3 b: cdefg"); + rawData.add("2-9 c: ccccccccc"); + + //arrange + Day02 day02 = new Day02(); + day02.addInput(rawData); + + String expectedResult = "Part 1 answer: " + 2; + + //act + String actualResult = day02.firstPart(); + + //assert + Assert.assertEquals(expectedResult, actualResult); + } + + + // First part raw data from file (real puzzle data) + @Test + public void test_firstPart_puzzleData_returnsExpectedResult() { + + //arrange + Day02 day02 = new Day02(); + + String expectedResult = "Part 1 answer: " + 607; + + //act + String actualResult = day02.firstPart(); + + //assert + Assert.assertEquals(expectedResult, actualResult); + } + + + // Second part test data + @Test + public void test_secondPart_returnsExpectedResult() { + + List rawData = new ArrayList<>(); + rawData.add("1-3 a: abcde"); + rawData.add("1-3 b: cdefg"); + rawData.add("2-9 c: ccccccccc"); + + //arrange + Day02 day02 = new Day02(); + day02.addInput(rawData); + + String expectedResult = "Part 2 answer: " + 1; + + //act + String actualResult = day02.secondPart(); + + //assert + Assert.assertEquals(expectedResult, actualResult); + } + + + // Second part raw data from file (real puzzle data) + @Test + public void test_secondPart_puzzleData_returnsExpectedResult() { + + //arrange + Day02 day02 = new Day02(); + + String expectedResult = "Part 2 answer: " + 321; + + //act + String actualResult = day02.secondPart(); + + //assert + Assert.assertEquals(expectedResult, actualResult); + } + +} From e53d1211558f08ca710723d6dbad2497cd72cf62 Mon Sep 17 00:00:00 2001 From: jenarp <67540243+jenarp@users.noreply.github.com> Date: Mon, 2 Aug 2021 17:12:11 +0200 Subject: [PATCH 05/36] Apply suggestions from code review Co-authored-by: Michelle Fernandez Bieber <37021266+mfbieber@users.noreply.github.com> --- .../adventofcode/days/day02/Day02.java | 40 +++++++++---------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java index cd3647c0..479a6bef 100644 --- a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java +++ b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java @@ -48,7 +48,7 @@ public String firstPart() { try { return "Part 1 answer: " + getNumberPwd1(); } catch (FileNotFoundException e) { - return "Error in method 1"; + return "Error in method 1: " + e.getMessage(); } } @@ -57,24 +57,22 @@ public String secondPart() { try { return "Part 2 answer: " + getNumberPwd2(); } catch (FileNotFoundException e) { - return "Error in method 2"; + return "Error in method 2: " + e.getMessage(); } } - /** Method to read raw data from file into list - * + /** + * Method to read raw data from file into list * @return raw data as list */ public List getRawDataAsList(String path) { List rawData = new ArrayList<>(); - try { - Scanner s = new Scanner(new File(path)).useDelimiter("\n"); + try (Scanner s = new Scanner(new File(path)).useDelimiter("\n")){ while (s.hasNext()) { rawData.add(s.next()); } - s.close(); } catch (FileNotFoundException e) { System.out.println("File not found!"); } @@ -86,10 +84,10 @@ public List getRawDataAsList(String path) { * First, create class Data to avoid having multiple return values */ public static class Data { - int min; - int max; - String letter; - String pwd; + private final int min; + private final int max; + private final String letter; + private final String pwd; public Data(int min, int max, String letter, String pwd) { this.min = min; @@ -103,9 +101,7 @@ public List getData(List rawData) { List dataArrayList = new ArrayList<>(); - for (int i = 0; i < rawData.size(); i++) { - - String line = rawData.get(i); + for (String line : rawData) { // match patterns to determine min and max number of the letter in pwd, the searched letter and pwd itself String pattern = "(\\d+)-(\\d+)\\s+(\\w):\\s+(\\w*)"; @@ -134,15 +130,15 @@ private int getNumberPwd1() throws FileNotFoundException { int countCorrPwd = 0; // answer to puzzle day 2.1: number of correct passwords in list // loop through passwords - for (int i=0; i < data.size(); i++ ) { + for (Data datum : data) { int count = 0; // number of letter appearance in pwd // count how often specific letter appears in pwd - for (int j = 0; j < data.get(i).pwd.length(); j++) { - if (data.get(i).pwd.charAt(j) == data.get(i).letter.charAt(0)) count++; + for (int j = 0; j < datum.pwd.length(); j++) { + if (datum.pwd.charAt(j) == datum.letter.charAt(0)) count++; } - // check if count meets criteria for correct pwd - if (count >= data.get(i).min && count <= data.get(i).max) { + // check if count meets criteria for correct pwd + if (count >= datum.min && count <= datum.max) { countCorrPwd++; } } @@ -161,10 +157,10 @@ private int getNumberPwd2() throws FileNotFoundException { int countCorrPwd = 0; // answer to puzzle day 2.2: number of correct passwords in list // loop through passwords - for (int i=0; i < data.size(); i++ ) { + for (Data datum : data) { - boolean onlyFirstPosition = data.get(i).pwd.charAt(data.get(i).min - 1) == data.get(i).letter.charAt(0) && data.get(i).pwd.charAt(data.get(i).max - 1) != data.get(i).letter.charAt(0); - boolean onlySecondPosition = data.get(i).pwd.charAt(data.get(i).max - 1) == data.get(i).letter.charAt(0) && data.get(i).pwd.charAt(data.get(i).min - 1) != data.get(i).letter.charAt(0); + boolean onlyFirstPosition = datum.pwd.charAt(datum.min - 1) == datum.letter.charAt(0) && datum.pwd.charAt(datum.max - 1) != datum.letter.charAt(0); + boolean onlySecondPosition = datum.pwd.charAt(datum.max - 1) == datum.letter.charAt(0) && datum.pwd.charAt(datum.min - 1) != datum.letter.charAt(0); // letter must appear only once (either only(!) at first or only(!) at second position) if ((onlyFirstPosition && !onlySecondPosition) || (!onlyFirstPosition && onlySecondPosition)) { From 31af216b079f2c33ec1d4966ea4fbee300d96a09 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Thu, 5 Aug 2021 12:44:40 +0200 Subject: [PATCH 06/36] - I added the code to puzzle day 3 (both parts) in Day03.java. - I wrote several test scripts (Day03Test.java). - I resolved the comments from Michelle for Day02.java - Raw Data is added in resources --- .../adventofcode/days/day02/Day02.java | 75 +- .../adventofcode/days/day03/Day03.java | 156 +++ src/main/resources/data/input_day01.txt | 200 ++++ src/main/resources/data/input_day02.txt | 1000 +++++++++++++++++ src/main/resources/data/input_day03.txt | 323 ++++++ .../adventofcode/days/day02/Day02Test.java | 6 - .../adventofcode/days/day03/Day03Test.java | 71 ++ 7 files changed, 1799 insertions(+), 32 deletions(-) create mode 100644 src/main/java/org/haffson/adventofcode/days/day03/Day03.java create mode 100644 src/main/resources/data/input_day01.txt create mode 100644 src/main/resources/data/input_day02.txt create mode 100644 src/main/resources/data/input_day03.txt create mode 100644 src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java diff --git a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java index 479a6bef..086e125f 100644 --- a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java +++ b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java @@ -1,17 +1,17 @@ package org.haffson.adventofcode.days.day02; +import org.apache.commons.lang3.StringUtils; import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; import java.io.File; import java.io.FileNotFoundException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Scanner; - +import java.io.IOException; +import java.util.*; /** @@ -20,8 +20,19 @@ @Component public class Day02 implements Days { - private final String path = "/Users/jenni/dedica/AdventOfCode/Jenni/Day02/src/input.txt"; - private List rawData = getRawDataAsList(path); + // Read content of input file + File resource; + { + try { + resource = new ClassPathResource( + "data/input_day02.txt").getFile(); + } catch (IOException e) { + System.out.println("Raw Data (Input) file not found: " + e.getMessage()); + } + } + +// private final String path = "/Users/jenni/dedica/AdventOfCode/Jenni/Day02/src/input.txt"; + private List rawData = getRawDataAsList(resource); /** The puzzle status {@code HashMap} */ private final HashMap problemStatus; @@ -62,14 +73,14 @@ public String secondPart() { } - /** + /** * Method to read raw data from file into list * @return raw data as list */ - public List getRawDataAsList(String path) { + public List getRawDataAsList(File file) { List rawData = new ArrayList<>(); - try (Scanner s = new Scanner(new File(path)).useDelimiter("\n")){ + try (Scanner s = new Scanner(new File(String.valueOf(file.toPath()))).useDelimiter("\n")){ while (s.hasNext()) { rawData.add(s.next()); } @@ -87,13 +98,24 @@ public static class Data { private final int min; private final int max; private final String letter; - private final String pwd; + private final String password; + + public Data(int min, int max, @NonNull String letter, @NonNull String password) { - public Data(int min, int max, String letter, String pwd) { this.min = min; this.max = max; - this.letter = letter; - this.pwd = pwd; + this.letter = requireNonNullAndNonEmpty(letter); + this.password = requireNonNullAndNonEmpty(password); + + } + + } + + public static String requireNonNullAndNonEmpty(String string){ + if (StringUtils.isEmpty(string)){ + throw new NullPointerException("The string is null or empty"); + } else { + return string; } } @@ -102,15 +124,15 @@ public List getData(List rawData) { List dataArrayList = new ArrayList<>(); for (String line : rawData) { - - // match patterns to determine min and max number of the letter in pwd, the searched letter and pwd itself + // match patterns to determine min and max number of the letter in password, + // the searched letter and password itself String pattern = "(\\d+)-(\\d+)\\s+(\\w):\\s+(\\w*)"; int min = Integer.parseInt(line.replaceAll(pattern, "$1")); int max = Integer.parseInt(line.replaceAll(pattern, "$2")); String letter = line.replaceAll(pattern, "$3"); - String pwd = line.replaceAll(pattern, "$4"); + String password = line.replaceAll(pattern, "$4"); - dataArrayList.add(new Data(min, max, letter, pwd)); + dataArrayList.add(new Data(min, max, letter, password)); } return dataArrayList; } @@ -120,24 +142,23 @@ public List getData(List rawData) { * Primary method for Day 1, Part 1. * Gets the number of correct passwords from a list * - * @return the number of correct pwds in list + * @return the number of correct passwords in list */ private int getNumberPwd1() throws FileNotFoundException { // get data List data = getData(rawData); - int countCorrPwd = 0; // answer to puzzle day 2.1: number of correct passwords in list // loop through passwords for (Data datum : data) { - int count = 0; // number of letter appearance in pwd + int count = 0; // number of letter appearance in password // count how often specific letter appears in pwd - for (int j = 0; j < datum.pwd.length(); j++) { - if (datum.pwd.charAt(j) == datum.letter.charAt(0)) count++; + for (int j = 0; j < datum.password.length(); j++){ + if (datum.password.charAt(j) == datum.letter.charAt(0)) count++; } - // check if count meets criteria for correct pwd + // check if count meets criteria for correct password if (count >= datum.min && count <= datum.max) { countCorrPwd++; } @@ -159,8 +180,10 @@ private int getNumberPwd2() throws FileNotFoundException { // loop through passwords for (Data datum : data) { - boolean onlyFirstPosition = datum.pwd.charAt(datum.min - 1) == datum.letter.charAt(0) && datum.pwd.charAt(datum.max - 1) != datum.letter.charAt(0); - boolean onlySecondPosition = datum.pwd.charAt(datum.max - 1) == datum.letter.charAt(0) && datum.pwd.charAt(datum.min - 1) != datum.letter.charAt(0); + boolean onlyFirstPosition = datum.password.charAt(datum.min - 1) == datum.letter.charAt(0) && + datum.password.charAt(datum.max - 1) != datum.letter.charAt(0); + boolean onlySecondPosition = datum.password.charAt(datum.max - 1) == datum.letter.charAt(0) && + datum.password.charAt(datum.min - 1) != datum.letter.charAt(0); // letter must appear only once (either only(!) at first or only(!) at second position) if ((onlyFirstPosition && !onlySecondPosition) || (!onlyFirstPosition && onlySecondPosition)) { diff --git a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java new file mode 100644 index 00000000..42976182 --- /dev/null +++ b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java @@ -0,0 +1,156 @@ +package org.haffson.adventofcode.days.day03; + +import org.haffson.adventofcode.ProblemStatusEnum; +import org.haffson.adventofcode.days.Days; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.*; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.*; + +/** + * Implementation for Day 1: Chronal Calibration. + */ +@Component +public class Day03 implements Days { + +/** The puzzle status {@code HashMap} */ +private final HashMap problemStatus; + + // Read content of input file + File resource; + { + try { + resource = new ClassPathResource( + "data/input_day03.txt").getFile(); + } catch (IOException e) { + System.out.println("Raw Data (Input) file not found: " + e.getMessage()); + } + } + + private final String[] data = getRawDataAsArray(resource); + + + @Autowired + Day03() { + this.problemStatus = new HashMap<>(); + this.problemStatus.put("1", ProblemStatusEnum.SOLVED); + this.problemStatus.put("2", ProblemStatusEnum.SOLVED); + } + + @Override + public int getDay() { + return 3; + } + + @Override + public HashMap getProblemStatus() { + return problemStatus; + } + + @Override + public String firstPart() { + return "Trees encountered: " + getNumTrees(data); + } + + @Override + public String secondPart() { + return "Product of all slopes: " + getProduct(data); + } + + public String[] getTestData() { + final String test = "..##.......\n" + + "#...#...#..\n" + + ".#....#..#.\n" + + "..#.#...#.#\n" + + ".#...##..#.\n" + + "..#.##.....\n" + + ".#.#.#....#\n" + + ".#........#\n" + + "#.##...#...\n" + + "#...##....#\n" + + ".#..#...#.#"; + + return test.split("\\n"); + } + + public String[] getRawDataAsArray(File resource) { + List rawData = new ArrayList<>(); + try (Scanner s = new Scanner(new File(String.valueOf(resource.toPath()))).useDelimiter("\n")){ + while (s.hasNext()) { + rawData.add(s.next()); + } + } catch (FileNotFoundException e) { + System.out.println("File not found!" + e.getMessage()); + } + String[] rawData_array = new String[rawData.size()]; + for(int i = 0; i < rawData.size(); i++) rawData_array[i] = rawData.get(i); + + return rawData_array; + } + +// method for answer of puzzle day03 part 1 +// search for number of trees encountered + public String getNumTrees(String[] data){ + + int sizeX = data[0].length(); // vertical direction + int sizeY = data.length; // horizontal direction + int numTrees = 0; // number of trees encountered + char square = 0; // each coordinate on grid is called square + + for (int i=1; isizeX) { + int repeatedPosition = (i*3)%sizeX; + square = data[i*1].charAt(repeatedPosition); + } + if (square == '#'){ + numTrees++; + } + } + return "" + numTrees; + } + + // method for answer of puzzle day03 part 1 + public String getProduct(String[] data){ + // 5 slopes need to be checked + int[] stepY = new int[5]; + int[] stepX = new int[5]; + + stepY[0] = 1; + stepY[1] = 1; + stepY[2] = 1; + stepY[3] = 1; + stepY[4] = 2; + + stepX[0] = 1; + stepX[1] = 3; + stepX[2] = 5; + stepX[3] = 7; + stepX[4] = 1; + + int sizeX = data[0].length(); // horizontal direction + int sizeY = data.length; // vertical direction + long product = 1; // number of product of all trees with all slopes + + for (int j=0; j Date: Wed, 25 Aug 2021 10:39:25 +0200 Subject: [PATCH 07/36] I added the code to puzzle day 4 (both parts) in Day04.java. Additionally, I wrote several test scripts (Day04Test.java). --- .../adventofcode/days/day04/Day04.java | 218 ++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 src/main/java/org/haffson/adventofcode/days/day04/Day04.java diff --git a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java new file mode 100644 index 00000000..6c312f38 --- /dev/null +++ b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java @@ -0,0 +1,218 @@ +package org.haffson.adventofcode.days.day04; + +import org.haffson.adventofcode.ProblemStatusEnum; +import org.haffson.adventofcode.days.Days; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.*; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.*; + +/** + * Implementation for Day 1: Chronal Calibration. + */ +@Component +public class Day04 implements Days { + + /** + * The puzzle status {@code HashMap} + */ + private final HashMap problemStatus; + + // Read content of test file (puzzle part 1) + File testResource; + { + try { + testResource = new ClassPathResource( + "data/day04/day04_testdata.txt").getFile(); + } catch (IOException e) { + System.out.println("Raw Data (Input) file not found: " + e.getMessage()); + } + } + + // Read content of test file (puzzle part 2) + File testResource2; + { + try { + testResource2 = new ClassPathResource( + "data/day04/day04_testdata2.txt").getFile(); + } catch (IOException e) { + System.out.println("Raw Data (Input) file not found: " + e.getMessage()); + } + } + + // Read content of input file (real data) + File resource; + { + try { + resource = new ClassPathResource( + "data/day04/input_day04.txt").getFile(); + } catch (IOException e) { + System.out.println("Raw Data (Input) file not found: " + e.getMessage()); + } + } + + + @Autowired + Day04() { + this.problemStatus = new HashMap<>(); + this.problemStatus.put("1", ProblemStatusEnum.SOLVED); + this.problemStatus.put("2", ProblemStatusEnum.SOLVED); + } + + // get current Day + @Override + public int getDay() { + return 4; + } + + @Override + public HashMap getProblemStatus() { + return problemStatus; + } + + // get answer puzzle day04.1: + @Override + public String firstPart() { + return "Number of valid passports: " + getNumberValidPassports(getRawData(resource)); + } + + // get answer puzzle day04.2: + @Override + public String secondPart() { + return "Number of valid passports: " + getRestrictedNumberValidPassports(getRawData(resource)); + } + + // read raw data and transform it to String[] + public String[] getRawData(File resource) { + List rawData = new ArrayList<>(); + try (Scanner s = new Scanner(new File(String.valueOf(resource.toPath()))).useDelimiter("\n\n")){ + while (s.hasNext()) { + rawData.add(s.next()); + } + } catch (FileNotFoundException e) { + System.out.println("File not found!" + e.getMessage()); + } + String[] rawData_array = new String[rawData.size()]; + for(int i = 0; i < rawData.size(); i++) rawData_array[i] = rawData.get(i); + + return rawData_array; + } + + // answer to day04.1 + public int getNumberValidPassports(String[] rawData_array){ + int numberOfValidPassports = 0; + + for (String passport : rawData_array){ + + Set validKeys = new HashSet<>(Arrays.asList("byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid")); + + String[] splitPassport = passport.split("[\\s+]"); + + for (String field : splitPassport){ + String[] parts = field.split(":"); + validKeys.remove(parts[0]); + } + + if (validKeys.size() == 0){ + numberOfValidPassports++; + } + } + + return numberOfValidPassports; + } + + + + + // answer to day04.2 + public int getRestrictedNumberValidPassports(String[] rawData_array) { + int numberOfValidPassports = 0; + + for (String passport : rawData_array) { + int count = 0; + Map passports = new HashMap<>(); + Set validKeys = new HashSet<>(Arrays.asList("byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid")); + + String[] splitPassport = passport.split("[\\s+]"); + + for (String field : splitPassport) { + String[] parts = field.split(":"); + passports.put(parts[0], parts[1]); + validKeys.remove(parts[0]); + } + + // check only passports that contain all keys + if (validKeys.size() == 0) { + // check birth year + int byr = Integer.parseInt(passports.get("byr")); + if (1920 <= byr && byr <= 2002){ + count++; + } + + // check issue year + int iyr = Integer.parseInt(passports.get("iyr")); + if (2010 <= iyr && iyr <= 2020){ + count++; + } + + // check expiration year + int eyr = Integer.parseInt(passports.get("eyr")); + if (2020 <= eyr && eyr <= 2030){ + count++; + } + + // check body heigth + String hgt = passports.get("hgt"); + // accept only Strings that have more than 3 letters + if (hgt.length() > 3) { + String unit = hgt.substring(hgt.length() - 2); + int bodyheight = Integer.parseInt(hgt.substring(0, (hgt.length() - 2))); + + if (unit.equals("cm")) { + if (bodyheight >= 150 && bodyheight <= 193) { + count++; + } + + } else if (unit.equals("in")) { + if (bodyheight >= 59 && bodyheight <= 76) { + count++; + } + } + } + + // check hair color + String hcl = passports.get("hcl"); + String hclHash = hcl.substring(0,1); + String haircolorID = hcl.substring(1,hcl.length()); + if (hclHash.equals("#") && haircolorID.length() == 6 && haircolorID.matches("[0-9a-f]+")){ + count++; + } + + // check eye color + String ecl = passports.get("ecl"); + List colors = Arrays.asList("amb", "blu", "brn", "gry", "grn", "hzl", "oth"); + if (colors.contains(ecl)){ + count++; + } + + // check passport ID + String pid = passports.get("pid"); + if (pid.length() == 9 && pid.matches("[0-9]+")){ + count++; + } + // if all keys are present and all values are valid to above 7 rules then count == 7 + if (count == 7){ + numberOfValidPassports++; + } + + } + } + return numberOfValidPassports; + } +} + + From 030aa36712c9a1cdcbbf7ebb47d2c3ecde9b8cc8 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 25 Aug 2021 10:40:17 +0200 Subject: [PATCH 08/36] I added the code to puzzle day 4 (both parts) in Day04.java. Additionally, I wrote several test scripts (Day04Test.java). --- .../resources/data/day04/day04_testdata.txt | 13 + .../resources/data/day04/day04_testdata2.txt | 26 + src/main/resources/data/day04/input_day04.txt | 1121 +++++++++++++++++ .../adventofcode/days/day04/Day04Test.java | 58 + 4 files changed, 1218 insertions(+) create mode 100644 src/main/resources/data/day04/day04_testdata.txt create mode 100644 src/main/resources/data/day04/day04_testdata2.txt create mode 100644 src/main/resources/data/day04/input_day04.txt create mode 100644 src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java diff --git a/src/main/resources/data/day04/day04_testdata.txt b/src/main/resources/data/day04/day04_testdata.txt new file mode 100644 index 00000000..3b38741f --- /dev/null +++ b/src/main/resources/data/day04/day04_testdata.txt @@ -0,0 +1,13 @@ +ecl:gry pid:860033327 eyr:2020 hcl:#fffffd +byr:1937 iyr:2017 cid:147 hgt:183cm + +iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884 +hcl:#cfa07d byr:1929 + +hcl:#ae17e1 iyr:2013 +eyr:2024 +ecl:brn pid:760753108 byr:1931 +hgt:179cm + +hcl:#cfa07d eyr:2025 pid:166559648 +iyr:2011 ecl:brn hgt:59in \ No newline at end of file diff --git a/src/main/resources/data/day04/day04_testdata2.txt b/src/main/resources/data/day04/day04_testdata2.txt new file mode 100644 index 00000000..81712b32 --- /dev/null +++ b/src/main/resources/data/day04/day04_testdata2.txt @@ -0,0 +1,26 @@ +eyr:1972 cid:100 +hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926 + +iyr:2019 +hcl:#602927 eyr:1967 hgt:170cm +ecl:grn pid:012533040 byr:1946 + +hcl:dab227 iyr:2012 +ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277 + +hgt:59cm ecl:zzz +eyr:2038 hcl:74454a iyr:2023 +pid:3556412378 byr:2007 + +pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980 +hcl:#623a2f + +eyr:2029 ecl:blu cid:129 byr:1989 +iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm + +hcl:#888785 +hgt:164cm byr:2001 iyr:2015 cid:88 +pid:545766238 ecl:hzl +eyr:2022 + +iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719 diff --git a/src/main/resources/data/day04/input_day04.txt b/src/main/resources/data/day04/input_day04.txt new file mode 100644 index 00000000..9b042219 --- /dev/null +++ b/src/main/resources/data/day04/input_day04.txt @@ -0,0 +1,1121 @@ +eyr:2024 pid:662406624 hcl:#cfa07d byr:1947 iyr:2015 ecl:amb hgt:150cm + +iyr:2013 byr:1997 hgt:182cm hcl:#ceb3a1 +eyr:2027 +ecl:gry cid:102 pid:018128535 + +hgt:61in iyr:2014 pid:916315544 hcl:#733820 ecl:oth + +hcl:#a97842 +eyr:2026 byr:1980 ecl:grn pid:726519569 hgt:184cm cid:132 iyr:2011 + +ecl:grn hcl:#6b5442 pid:619743219 cid:69 hgt:176cm eyr:2027 iyr:2012 +byr:1980 + +ecl:brn byr:1969 iyr:2014 +hgt:164cm eyr:2020 pid:982796633 hcl:#602927 + +ecl:gmt +iyr:1987 eyr:2039 pid:15115163 byr:2006 +hcl:bfab0d + +cid:117 +hcl:#efcc98 +iyr:2010 pid:322719183 +hgt:176cm +eyr:2020 +byr:1957 +ecl:brn + +byr:1954 hgt:178cm hcl:#38f7fd pid:838813262 ecl:blu +eyr:2029 iyr:2019 + +eyr:2023 ecl:amb iyr:2020 byr:1927 pid:242570886 hcl:#18171d hgt:192cm + +iyr:1990 cid:295 hgt:131 pid:187cm byr:2014 +ecl:xry hcl:z +eyr:1928 + +ecl:hzl +byr:1953 +eyr:2023 hcl:#866857 +hgt:181cm iyr:2010 pid:568185567 + +byr:2030 hcl:#fffffd ecl:#a4a596 hgt:168cm +iyr:1936 eyr:2020 cid:296 pid:168786676 + +byr:2030 iyr:2026 eyr:1974 hcl:7fcaa5 ecl:utc +pid:190cm +hgt:67cm + +byr:2023 eyr:2037 hgt:59cm +ecl:lzr hcl:z iyr:2026 pid:#ea9083 + +byr:2003 hcl:z hgt:91 iyr:1990 eyr:2024 ecl:#123d73 +pid:48494230 + +byr:2022 eyr:2020 iyr:2030 ecl:gmt +hgt:191cm pid:3509331253 hcl:#888785 + +iyr:1994 +ecl:#c3d564 byr:2009 +hgt:162cm hcl:336498 pid:#e99d09 +cid:288 +eyr:1921 + +byr:1924 cid:290 iyr:2010 ecl:amb eyr:2020 +hgt:156cm hcl:#7d3b0c pid:795497164 + +cid:301 iyr:2017 hgt:67cm +hcl:#888785 ecl:#0405b9 byr:1964 pid:707857518 eyr:1976 + +ecl:gry pid:474303066 +iyr:2011 hcl:#18171d hgt:165cm byr:1921 eyr:2024 + +hcl:#6b5442 ecl:amb iyr:2020 hgt:191cm +byr:1949 cid:301 +pid:075846582 eyr:2029 + +hcl:#a97842 cid:186 iyr:2014 +ecl:gry +hgt:191cm eyr:2023 pid:645548969 +byr:1956 + +pid:154cm hcl:z ecl:gmt iyr:1989 hgt:69in cid:53 byr:2010 + +hgt:72cm byr:2023 +eyr:2034 hcl:z ecl:#f5249e iyr:1997 pid:#79af7a + +eyr:2038 byr:2015 +hgt:70cm ecl:grt hcl:9d58a1 iyr:1926 pid:6290928420 + +pid:620857794 eyr:2022 +byr:1950 +hgt:159cm +hcl:#ceb3a1 ecl:amb iyr:2015 + +eyr:1954 ecl:#ab2ce4 pid:#14eedd +iyr:2009 +hcl:29e484 +byr:2022 hgt:73cm + +hgt:59cm byr:2026 cid:245 iyr:2020 +eyr:2029 pid:073943129 ecl:hzl +hcl:#b6652a + +iyr:2014 byr:2015 hcl:#a97842 eyr:2029 +pid:#132098 +hgt:150 ecl:oth + +hgt:151in ecl:#967d49 eyr:2026 hcl:#18171d +pid:384230726 byr:1934 +iyr:2018 + +iyr:2020 eyr:2021 byr:1937 pid:735047371 cid:159 ecl:blu hgt:177cm hcl:#22b774 + +ecl:brn hcl:#6b5442 pid:117807698 cid:105 iyr:2016 byr:1977 hgt:183cm + +ecl:hzl hcl:#6b5442 byr:1933 +iyr:2019 pid:348486702 +eyr:2020 hgt:193cm + +byr:1928 +ecl:gry +eyr:2028 hcl:#fffffd pid:571149069 +iyr:2012 hgt:175cm + +pid:359108298 +eyr:2027 hgt:158cm ecl:amb iyr:2016 +hcl:#602927 + +iyr:2027 byr:2015 +hgt:191in pid:102033301 ecl:xry +eyr:2031 hcl:#602927 + +ecl:oth cid:163 hcl:z iyr:2014 +byr:1944 hgt:173cm +eyr:2027 pid:#0524c1 + +ecl:brn +byr:2030 hgt:71cm eyr:1931 cid:165 iyr:2010 hcl:#cfa07d +pid:509642098 + +hgt:166 iyr:2020 cid:308 +eyr:2022 pid:950463527 +byr:2017 +hcl:z + +ecl:amb +eyr:2023 byr:1924 +pid:901038027 hgt:70in +iyr:2010 hcl:z + +byr:1972 +iyr:2013 +hcl:d669ad hgt:64cm cid:247 ecl:#19aa26 eyr:2023 + +hgt:71 hcl:#fffffd +byr:1976 cid:108 eyr:2038 +ecl:grt iyr:2018 pid:190cm + +iyr:2017 +byr:1963 ecl:grn hgt:175cm +pid:160915270 eyr:2028 hcl:#cfa07d + +pid:569740130 hgt:171cm hcl:#733820 +ecl:gry eyr:2024 iyr:2020 byr:1973 + +byr:1937 +iyr:2016 ecl:gry hgt:181cm pid:521705827 hcl:#b6652a eyr:2027 cid:295 + +hgt:156cm ecl:blu iyr:2019 hcl:#866857 +pid:662418718 byr:2000 eyr:2024 + +byr:1971 pid:693616099 +hcl:#efcc98 +hgt:175cm iyr:2016 ecl:gry +eyr:2023 + +iyr:2013 +eyr:2024 +ecl:gry +pid:414295491 byr:1986 +hgt:188cm hcl:#b6652a + +eyr:2022 byr:1975 iyr:2020 +ecl:grn cid:68 hcl:#a97842 +hgt:151cm pid:229803943 + +cid:258 iyr:2012 +ecl:hzl +byr:2001 +eyr:2021 +hcl:#866857 pid:990590217 hgt:172cm + +cid:339 byr:1957 hcl:#866857 pid:343480061 eyr:2039 +hgt:191cm +iyr:2021 +ecl:utc + +cid:281 hcl:z ecl:blu +byr:2020 pid:132694306 eyr:2020 iyr:1953 + +hcl:#602927 +byr:1933 eyr:2028 +hgt:165cm ecl:gry iyr:2018 pid:658484617 + +ecl:oth +hgt:188cm cid:110 pid:056975690 iyr:2016 byr:1950 eyr:2023 hcl:#cfa07d + +cid:342 hcl:#fffffd eyr:2024 +pid:153555359 byr:1974 +ecl:gry hgt:191cm iyr:2020 + +byr:2019 ecl:#160ed3 eyr:1999 hcl:z +cid:146 pid:195693972 hgt:159cm + +iyr:2015 eyr:2030 hgt:191cm byr:1979 +ecl:#ec4873 pid:994113786 hcl:#cfa07d + +pid:552331609 +ecl:grn +hgt:171cm eyr:2022 hcl:#b6652a +iyr:2020 byr:1931 + +hgt:177cm iyr:2010 pid:934058099 +eyr:2020 +ecl:blu +byr:1967 +cid:112 hcl:#7d3b0c + +iyr:2028 +hgt:138 +cid:180 hcl:z +eyr:2022 pid:3286566621 byr:2002 + +eyr:2020 +iyr:2019 +hcl:#a97842 pid:149148750 ecl:brn hgt:159cm +byr:1981 cid:339 + +cid:344 +eyr:2021 byr:1968 pid:777786047 +ecl:grn hgt:192cm hcl:#888785 +iyr:2015 + +hgt:173cm +eyr:2030 +hcl:#733820 pid:610226642 byr:1954 cid:80 +iyr:2013 ecl:blu + +byr:1999 eyr:2023 +ecl:amb pid:912145128 +hgt:181cm +iyr:2015 hcl:#a97842 + +eyr:2027 hgt:188cm +pid:080715145 hcl:#341e13 iyr:2013 +ecl:oth +byr:1965 + +hgt:170cm byr:1950 iyr:2013 +pid:010541784 +eyr:2027 ecl:zzz +hcl:a3bae8 + +hgt:190cm eyr:2024 ecl:#6dcedc pid:909319684 +iyr:2011 byr:1959 hcl:z cid:182 + +eyr:2028 +iyr:2016 hcl:#623a2f pid:208417572 byr:1929 cid:137 ecl:hzl +hgt:167cm + +hcl:#6b5442 +ecl:grn +byr:1938 +eyr:2023 cid:307 +hgt:59in iyr:2014 pid:205268145 + +pid:047489285 eyr:2026 +hcl:#b6652a byr:1920 +iyr:2015 +hgt:183cm ecl:gry + +ecl:blu hcl:#508e8b iyr:2016 eyr:1954 hgt:151cm pid:086752750 byr:1920 + +iyr:2011 byr:1981 hgt:186cm +cid:117 hcl:#6b5442 ecl:amb +pid:756830713 eyr:2026 + +eyr:2037 pid:364464758 hcl:z ecl:grn +hgt:112 iyr:2013 byr:2022 + +ecl:hzl +cid:65 pid:679487194 +byr:1986 hgt:169cm hcl:#cfa07d eyr:2025 iyr:2013 + +cid:192 +byr:1921 pid:#5fe831 ecl:#fbb2b9 hgt:62cm eyr:1971 iyr:2024 +hcl:z + +hcl:#cfa07d eyr:2026 +hgt:74in +iyr:2019 +ecl:xry +pid:622690982 byr:1982 + +eyr:2026 pid:523515724 iyr:2013 byr:1973 hgt:167cm +ecl:grn hcl:#866857 + +byr:2009 +eyr:1985 pid:484497014 ecl:#0bfcf2 iyr:1992 cid:131 hcl:39d6b0 hgt:177in + +eyr:2020 iyr:2016 ecl:brn hcl:#ceb3a1 byr:1966 pid:696621560 cid:62 +hgt:59in + +hgt:166cm hcl:#7d3b0c +iyr:2016 +ecl:brn pid:190cm +eyr:2020 +byr:2001 + +eyr:2021 +iyr:2012 hcl:#6b5442 +ecl:amb hgt:169cm +pid:969150085 +byr:1925 + +ecl:brn hgt:175cm byr:1992 iyr:2016 pid:415209726 eyr:2027 +cid:72 hcl:#866857 + +iyr:2017 +hcl:#733820 byr:1938 eyr:2020 pid:274486958 hgt:163cm + +hcl:4f5dd1 cid:336 ecl:grn iyr:1931 pid:6212280197 +byr:2016 eyr:2037 +hgt:187in + +iyr:2017 byr:1940 eyr:2025 pid:115098205 hgt:151cm +ecl:grn +cid:122 +hcl:#6b5442 + +hcl:#efcc98 +iyr:2020 pid:709548547 hgt:179cm +eyr:2030 ecl:gry byr:1975 + +cid:217 hcl:#888785 eyr:2029 +ecl:hzl iyr:2013 pid:160053490 +hgt:166cm byr:1992 + +eyr:2024 cid:188 iyr:2016 hcl:ff3a59 ecl:xry pid:296357512 byr:2026 + +hgt:154cm iyr:2010 +ecl:blu pid:717041634 byr:1928 cid:123 +eyr:2027 +hcl:#a97842 + +pid:391011205 ecl:hzl hgt:191cm iyr:2016 eyr:2028 cid:281 byr:1934 + +byr:1937 hgt:65in +pid:667975382 ecl:gry cid:270 eyr:2024 +iyr:2012 + +hgt:179cm pid:065528723 +hcl:#888785 byr:1937 eyr:2028 +iyr:2013 ecl:hzl + +iyr:2027 cid:261 eyr:2037 ecl:#ced7d5 pid:157cm +hcl:3a80c1 byr:2029 hgt:187in + +eyr:2028 +hgt:157cm hcl:#733820 +iyr:2012 ecl:blu byr:1952 pid:915063263 cid:335 + +eyr:2023 hcl:#efcc98 pid:490625944 byr:1961 ecl:grn hgt:155cm iyr:2018 + +cid:247 pid:2807544665 eyr:2021 +ecl:oth +hgt:191cm +byr:1928 +iyr:2013 hcl:#623a2f + +eyr:2015 +byr:2021 +hcl:40d2fc hgt:69cm pid:159cm ecl:gmt + +hgt:175cm eyr:1992 cid:328 pid:263110997 ecl:#e53989 byr:2014 hcl:#a97842 iyr:2026 + +pid:491396731 eyr:2027 hgt:172cm hcl:#623a2f cid:92 iyr:2017 byr:1983 ecl:grn + +hcl:#fffffd +iyr:2018 byr:1983 pid:714591144 ecl:grn eyr:2021 +hgt:160cm + +eyr:2027 +hgt:63in ecl:blu byr:1987 pid:397963077 iyr:2018 hcl:#ceb3a1 + +eyr:2027 +hgt:184cm +hcl:#6b5442 iyr:2012 byr:1984 ecl:blu pid:196287205 + +iyr:1998 +ecl:hzl +pid:7872103596 byr:1991 +cid:275 eyr:2039 +hgt:174cm hcl:0d2ad6 + +iyr:2010 hcl:#efcc98 +byr:1992 hgt:65cm eyr:2038 pid:383236012 cid:68 ecl:lzr + +hgt:190in cid:127 +byr:1947 pid:515728209 hcl:#733820 iyr:2014 ecl:amb eyr:2020 + +iyr:2017 eyr:2028 +hcl:#623a2f +byr:1964 ecl:grn pid:198467794 hgt:169cm + +ecl:utc +hgt:59cm byr:2007 iyr:2030 +hcl:7ac4db eyr:2038 pid:#7206c6 + +iyr:2010 +hcl:z eyr:2021 ecl:brn +hgt:173 cid:86 +pid:194240791 byr:1975 + +pid:9347286034 +hgt:63cm +iyr:1992 eyr:2034 hcl:66031b ecl:grt byr:1929 + +pid:593398904 byr:1939 iyr:2019 hcl:#b6652a ecl:gry eyr:2023 +hgt:70cm + +byr:1991 +iyr:2019 hgt:164cm pid:282852411 cid:340 ecl:amb +hcl:#341e13 eyr:2027 + +eyr:2020 +iyr:2014 ecl:grn hcl:#866857 hgt:158cm +byr:1931 pid:321748597 + +cid:98 byr:2023 iyr:2019 pid:#48f79f +hcl:73c882 eyr:1973 hgt:151in +ecl:utc + +iyr:2023 +hcl:#18171d +pid:52221892 eyr:2039 +byr:2008 hgt:72cm ecl:#db8d14 + +iyr:1966 cid:274 +eyr:2034 pid:12256322 +byr:2006 ecl:dne +hcl:985c2d + +hcl:#fd033b +eyr:2026 ecl:blu +iyr:2016 +byr:1953 hgt:157cm +pid:502619036 + +byr:2015 pid:159cm iyr:2025 +hgt:158cm eyr:1943 hcl:z ecl:grn + +ecl:blu iyr:2016 +pid:842400950 +hcl:#733820 +cid:266 +eyr:2027 byr:1931 +hgt:161cm + +iyr:2017 hgt:190cm byr:1994 pid:706570967 +ecl:hzl hcl:#18171d +cid:180 + +cid:197 pid:204952666 ecl:amb +hgt:70in iyr:2016 byr:1936 hcl:#98cbe3 eyr:2025 + +pid:555499128 +byr:1971 hgt:71in +cid:83 ecl:blu +hcl:#cfa07d eyr:2027 + +ecl:hzl iyr:2014 +pid:30428184 cid:237 +hgt:171cm byr:1942 hcl:#888785 eyr:1986 + +eyr:2025 +pid:579385370 hgt:193cm +hcl:#c0946f byr:1979 iyr:2016 +ecl:amb cid:284 + +eyr:2029 byr:1946 pid:278271295 +ecl:grn +hcl:#cfa07d cid:271 +hgt:172cm +iyr:2020 + +pid:731752614 eyr:2020 byr:1983 +cid:248 ecl:oth hgt:179cm +iyr:2017 hcl:#fffffd + +hcl:z +cid:203 eyr:2032 ecl:#3f9d3d hgt:65cm pid:4042846885 byr:2019 +iyr:1946 + +hgt:171cm ecl:gry eyr:2027 +iyr:2013 +hcl:#7d3b0c pid:92288579 +byr:1955 + +ecl:brn hgt:164cm byr:1969 hcl:#cbf9c9 pid:022724981 eyr:2030 iyr:2013 cid:244 + +hgt:162cm byr:1974 iyr:2015 pid:927525094 hcl:#3d3011 ecl:blu +eyr:2023 + +hgt:157cm +eyr:2020 +pid:221286943 hcl:#fffffd ecl:amb iyr:2018 byr:1945 + +iyr:2019 +eyr:2025 byr:1997 pid:341544323 hgt:174cm cid:113 +ecl:hzl + +pid:138492032 hcl:e35302 ecl:#caaede +eyr:1931 +byr:2001 hgt:156 iyr:1998 + +pid:912182030 cid:189 hgt:162 hcl:#277b39 +iyr:2013 eyr:2023 byr:2023 ecl:blu + +eyr:2027 hcl:#fffffd +ecl:brn +cid:304 iyr:2016 byr:1969 +pid:866607511 hgt:192cm + +hgt:64in +ecl:amb +byr:1958 +pid:720439412 +iyr:2015 eyr:2022 hcl:#ceb3a1 + +eyr:2024 hgt:159cm +pid:187867283 iyr:2016 +ecl:oth hcl:#fffffd +byr:1988 + +ecl:#910bf2 byr:1969 iyr:2011 hcl:z eyr:2024 pid:579502502 +cid:103 hgt:174cm + +pid:718692455 +eyr:2028 +iyr:2016 +hcl:#602927 +ecl:blu byr:1954 +cid:251 hgt:182cm + +eyr:2021 hcl:#341e13 ecl:amb +byr:1933 hgt:179cm iyr:2011 pid:083172316 + +iyr:1998 hcl:z eyr:1944 +byr:2006 pid:453368738 +hgt:160 ecl:#9da5f1 cid:261 + +hcl:#7d3b0c +iyr:2018 +hgt:164cm eyr:2020 byr:1940 ecl:blu + +pid:993701676 eyr:2028 ecl:gry +byr:1951 hcl:#888785 cid:116 +iyr:2020 +hgt:192cm + +hcl:z eyr:2033 +ecl:lzr iyr:2029 cid:326 hgt:68cm byr:2026 +pid:96742419 + +hcl:#a97842 ecl:brn +byr:1920 +hgt:173cm iyr:2015 +eyr:2024 pid:176967666 + +byr:1930 eyr:2025 pid:792694131 +hgt:179cm ecl:brn +hcl:#a97842 +iyr:2015 + +hgt:167cm byr:1960 eyr:2022 hcl:#efcc98 +cid:87 ecl:blu iyr:2012 +pid:431515059 + +hcl:#cfa07d +eyr:2023 +hgt:188cm ecl:grn pid:081575957 byr:1938 iyr:2012 + +iyr:2010 byr:1973 +cid:108 +eyr:2026 +pid:880191154 hcl:#888785 hgt:181cm +ecl:brn + +eyr:2021 iyr:2010 byr:1942 hcl:#7d3b0c ecl:hzl pid:886241926 hgt:171cm + +cid:53 byr:1993 +pid:150cm eyr:2035 +hcl:#888785 hgt:153cm ecl:#128262 iyr:2021 + +ecl:gry +pid:555911148 +hcl:#733820 eyr:2022 hgt:154cm iyr:2012 +byr:1935 cid:338 + +hcl:#b6652a +pid:833873846 iyr:2012 +hgt:167cm eyr:2023 byr:1984 + +eyr:2024 +ecl:blu byr:1955 +hcl:#b6652a pid:517975316 iyr:2010 hgt:166cm + +pid:133785752 +ecl:blu +eyr:2024 +byr:1973 +iyr:2019 hcl:#fffffd +cid:236 hgt:173cm + +cid:222 +byr:2013 hcl:z eyr:2036 pid:7443967478 ecl:brn +iyr:2030 hgt:62cm + +hgt:193cm cid:259 +hcl:#18171d +ecl:grn +byr:1995 pid:727880050 eyr:2030 iyr:2010 + +hcl:#c0946f cid:275 eyr:1954 pid:772184635 ecl:#76add7 byr:2009 iyr:2018 hgt:151cm + +ecl:#52ed0f eyr:2033 hcl:#18171d pid:475397948 +byr:1946 iyr:2028 hgt:178cm + +iyr:2012 hgt:152cm +eyr:2027 byr:1923 ecl:brn +hcl:#18171d pid:513722888 cid:171 + +iyr:2029 +hgt:111 hcl:z ecl:#33e3bc eyr:1930 +byr:1934 pid:94036732 + +hgt:154cm eyr:2024 hcl:#6b5442 iyr:2017 +byr:1974 +ecl:amb pid:470968353 cid:345 + +hgt:184cm hcl:#617375 eyr:2028 +byr:1975 ecl:oth +iyr:2018 pid:735589126 + +cid:261 +hcl:#cfa07d pid:213013397 +hgt:187cm +ecl:gry iyr:2016 + +hcl:#623a2f +ecl:#34964b eyr:2009 pid:169cm byr:2028 hgt:169cm +iyr:2028 + +eyr:2029 iyr:2016 +byr:1985 +hgt:192cm hcl:#602927 cid:167 +ecl:blu pid:620818510 + +eyr:2029 +byr:1968 +ecl:blu +hgt:183cm iyr:2011 pid:952376140 hcl:#efcc98 + +iyr:2020 +byr:1981 pid:850136149 eyr:2028 hgt:159cm hcl:#7d3b0c +ecl:brn + +ecl:brn pid:480452858 hgt:65in cid:340 eyr:2022 +byr:1946 +hcl:#602927 iyr:2015 + +hgt:172 hcl:z eyr:1958 iyr:1941 byr:2019 pid:389995951 ecl:dne + +byr:2025 hcl:4c8dcd +hgt:177in +ecl:#55d635 +cid:197 pid:91192572 +iyr:1921 eyr:2038 + +iyr:2027 pid:154cm +hgt:185in byr:2012 +eyr:2036 hcl:efd47d +ecl:#64f98d +cid:86 + +eyr:2029 pid:837224515 ecl:grn cid:231 hcl:#733820 iyr:2019 +hgt:159cm +byr:1977 + +pid:974518338 byr:1964 hcl:#cfa07d ecl:grn eyr:2030 +hgt:61in +iyr:2019 + +iyr:2019 +hgt:192in cid:94 +eyr:1922 +byr:1925 hcl:z ecl:utc pid:#081266 + +eyr:2027 iyr:2019 cid:328 byr:1961 hcl:#6b5442 ecl:blu hgt:177cm pid:235426720 + +byr:1959 +eyr:2025 +pid:890034625 ecl:oth +hgt:62in cid:348 hcl:#733820 + +hgt:161cm iyr:2018 pid:916160791 ecl:grn +byr:1951 hcl:#44d03a eyr:2025 + +hgt:158cm byr:1942 iyr:2012 hcl:#602927 +eyr:2026 ecl:gry pid:651231060 + +ecl:hzl cid:340 pid:086942161 byr:1986 hcl:#a97842 iyr:2018 +eyr:2028 +hgt:181cm + +ecl:blu +pid:278922687 cid:238 iyr:2018 hgt:153cm eyr:2027 +byr:1965 +hcl:#733820 + +eyr:2023 cid:208 hgt:178cm hcl:#341e13 byr:1937 pid:290981079 iyr:2010 ecl:grn + +hcl:#888785 +ecl:amb +byr:1943 pid:559804716 eyr:2026 hgt:166cm +iyr:2019 + +pid:947831563 +ecl:gry +byr:1960 hcl:#341e13 +iyr:2016 hgt:173cm eyr:2029 + +ecl:blu iyr:2016 pid:724632073 hcl:#623a2f +eyr:2028 hgt:192cm byr:1958 + +byr:2021 +eyr:2016 hcl:z iyr:1988 pid:65353943 +ecl:#bb553b +hgt:125 + +hcl:#efcc98 byr:1963 pid:290433211 eyr:2023 ecl:hzl +hgt:172cm iyr:2013 + +iyr:2015 ecl:brn +byr:2023 hcl:#18171d +pid:325330679 +hgt:190in eyr:2023 + +pid:745674970 hgt:160cm eyr:2021 byr:1925 ecl:gry hcl:#341e13 iyr:2015 +cid:297 + +eyr:2021 +pid:596411633 +byr:1947 ecl:blu cid:191 hcl:#341e13 hgt:168cm iyr:2019 + +eyr:2030 pid:#902a6b iyr:1997 hcl:11f396 hgt:188cm byr:2025 +ecl:dne + +eyr:2025 +byr:2006 +hcl:#888785 ecl:hzl hgt:187cm +iyr:2012 pid:017702828 + +byr:1988 hcl:#18171d iyr:2019 +pid:110591871 +ecl:hzl +hgt:160cm +eyr:2029 + +ecl:brn +hcl:#c0946f iyr:2030 pid:264404022 byr:1984 hgt:59cm eyr:2040 + +pid:5973803069 +hcl:#cfa07d ecl:grt +hgt:153cm eyr:2039 byr:1970 +iyr:2025 + +hcl:#fffffd +iyr:2022 byr:2026 +hgt:180 pid:82035145 eyr:2034 cid:118 ecl:utc + +hgt:186cm eyr:2026 +ecl:brn +iyr:2013 hcl:#8f4c9b pid:010260339 byr:1948 + +ecl:amb hcl:#18171d iyr:2020 pid:259501214 byr:1978 hgt:193cm +cid:263 eyr:2022 + +hgt:161cm iyr:2015 byr:2014 eyr:2003 +pid:708958872 ecl:grt +hcl:f4a430 + +hgt:170cm eyr:2021 pid:911638274 cid:110 byr:1963 ecl:blu +iyr:2015 hcl:1eda64 + +ecl:oth byr:1949 hgt:174cm hcl:#18171d eyr:2022 iyr:2019 +pid:305857230 + +ecl:gry hcl:#a97842 pid:971971076 byr:2002 iyr:2019 +hgt:188cm +eyr:2022 cid:238 + +eyr:2027 pid:221315043 iyr:2010 hgt:159cm ecl:blu byr:1998 hcl:#6b5442 + +hcl:#888785 +byr:1926 eyr:2022 pid:433807814 ecl:grn +iyr:2010 +hgt:181cm + +ecl:grn hgt:164cm byr:1951 hcl:#18171d cid:75 pid:845508281 eyr:2021 iyr:2017 + +pid:#f59bc7 +eyr:1987 hgt:191cm hcl:z byr:2024 +iyr:1985 + +hcl:#623a2f pid:497429747 +hgt:189cm +byr:1987 +eyr:2027 iyr:2012 cid:95 ecl:hzl + +byr:2000 +hgt:165cm +iyr:2017 pid:519443292 eyr:2029 cid:240 hcl:#a97842 +ecl:blu + +cid:67 pid:038299774 +eyr:2023 iyr:2015 hgt:179cm byr:1941 hcl:#18171d ecl:amb + +byr:2000 +eyr:2025 ecl:oth iyr:2017 +pid:334154607 +hcl:#fffffd hgt:173cm + +hcl:#888785 ecl:amb +cid:131 iyr:2018 byr:1996 eyr:2026 +hgt:180cm pid:709543988 + +iyr:1988 +pid:263277424 +hcl:ee8912 byr:1942 ecl:gry eyr:2040 hgt:161cm + +eyr:2020 byr:1966 iyr:2020 hgt:169cm pid:611918000 +hcl:#7d3b0c ecl:hzl + +hgt:164cm ecl:brn +iyr:2015 pid:192054454 hcl:#6b5442 byr:1987 eyr:2022 + +byr:1952 +ecl:zzz +pid:215953654 +eyr:2021 hcl:#efcc98 hgt:153cm iyr:2026 + +hgt:167cm +hcl:#b6652a pid:847614726 +eyr:2022 ecl:gry byr:1990 iyr:2015 + +hgt:185cm ecl:oth iyr:2012 +byr:1933 +cid:250 +pid:038674023 +hcl:#c0946f + +pid:613273980 hcl:#a97842 +ecl:oth byr:1924 hgt:179cm +eyr:2027 iyr:1950 + +hcl:#cfa07d byr:2018 hgt:190cm pid:64530329 +ecl:brn +iyr:2024 + +hcl:z hgt:70cm pid:18807747 +cid:284 byr:2023 +eyr:2035 ecl:#4a1501 +iyr:1954 + +iyr:2016 hgt:152cm pid:886247173 byr:1940 hcl:#c0946f eyr:2027 ecl:oth cid:150 + +hgt:152cm hcl:#48cfdf eyr:2025 cid:277 +ecl:oth pid:246230621 byr:1932 +iyr:2020 + +ecl:amb pid:871180042 +cid:117 hcl:#602927 iyr:2011 hgt:152cm +eyr:2030 byr:1999 + +eyr:2024 ecl:hzl hgt:171cm +byr:1934 pid:356408125 iyr:2019 hcl:#b6652a +cid:169 + +eyr:2023 +hcl:#7d3b0c +byr:1934 hgt:67in ecl:oth pid:191785527 +cid:117 iyr:2016 + +iyr:2029 +hcl:#602927 eyr:2022 byr:1931 ecl:oth hgt:192cm +pid:231475143 + +ecl:grn iyr:2014 cid:250 hcl:#b6652a byr:1970 pid:675238417 hgt:162cm +eyr:2026 + +ecl:brn +hcl:#623a2f eyr:2021 pid:293293433 hgt:158 byr:1977 iyr:2019 + +ecl:oth hcl:#ceb3a1 pid:013111996 eyr:2023 hgt:180cm byr:1976 cid:224 + +hgt:61cm +eyr:2027 ecl:amb pid:181cm iyr:1932 +byr:1974 +hcl:#18171d + +byr:1968 hgt:167cm +hcl:#a97842 eyr:2022 iyr:2018 ecl:hzl pid:940968694 + +iyr:1943 +hgt:96 +cid:229 +hcl:z eyr:1990 byr:2007 pid:#25aa73 +ecl:#74592e + +hgt:182cm iyr:2018 ecl:hzl eyr:2029 byr:1946 pid:602345030 +hcl:#ceb3a1 + +pid:750306036 eyr:2020 hgt:181in ecl:xry +iyr:2011 hcl:z byr:1971 cid:71 + +pid:183825747 iyr:2019 hcl:#6b5442 +byr:1974 +hgt:180cm eyr:2028 +ecl:amb + +ecl:brn cid:200 pid:576495225 +byr:1924 +hcl:#efcc98 eyr:2022 iyr:2017 hgt:185cm + +iyr:2020 hgt:167cm byr:1965 ecl:brn hcl:#888785 +eyr:2028 pid:752062953 + +byr:2026 +hcl:z +eyr:2020 +ecl:#b4ec74 pid:187cm iyr:1974 +cid:326 hgt:150cm + +byr:1996 pid:507323629 +iyr:2015 cid:347 eyr:2026 hcl:#efcc98 +ecl:amb hgt:157cm + +byr:2017 pid:456780590 hcl:#888785 eyr:1966 ecl:amb iyr:2023 cid:187 hgt:62cm + +ecl:hzl iyr:2015 hcl:#6b5442 hgt:152cm eyr:2028 byr:1982 pid:003269467 + +iyr:2017 eyr:2026 +ecl:blu cid:70 hcl:#7d3b0c +byr:1966 pid:160330947 hgt:189cm + +iyr:2010 ecl:amb +hgt:164cm eyr:2029 byr:1963 +pid:596606374 hcl:#efcc98 + +hcl:#fffffd cid:277 pid:102326370 hgt:154cm eyr:2026 iyr:2012 byr:1968 +ecl:hzl + +ecl:oth pid:477189554 hcl:#6b5442 eyr:2022 byr:1948 hgt:74in cid:181 +iyr:2016 + +hgt:169cm hcl:#d7bc93 +cid:344 ecl:oth +pid:#09c55d iyr:2017 +eyr:2030 byr:1928 + +hcl:5d02ff ecl:#ca7901 iyr:1959 byr:2006 eyr:2022 +hgt:164in +pid:#d6cdfd + +ecl:amb pid:5739190196 eyr:2021 hgt:157in hcl:#efcc98 byr:2018 iyr:2028 + +byr:1995 ecl:hzl +iyr:2017 +hcl:#a97842 pid:917039291 eyr:2026 hgt:175cm + +iyr:2017 pid:756519868 +hcl:#623a2f +eyr:2028 +hgt:158cm +ecl:amb byr:1957 + +iyr:2012 +hgt:158cm +byr:2014 pid:973021666 hcl:f04766 eyr:2035 ecl:utc + +ecl:blu +byr:1989 eyr:2022 +pid:520765501 +cid:200 hgt:193cm hcl:#a97842 iyr:2011 + +byr:1959 +ecl:blu hcl:#733820 cid:284 hgt:162cm +eyr:2022 pid:751629408 iyr:2016 + +byr:1978 cid:301 +ecl:oth hgt:67cm hcl:#888785 +eyr:2040 iyr:2025 pid:26038514 + +iyr:2020 byr:1974 hgt:163cm ecl:blu hcl:#7d3b0c eyr:2028 cid:99 + +hcl:#a97842 +hgt:186cm +ecl:grn byr:1969 pid:460360492 iyr:2011 eyr:2028 + +byr:2009 +pid:489490924 eyr:2031 +hcl:cb5351 ecl:#083a25 hgt:164cm + +iyr:2019 +hcl:3463cc ecl:amb pid:4089063078 eyr:2022 hgt:150cm +byr:2007 + +eyr:2028 hcl:#ceb3a1 +hgt:191cm iyr:2019 pid:737842199 ecl:blu cid:268 byr:1925 + +pid:868397851 +hcl:#efcc98 ecl:grn iyr:2017 eyr:2021 byr:1943 +hgt:179cm + +hcl:#623a2f byr:1987 eyr:2023 iyr:2019 hgt:152cm +pid:473569020 +ecl:grn + +pid:953968630 +hgt:175cm +byr:1971 ecl:blu hcl:#623a2f iyr:2017 cid:336 eyr:2030 + +ecl:grt hgt:74cm byr:2022 eyr:2024 pid:39114027 +iyr:2026 hcl:4b5675 + +pid:#492988 +eyr:2032 hgt:63cm iyr:2006 +ecl:#817211 byr:2019 + +pid:800367032 hcl:#341e13 +ecl:#765111 iyr:2012 byr:2006 hgt:166cm cid:291 eyr:2027 + +eyr:2021 iyr:2012 pid:876581393 ecl:amb hcl:#866857 +hgt:64in byr:1993 + +iyr:2017 byr:1996 ecl:hzl pid:038990744 +eyr:2028 +hgt:177cm +hcl:#c0946f + +hcl:#4214a6 +eyr:2021 +iyr:2019 cid:72 byr:1939 +ecl:hzl pid:783071912 hgt:187cm + +eyr:2020 hgt:158cm +pid:274060737 cid:277 +iyr:2015 hcl:#bf9b5e byr:1950 ecl:brn + +byr:1921 hcl:#7d3b0c cid:329 hgt:155cm eyr:2030 pid:718399669 iyr:2011 ecl:brn + +cid:147 eyr:2021 hgt:167cm iyr:2010 ecl:grn byr:1975 hcl:#6b5442 +pid:285479783 + +hgt:187cm +byr:2004 eyr:2025 hcl:bb331b +pid:851189955 iyr:2016 +ecl:amb + +hcl:#94007d pid:361561551 byr:1927 eyr:2026 iyr:2020 +ecl:gry hgt:158cm + +byr:1993 pid:#24c4af iyr:2023 hgt:175cm eyr:2028 +hcl:z ecl:hzl cid:308 + +byr:1985 hcl:#c0946f eyr:2034 hgt:172cm +cid:300 iyr:2013 ecl:gry pid:389455676 + +eyr:2030 iyr:2017 byr:1956 hgt:178cm +pid:864401853 hcl:#6b5442 + +pid:836559549 +iyr:2011 +hgt:167cm +ecl:amb hcl:#c0946f +eyr:2026 byr:1981 + +pid:111085991 iyr:2011 +ecl:blu eyr:2026 cid:311 +byr:1920 hgt:182cm hcl:#602927 + +ecl:oth pid:284436132 +byr:1929 cid:121 +eyr:2027 +iyr:2010 +hgt:75in +hcl:#6b5442 + +byr:1987 +hcl:#7d3b0c iyr:2018 hgt:180cm +ecl:blu eyr:2029 pid:878348021 + +hgt:183cm cid:98 +byr:1953 hcl:#866857 eyr:2021 iyr:2012 pid:158898193 + +eyr:2030 pid:039638764 ecl:hzl hgt:190cm byr:1926 +cid:294 hcl:#b6652a iyr:2017 \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java b/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java new file mode 100644 index 00000000..21fc3126 --- /dev/null +++ b/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java @@ -0,0 +1,58 @@ +package org.haffson.adventofcode.days.day04; + +import org.haffson.adventofcode.days.day03.Day03; +import org.junit.Assert; +import org.junit.Test; + +import java.util.HashMap; + +public class Day04Test { + + // test output of method + @Test + public void test_getRawDataArray1() { + Day04 day04 = new Day04(); + String expected = "ecl:gry pid:860033327 eyr:2020 hcl:#fffffd\n" + + "byr:1937 iyr:2017 cid:147 hgt:183cm"; + String actual = day04.getRawData(day04.testResource)[0]; + Assert.assertEquals(actual, expected); + } + + // test length of output of method + @Test + public void test_getRawDataArray2() { + Day04 day04 = new Day04(); + Integer expected = 4; + Integer actual = day04.getRawData(day04.testResource).length; + Assert.assertEquals(actual, expected); + } + + + // test number of valid passports of test data + @Test + public void test_getNumberValidPassports() { + Day04 day04 = new Day04(); + int expected = 2; + int actual = day04.getNumberValidPassports(day04.getRawData(day04.testResource)); + Assert.assertEquals(actual, expected); + } + + // test number of valid passports of input data + @Test + public void test_getNumberValidPassports1() { + Day04 day04 = new Day04(); + int expected = 250; + int actual = day04.getNumberValidPassports(day04.getRawData(day04.resource)); + Assert.assertEquals(actual, expected); + } + + // puzzle 2 test number of valid passports of input data (stricter rules) + @Test + public void test_getRestrictedNumberValidPassports() { + Day04 day04 = new Day04(); + int expected = 158; + int actual = day04.getRestrictedNumberValidPassports(day04.getRawData(day04.resource)); + Assert.assertEquals(actual, expected); + } + +} From 6014d163875478880f063b7c2b48bce38d7fdd99 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 25 Aug 2021 12:20:39 +0200 Subject: [PATCH 09/36] Day04: I changed some modifiers. --- .../java/org/haffson/adventofcode/days/day04/Day04.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java index 6c312f38..86b3bd0a 100644 --- a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java +++ b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java @@ -23,7 +23,7 @@ public class Day04 implements Days { private final HashMap problemStatus; // Read content of test file (puzzle part 1) - File testResource; + public File testResource; { try { testResource = new ClassPathResource( @@ -34,7 +34,7 @@ public class Day04 implements Days { } // Read content of test file (puzzle part 2) - File testResource2; + public File testResource2; { try { testResource2 = new ClassPathResource( @@ -45,7 +45,7 @@ public class Day04 implements Days { } // Read content of input file (real data) - File resource; + public File resource; { try { resource = new ClassPathResource( From 5059941363ecc3671945682b261025158a315bb9 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 25 Aug 2021 13:09:02 +0200 Subject: [PATCH 10/36] I added the code to puzzle day 2 (both parts) in Day02.java. Additionally, I wrote several test scripts (Day02Test.java). --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 0583b84c..df0f07cf 100644 --- a/build.gradle +++ b/build.gradle @@ -74,6 +74,7 @@ dependencies { implementation 'org.postgresql:postgresql:42.2.1' implementation 'org.liquibase:liquibase-core' implementation 'com.google.code.findbugs:jsr305:1.3.9' + implementation 'org.apache.commons:commons-lang3:3.12.0' asciidoctor 'org.springframework.restdocs:spring-restdocs-asciidoctor' testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc") testImplementation 'org.springframework.boot:spring-boot-starter-test' From 734c4fc8b1a917dadeb6858a6608a615fc83cbc2 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 25 Aug 2021 13:23:26 +0200 Subject: [PATCH 11/36] Adding data input to resources folder. --- .../controller/AdventOfCodeController.java | 17 +++++++++++++++++ .../haffson/adventofcode/days/day01/Day01.java | 3 +-- .../haffson/adventofcode/days/day02/Day02.java | 2 +- .../haffson/adventofcode/days/day03/Day03.java | 2 +- .../resources/data/{ => day01}/input_day01.txt | 0 .../resources/data/{ => day02}/input_day02.txt | 0 .../resources/data/{ => day03}/input_day03.txt | 0 7 files changed, 20 insertions(+), 4 deletions(-) rename src/main/resources/data/{ => day01}/input_day01.txt (100%) rename src/main/resources/data/{ => day02}/input_day02.txt (100%) rename src/main/resources/data/{ => day03}/input_day03.txt (100%) diff --git a/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java b/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java index 4ce2461f..c6f74af0 100644 --- a/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java +++ b/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java @@ -81,4 +81,21 @@ public Resources daysImplemented() { linkTo(methodOn(AdventOfCodeController.class).daysImplemented()).withSelfRel() ); } + + @GetMapping("/test") + public String test () { + + logger.info("A list of implemented days has been requested."); + + return "Hallo"; + } + + @GetMapping("/test11") + public String test11 () { + + logger.info("A list of implemented days has been requested."); + + return "Hallo11"; + } + } \ No newline at end of file diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index 604ebf6e..eb124953 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -11,7 +11,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; -import java.util.stream.Collectors; /** * Implementation for Day 1: Chronal Calibration. @@ -73,7 +72,7 @@ public String secondPart() { private int calculateNumber1() throws FileNotFoundException { // read data file - Scanner s = new Scanner(new File("/Users/jenni/dedica/AdventOfCode/Jenni/Day01/src/input.txt")); + Scanner s = new Scanner(new File("/Users/jenni/dedica/AdventOfCode/AdventOfCode-Java-learning-project/src/main/resources/data/day01/input_day01.txt")); ArrayList data = new ArrayList(); while (s.hasNext()) { diff --git a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java index 086e125f..263ba9bd 100644 --- a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java +++ b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java @@ -25,7 +25,7 @@ public class Day02 implements Days { { try { resource = new ClassPathResource( - "data/input_day02.txt").getFile(); + "data/day02/input_day02.txt").getFile(); } catch (IOException e) { System.out.println("Raw Data (Input) file not found: " + e.getMessage()); } diff --git a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java index 42976182..6572468c 100644 --- a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java +++ b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java @@ -25,7 +25,7 @@ public class Day03 implements Days { { try { resource = new ClassPathResource( - "data/input_day03.txt").getFile(); + "data/day03/input_day03.txt").getFile(); } catch (IOException e) { System.out.println("Raw Data (Input) file not found: " + e.getMessage()); } diff --git a/src/main/resources/data/input_day01.txt b/src/main/resources/data/day01/input_day01.txt similarity index 100% rename from src/main/resources/data/input_day01.txt rename to src/main/resources/data/day01/input_day01.txt diff --git a/src/main/resources/data/input_day02.txt b/src/main/resources/data/day02/input_day02.txt similarity index 100% rename from src/main/resources/data/input_day02.txt rename to src/main/resources/data/day02/input_day02.txt diff --git a/src/main/resources/data/input_day03.txt b/src/main/resources/data/day03/input_day03.txt similarity index 100% rename from src/main/resources/data/input_day03.txt rename to src/main/resources/data/day03/input_day03.txt From 02cb28cf1cd86ce7fd41fea9f2f67637be97e9a5 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 25 Aug 2021 13:37:59 +0200 Subject: [PATCH 12/36] Delete "filereader" --- .../java/org/haffson/adventofcode/days/day01/Day01.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index eb124953..da1af6ae 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -21,13 +21,8 @@ public class Day01 implements Days { /** The puzzle status {@code HashMap} */ private final HashMap problemStatus; - /** - * Causes the input file to be parsed into the frequencies array ({@code frequencies}). - * - * @param fileReaders {@code @Autowired} fileReader //TODO: inject what you need - */ @Autowired - Day01(FileReaders fileReaders) { + Day01() { this.problemStatus = new HashMap<>(); this.problemStatus.put("1", ProblemStatusEnum.SOLVED); this.problemStatus.put("2", ProblemStatusEnum.SOLVED); From 99e7d62b4dd2dc59bc31dc263a37a6968bbd76ef Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 25 Aug 2021 13:41:18 +0200 Subject: [PATCH 13/36] Some changes for heroku --- src/main/java/org/haffson/adventofcode/days/day01/Day01.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index da1af6ae..f57e4722 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -2,7 +2,6 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; -import org.haffson.adventofcode.utils.FileReaders; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -95,7 +94,7 @@ private int calculateNumber1() throws FileNotFoundException { private int calculateNumber2() throws FileNotFoundException { // read data file - Scanner s = new Scanner(new File("/Users/jenni/dedica/AdventOfCode/Jenni/Day01/src/input.txt")); + Scanner s = new Scanner(new File("/Users/jenni/dedica/AdventOfCode/AdventOfCode-Java-learning-project/src/main/resources/data/day01/input_day01.txt")); ArrayList data = new ArrayList(); while (s.hasNext()) { From 1a9be500eda85fda4414175b239b1fb21c3f3934 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 25 Aug 2021 13:43:11 +0200 Subject: [PATCH 14/36] Some changes for heroku --- .../org/haffson/adventofcode/days/day01/Day01Test.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java index 6321bdf8..be7ee1b0 100644 --- a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java @@ -1,21 +1,17 @@ package org.haffson.adventofcode.days.day01; -import org.haffson.adventofcode.utils.FileReaders; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) public class Day01Test { - @MockBean - private FileReaders fileReaders; @Test public void testGetDay() { - Day01 day01 = new Day01(fileReaders); + Day01 day01 = new Day01(); int expectedResult = 1; int actualResult = day01.getDay(); Assert.assertEquals(expectedResult, actualResult); @@ -24,7 +20,7 @@ public void testGetDay() { @Test public void test_firstPart_returnsExpectedResult() { //arrange - Day01 day01 = new Day01(fileReaders); + Day01 day01 = new Day01(); String expectedResult = "Product 1: " + 326211; From 87d0b79f484b37e6f5cfeb49e7cfeaeab892ec1f Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 25 Aug 2021 13:59:59 +0200 Subject: [PATCH 15/36] Heroku stuff --- .../adventofcode/days/day01/Day01.java | 67 ++++++++++++++----- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index f57e4722..2fd92f27 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -3,12 +3,15 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Component; import java.io.File; import java.io.FileNotFoundException; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Scanner; /** @@ -20,6 +23,19 @@ public class Day01 implements Days { /** The puzzle status {@code HashMap} */ private final HashMap problemStatus; + // Read content of input file (real data) + public File resource; + { + try { + resource = new ClassPathResource( + "data/day01/input_day01.txt").getFile(); + } catch (IOException e) { + System.out.println("Raw Data (Input) file not found: " + e.getMessage()); + } + } + + + @Autowired Day01() { this.problemStatus = new HashMap<>(); @@ -39,11 +55,7 @@ public HashMap getProblemStatus() { @Override public String firstPart() { - try { - return "Product 1: " + calculateNumber1(); - } catch (FileNotFoundException e) { - return "error"; - } + return "Product 1: " + calculateNumber1(getRawData(resource)); } @Override @@ -63,23 +75,48 @@ public String secondPart() { */ - private int calculateNumber1() throws FileNotFoundException { + // read raw data and transform it to String[] + public Integer[] getRawData(File resource) { + List rawData = new ArrayList<>(); + try (Scanner s = new Scanner(new File(String.valueOf(resource.toPath()))).useDelimiter("\n")){ + while (s.hasNext()) { + rawData.add(s.next()); + } + } catch (FileNotFoundException e) { + System.out.println("File not found!" + e.getMessage()); + } + Integer[] rawData_array = new Integer[rawData.size()]; + for(int i = 0; i < rawData.size(); i++) rawData_array[i] = Integer.parseInt(rawData.get(i)); - // read data file - Scanner s = new Scanner(new File("/Users/jenni/dedica/AdventOfCode/AdventOfCode-Java-learning-project/src/main/resources/data/day01/input_day01.txt")); - ArrayList data = new ArrayList(); + return rawData_array; + } - while (s.hasNext()) { - int i = Integer.parseInt(s.next()); + + + private int calculateNumber1(Integer[] rawData_array){ + +// // read data file +// Scanner s = new Scanner(new File("/Users/jenni/dedica/AdventOfCode/AdventOfCode-Java-learning-project/src/main/resources/data/day01/input_day01.txt")); +// ArrayList data = new ArrayList(); +// +// while (s.hasNext()) { +// int i = Integer.parseInt(s.next()); +// data.add(i); +// } +// s.close(); + + + List data = new ArrayList<>(rawData_array.length); + for (int i : rawData_array) + { data.add(i); } - s.close(); // create arraylist that is subtracted by 2020 - ArrayList data2 = new ArrayList(); + ArrayList data2 = new ArrayList<>(); - for (int j = 0; j < data.size(); j++) { - data2.add(2020 - data.get(j)); + for (Integer datum : data) { + data2.add(2020 - datum); } // check for intersection of two arraylists From 6a42e54b49f8ef4ff5e2e63886d9dea76ff471a7 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 25 Aug 2021 16:05:35 +0200 Subject: [PATCH 16/36] heroku stuff --- .../org/haffson/adventofcode/days/day03/Day03.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java index 6572468c..bdbace2b 100644 --- a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java +++ b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java @@ -2,6 +2,8 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.*; import org.springframework.stereotype.Component; @@ -20,6 +22,10 @@ public class Day03 implements Days { /** The puzzle status {@code HashMap} */ private final HashMap problemStatus; + // Adds a logger + private static final Logger logger = LoggerFactory.getLogger(Day03.class); + + // Read content of input file File resource; { @@ -27,10 +33,12 @@ public class Day03 implements Days { resource = new ClassPathResource( "data/day03/input_day03.txt").getFile(); } catch (IOException e) { - System.out.println("Raw Data (Input) file not found: " + e.getMessage()); + logger.error("Raw Data (Input) file not found: " + e.getMessage()); } } + + private final String[] data = getRawDataAsArray(resource); From 140bae32750b4ae377764fe2081d0170cf8b180c Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 25 Aug 2021 16:15:06 +0200 Subject: [PATCH 17/36] add logging --- .../adventofcode/days/day01/Day01.java | 21 +++++++------------ .../adventofcode/days/day02/Day02.java | 11 ++++++++-- .../adventofcode/days/day03/Day03.java | 2 +- .../adventofcode/days/day04/Day04.java | 13 ++++++++---- 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index 2fd92f27..caa8344b 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -2,6 +2,8 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Component; @@ -23,6 +25,10 @@ public class Day01 implements Days { /** The puzzle status {@code HashMap} */ private final HashMap problemStatus; + // Adds a logger + private static final Logger logger = LoggerFactory.getLogger(Day01.class); + + // Read content of input file (real data) public File resource; { @@ -30,7 +36,7 @@ public class Day01 implements Days { resource = new ClassPathResource( "data/day01/input_day01.txt").getFile(); } catch (IOException e) { - System.out.println("Raw Data (Input) file not found: " + e.getMessage()); + logger.error("Raw Data (Input) file not found: " + e.getMessage()); } } @@ -83,7 +89,7 @@ public Integer[] getRawData(File resource) { rawData.add(s.next()); } } catch (FileNotFoundException e) { - System.out.println("File not found!" + e.getMessage()); + logger.error("File not found!" + e.getMessage()); } Integer[] rawData_array = new Integer[rawData.size()]; for(int i = 0; i < rawData.size(); i++) rawData_array[i] = Integer.parseInt(rawData.get(i)); @@ -95,17 +101,6 @@ public Integer[] getRawData(File resource) { private int calculateNumber1(Integer[] rawData_array){ -// // read data file -// Scanner s = new Scanner(new File("/Users/jenni/dedica/AdventOfCode/AdventOfCode-Java-learning-project/src/main/resources/data/day01/input_day01.txt")); -// ArrayList data = new ArrayList(); -// -// while (s.hasNext()) { -// int i = Integer.parseInt(s.next()); -// data.add(i); -// } -// s.close(); - - List data = new ArrayList<>(rawData_array.length); for (int i : rawData_array) { diff --git a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java index 263ba9bd..a3c867ef 100644 --- a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java +++ b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java @@ -3,6 +3,8 @@ import org.apache.commons.lang3.StringUtils; import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.lang.NonNull; @@ -20,6 +22,9 @@ @Component public class Day02 implements Days { + // Adds a logger + private static final Logger logger = LoggerFactory.getLogger(Day02.class); + // Read content of input file File resource; { @@ -27,7 +32,7 @@ public class Day02 implements Days { resource = new ClassPathResource( "data/day02/input_day02.txt").getFile(); } catch (IOException e) { - System.out.println("Raw Data (Input) file not found: " + e.getMessage()); + logger.error("Raw Data (Input) file not found: " + e.getMessage()); } } @@ -73,6 +78,8 @@ public String secondPart() { } + + /** * Method to read raw data from file into list * @return raw data as list @@ -85,7 +92,7 @@ public List getRawDataAsList(File file) { rawData.add(s.next()); } } catch (FileNotFoundException e) { - System.out.println("File not found!"); + logger.error("File not found!"); } return rawData; } diff --git a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java index bdbace2b..3504272d 100644 --- a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java +++ b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java @@ -92,7 +92,7 @@ public String[] getRawDataAsArray(File resource) { rawData.add(s.next()); } } catch (FileNotFoundException e) { - System.out.println("File not found!" + e.getMessage()); + logger.error("File not found!" + e.getMessage()); } String[] rawData_array = new String[rawData.size()]; for(int i = 0; i < rawData.size(); i++) rawData_array[i] = rawData.get(i); diff --git a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java index 86b3bd0a..8c3bc9d4 100644 --- a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java +++ b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java @@ -2,6 +2,8 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.*; import org.springframework.stereotype.Component; @@ -22,6 +24,9 @@ public class Day04 implements Days { */ private final HashMap problemStatus; + // Adds a logger + private static final Logger logger = LoggerFactory.getLogger(Day04.class); + // Read content of test file (puzzle part 1) public File testResource; { @@ -29,7 +34,7 @@ public class Day04 implements Days { testResource = new ClassPathResource( "data/day04/day04_testdata.txt").getFile(); } catch (IOException e) { - System.out.println("Raw Data (Input) file not found: " + e.getMessage()); + logger.error("Raw Data (Input) file not found: " + e.getMessage()); } } @@ -40,7 +45,7 @@ public class Day04 implements Days { testResource2 = new ClassPathResource( "data/day04/day04_testdata2.txt").getFile(); } catch (IOException e) { - System.out.println("Raw Data (Input) file not found: " + e.getMessage()); + logger.error("Raw Data (Input) file not found: " + e.getMessage()); } } @@ -51,7 +56,7 @@ public class Day04 implements Days { resource = new ClassPathResource( "data/day04/input_day04.txt").getFile(); } catch (IOException e) { - System.out.println("Raw Data (Input) file not found: " + e.getMessage()); + logger.error("Raw Data (Input) file not found: " + e.getMessage()); } } @@ -94,7 +99,7 @@ public String[] getRawData(File resource) { rawData.add(s.next()); } } catch (FileNotFoundException e) { - System.out.println("File not found!" + e.getMessage()); + logger.error("File not found!" + e.getMessage()); } String[] rawData_array = new String[rawData.size()]; for(int i = 0; i < rawData.size(); i++) rawData_array[i] = rawData.get(i); From 88a65d2ebc786dbed0c31514d6bb47e8262a494e Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 25 Aug 2021 16:23:18 +0200 Subject: [PATCH 18/36] add logging --- src/main/java/org/haffson/adventofcode/days/day01/Day01.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index caa8344b..315d494f 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -119,7 +119,7 @@ private int calculateNumber1(Integer[] rawData_array){ data.retainAll(data2); // multiplication of "intersected" values is the puzzle's answer! - System.out.println("The answer of Puzzle Day 1.1 is: " + data.get(0) * data.get(1)); +// System.out.println("The answer of Puzzle Day 1.1 is: " + data.get(0) * data.get(1)); return data.get(0) * data.get(1); } @@ -154,7 +154,7 @@ private int calculateNumber2() throws FileNotFoundException { data2.retainAll(data3); // multiplication of "intersected" values is the puzzle's answer! - System.out.println("The answer of Puzzle Day 1.2 is: " + (2020-data2.get(0))*(2020-data2.get(1))*(2020-data2.get(2))); +// System.out.println("The answer of Puzzle Day 1.2 is: " + (2020-data2.get(0))*(2020-data2.get(1))*(2020-data2.get(2))); return (2020-data2.get(0))*(2020-data2.get(1))*(2020-data2.get(2)); From 4491ab22b0cd3f3d1bdd292058c58a18c8b5a061 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Fri, 27 Aug 2021 18:42:02 +0200 Subject: [PATCH 19/36] Heroku: changed method to read in data: now via "getClass().getResourceAsStream("/data/...txt")"" --- .../adventofcode/days/day01/Day01.java | 60 ++++++----- .../adventofcode/days/day02/Day02.java | 55 ++++++----- .../adventofcode/days/day03/Day03.java | 44 ++++++--- .../adventofcode/days/day04/Day04.java | 99 +++++++++++-------- .../adventofcode/days/day02/Day02Test.java | 1 + .../adventofcode/days/day03/Day03Test.java | 2 + 6 files changed, 154 insertions(+), 107 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index 315d494f..5d343c67 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -5,16 +5,12 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Component; import java.io.File; import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Scanner; +import java.io.InputStream; +import java.util.*; /** * Implementation for Day 1: Chronal Calibration. @@ -29,16 +25,19 @@ public class Day01 implements Days { private static final Logger logger = LoggerFactory.getLogger(Day01.class); - // Read content of input file (real data) - public File resource; - { - try { - resource = new ClassPathResource( - "data/day01/input_day01.txt").getFile(); - } catch (IOException e) { - logger.error("Raw Data (Input) file not found: " + e.getMessage()); - } - } + // Read content of input file + public InputStream resource = getClass().getResourceAsStream("/data/day01/input_day01.txt"); + +// // Read content of input file (real data) +// public File resource; +// { +// try { +// resource = new ClassPathResource( +// "data/day01/input_day01.txt").getFile(); +// } catch (IOException e) { +// logger.error("Raw Data (Input) file not found: " + e.getMessage()); +// } +// } @@ -82,15 +81,25 @@ public String secondPart() { // read raw data and transform it to String[] - public Integer[] getRawData(File resource) { - List rawData = new ArrayList<>(); - try (Scanner s = new Scanner(new File(String.valueOf(resource.toPath()))).useDelimiter("\n")){ - while (s.hasNext()) { - rawData.add(s.next()); + public Integer[] getRawData(InputStream resource) { +// try (Scanner s = new Scanner(new File(String.valueOf(resource.toPath()))).useDelimiter("\n")){ +// while (s.hasNext()) { +// rawData.add(s.next()); +// } +// } catch (FileNotFoundException e) { +// logger.error("File not found!" + e.getMessage()); +// } + + ArrayList rawData; + try (Scanner scan = new Scanner(resource)) { + rawData = new ArrayList<>(); + + while (scan.hasNextLine()) { + rawData.add(scan.nextLine()); } - } catch (FileNotFoundException e) { - logger.error("File not found!" + e.getMessage()); } + + Integer[] rawData_array = new Integer[rawData.size()]; for(int i = 0; i < rawData.size(); i++) rawData_array[i] = Integer.parseInt(rawData.get(i)); @@ -102,10 +111,7 @@ public Integer[] getRawData(File resource) { private int calculateNumber1(Integer[] rawData_array){ List data = new ArrayList<>(rawData_array.length); - for (int i : rawData_array) - { - data.add(i); - } + data.addAll(Arrays.asList(rawData_array)); // create arraylist that is subtracted by 2020 ArrayList data2 = new ArrayList<>(); diff --git a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java index a3c867ef..f14b1536 100644 --- a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java +++ b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java @@ -3,16 +3,12 @@ import org.apache.commons.lang3.StringUtils; import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; -import java.io.File; import java.io.FileNotFoundException; -import java.io.IOException; +import java.io.InputStream; import java.util.*; @@ -22,21 +18,23 @@ @Component public class Day02 implements Days { - // Adds a logger - private static final Logger logger = LoggerFactory.getLogger(Day02.class); +// // Adds a logger +// private static final Logger logger = LoggerFactory.getLogger(Day02.class); // Read content of input file - File resource; - { - try { - resource = new ClassPathResource( - "data/day02/input_day02.txt").getFile(); - } catch (IOException e) { - logger.error("Raw Data (Input) file not found: " + e.getMessage()); - } - } + public InputStream resource = getClass().getResourceAsStream("/data/day02/input_day02.txt"); + + + //File resource; + // { + // try { + // resource = new ClassPathResource( + // "data/day02/input_day02.txt").getFile(); + // } catch (IOException e) { + // logger.error("Raw Data (Input) file not found: " + e.getMessage()); + // } + // } -// private final String path = "/Users/jenni/dedica/AdventOfCode/Jenni/Day02/src/input.txt"; private List rawData = getRawDataAsList(resource); /** The puzzle status {@code HashMap} */ @@ -84,16 +82,25 @@ public String secondPart() { * Method to read raw data from file into list * @return raw data as list */ - public List getRawDataAsList(File file) { - List rawData = new ArrayList<>(); + public List getRawDataAsList(InputStream resource) { + + ArrayList rawData; + try (Scanner scan = new Scanner(resource)) { + rawData = new ArrayList<>(); - try (Scanner s = new Scanner(new File(String.valueOf(file.toPath()))).useDelimiter("\n")){ - while (s.hasNext()) { - rawData.add(s.next()); + while (scan.hasNextLine()) { + rawData.add(scan.nextLine()); } - } catch (FileNotFoundException e) { - logger.error("File not found!"); } +// List rawData = new ArrayList<>(); +// +// try (Scanner s = new Scanner(resource){ +// while (s.hasNext()) { +// rawData.add(s.next()); +// } +// } catch (FileNotFoundException e) { +// logger.error("File not found!"); +// } return rawData; } diff --git a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java index 3504272d..5038f65d 100644 --- a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java +++ b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java @@ -7,10 +7,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.*; import org.springframework.stereotype.Component; +import org.springframework.util.StreamUtils; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; import java.util.*; /** @@ -27,16 +29,17 @@ public class Day03 implements Days { // Read content of input file - File resource; - { - try { - resource = new ClassPathResource( - "data/day03/input_day03.txt").getFile(); - } catch (IOException e) { - logger.error("Raw Data (Input) file not found: " + e.getMessage()); - } - } + public InputStream resource = getClass().getResourceAsStream("/data/day03/input_day03.txt"); +// File resource; +// { +// try { +// resource = new ClassPathResource( +// "data/day03/input_day03.txt").getFile(); +// } catch (IOException e) { +// logger.error("Raw Data (Input) file not found: " + e.getMessage()); +// } +// } private final String[] data = getRawDataAsArray(resource); @@ -85,15 +88,24 @@ public String[] getTestData() { return test.split("\\n"); } - public String[] getRawDataAsArray(File resource) { - List rawData = new ArrayList<>(); - try (Scanner s = new Scanner(new File(String.valueOf(resource.toPath()))).useDelimiter("\n")){ - while (s.hasNext()) { - rawData.add(s.next()); + public String[] getRawDataAsArray(InputStream resource) { +// List rawData = new ArrayList<>(); +// try (Scanner s = new Scanner(new File(String.valueOf(resource.toPath()))).useDelimiter("\n")){ +// while (s.hasNext()) { +// rawData.add(s.next()); +// } +// } catch (FileNotFoundException e) { +// logger.error("File not found!" + e.getMessage()); +// } + ArrayList rawData; + try (Scanner scan = new Scanner(resource)) { + rawData = new ArrayList<>(); + + while (scan.hasNextLine()) { + rawData.add(scan.nextLine()); } - } catch (FileNotFoundException e) { - logger.error("File not found!" + e.getMessage()); } + String[] rawData_array = new String[rawData.size()]; for(int i = 0; i < rawData.size(); i++) rawData_array[i] = rawData.get(i); diff --git a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java index 8c3bc9d4..ad6af7c8 100644 --- a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java +++ b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java @@ -5,12 +5,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.*; import org.springframework.stereotype.Component; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; +import java.io.InputStream; import java.util.*; /** @@ -24,41 +21,50 @@ public class Day04 implements Days { */ private final HashMap problemStatus; - // Adds a logger - private static final Logger logger = LoggerFactory.getLogger(Day04.class); +// // Adds a logger +// private static final Logger logger = LoggerFactory.getLogger(Day04.class); // Read content of test file (puzzle part 1) - public File testResource; - { - try { - testResource = new ClassPathResource( - "data/day04/day04_testdata.txt").getFile(); - } catch (IOException e) { - logger.error("Raw Data (Input) file not found: " + e.getMessage()); - } - } + + public InputStream testResource = getClass().getResourceAsStream("/data/day04/day04_testdata.txt"); + + +// public File testResource; +// { +// try { +// testResource = new ClassPathResource( +// "data/day04/day04_testdata.txt").getFile(); +// } catch (IOException e) { +// logger.error("Raw Data (Input) file not found: " + e.getMessage()); +// } +// } // Read content of test file (puzzle part 2) - public File testResource2; - { - try { - testResource2 = new ClassPathResource( - "data/day04/day04_testdata2.txt").getFile(); - } catch (IOException e) { - logger.error("Raw Data (Input) file not found: " + e.getMessage()); - } - } + + public InputStream testResource2 = getClass().getResourceAsStream("/data/day04/day04_testdata2.txt"); + +// public File testResource2; +// { +// try { +// testResource2 = new ClassPathResource( +// "data/day04/day04_testdata2.txt").getFile(); +// } catch (IOException e) { +// logger.error("Raw Data (Input) file not found: " + e.getMessage()); +// } +// } // Read content of input file (real data) - public File resource; - { - try { - resource = new ClassPathResource( - "data/day04/input_day04.txt").getFile(); - } catch (IOException e) { - logger.error("Raw Data (Input) file not found: " + e.getMessage()); - } - } + public InputStream resource = getClass().getResourceAsStream("/data/day04/input_day04.txt"); + +// public File resource; +// { +// try { +// resource = new ClassPathResource( +// "data/day04/input_day04.txt").getFile(); +// } catch (IOException e) { +// logger.error("Raw Data (Input) file not found: " + e.getMessage()); +// } +// } @Autowired @@ -92,21 +98,34 @@ public String secondPart() { } // read raw data and transform it to String[] - public String[] getRawData(File resource) { - List rawData = new ArrayList<>(); - try (Scanner s = new Scanner(new File(String.valueOf(resource.toPath()))).useDelimiter("\n\n")){ - while (s.hasNext()) { - rawData.add(s.next()); + public String[] getRawData(InputStream resource) { +// List rawData = new ArrayList<>(); +// try (Scanner s = new Scanner(new File(String.valueOf(resource.toPath()))).useDelimiter("\n\n")){ +// while (s.hasNext()) { +// rawData.add(s.next()); +// } +// } catch (FileNotFoundException e) { +// logger.error("File not found!" + e.getMessage()); +// } + + ArrayList rawData; + try (Scanner scan = new Scanner(resource)) { + rawData = new ArrayList<>(); + + while (scan.hasNext()) { + scan.useDelimiter("\n\n"); + rawData.add(scan.next()); } - } catch (FileNotFoundException e) { - logger.error("File not found!" + e.getMessage()); } + String[] rawData_array = new String[rawData.size()]; for(int i = 0; i < rawData.size(); i++) rawData_array[i] = rawData.get(i); return rawData_array; } + + // answer to day04.1 public int getNumberValidPassports(String[] rawData_array){ int numberOfValidPassports = 0; diff --git a/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java b/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java index af55544f..496de65d 100644 --- a/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java @@ -95,4 +95,5 @@ public void test_secondPart_puzzleData_returnsExpectedResult() { Assert.assertEquals(expectedResult, actualResult); } + } diff --git a/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java b/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java index e895250d..1db58171 100644 --- a/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java @@ -68,4 +68,6 @@ public void testGetProduct_realData(){ Assert.assertEquals(actualTrees, expectedTrees); } + + } From 53565655040a9400dec02a237ef8f8602f167cf0 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Sun, 29 Aug 2021 19:32:57 +0200 Subject: [PATCH 20/36] heroku --- target/snippets/daysImplemented/http-response.adoc | 2 +- .../getResultForASpecificDayAndPuzzlePart/http-response.adoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/target/snippets/daysImplemented/http-response.adoc b/target/snippets/daysImplemented/http-response.adoc index 5846f875..467afa92 100644 --- a/target/snippets/daysImplemented/http-response.adoc +++ b/target/snippets/daysImplemented/http-response.adoc @@ -1,8 +1,8 @@ [source,http,options="nowrap"] ---- HTTP/1.1 200 OK -Content-Length: 176 Content-Type: application/json;charset=UTF-8 +Content-Length: 167 { "_embedded" : { diff --git a/target/snippets/getResultForASpecificDayAndPuzzlePart/http-response.adoc b/target/snippets/getResultForASpecificDayAndPuzzlePart/http-response.adoc index dc0f182a..aa5412d6 100644 --- a/target/snippets/getResultForASpecificDayAndPuzzlePart/http-response.adoc +++ b/target/snippets/getResultForASpecificDayAndPuzzlePart/http-response.adoc @@ -1,7 +1,7 @@ [source,http,options="nowrap"] ---- HTTP/1.1 200 OK -Content-Length: 160 +Content-Length: 153 Content-Type: application/json;charset=UTF-8 { From 84f551052c2811ff06203583c0ff738106bc279c Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Thu, 2 Sep 2021 13:52:35 +0200 Subject: [PATCH 21/36] Changed parameter day and part in AdventOfCodeController to Integers (formerly: Strings) --- .../controller/AdventOfCodeController.java | 3 +- .../org/haffson/adventofcode/days/Days.java | 4 +-- .../adventofcode/days/day01/Day01.java | 34 +++++++++++++------ .../adventofcode/days/day02/Day02.java | 8 ++--- .../adventofcode/days/day03/Day03.java | 13 +++---- .../adventofcode/days/day04/Day04.java | 12 +++---- .../service/AdventOfCodeService.java | 15 +++++--- .../AdventOfCodeControllerTest.java | 4 +-- .../service/AdventOfCodeServiceTest.java | 14 ++++---- 9 files changed, 61 insertions(+), 46 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java b/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java index c6f74af0..a3ca292e 100644 --- a/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java +++ b/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java @@ -53,7 +53,8 @@ public AdventOfCodeController(AdventOfCodeService adventOfCodeService) { * @return a HATEOAS-{@code Resource<>} with the corresponding solution */ @GetMapping - public Resource getResultForASpecificDayAndPuzzlePart(@RequestParam(value = "day", defaultValue = "") String day, @RequestParam(value = "part", defaultValue = "") String part) { + public Resource getResultForASpecificDayAndPuzzlePart(@RequestParam(value = "day") Integer day, + @RequestParam(value = "part") Integer part) { logger.info("The results for day " + day + ", part " + part + " have been requested."); diff --git a/src/main/java/org/haffson/adventofcode/days/Days.java b/src/main/java/org/haffson/adventofcode/days/Days.java index 28948aa5..dea186cf 100644 --- a/src/main/java/org/haffson/adventofcode/days/Days.java +++ b/src/main/java/org/haffson/adventofcode/days/Days.java @@ -2,7 +2,7 @@ import org.haffson.adventofcode.ProblemStatusEnum; -import java.util.HashMap; +import java.util.Map; /** * An interface for the individual puzzles, @@ -38,5 +38,5 @@ public interface Days { * * @return the status of each part */ - HashMap getProblemStatus(); + Map getProblemStatus(); } diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index 5d343c67..c3a57bba 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -4,7 +4,6 @@ import org.haffson.adventofcode.days.Days; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.File; @@ -18,14 +17,19 @@ @Component public class Day01 implements Days { +// // initialization: +// private final InputStream resource; +// private Scanner scan; + /** The puzzle status {@code HashMap} */ - private final HashMap problemStatus; + private final Map problemStatus; // Adds a logger private static final Logger logger = LoggerFactory.getLogger(Day01.class); // Read content of input file + // create constructor? public InputStream resource = getClass().getResourceAsStream("/data/day01/input_day01.txt"); // // Read content of input file (real data) @@ -41,11 +45,14 @@ public class Day01 implements Days { - @Autowired +// @Autowired Day01() { +// resource = getClass().getResourceAsStream("/data/day01/input_day01.txt"); +// if (resource==null) throw new RuntimeException("Could not access data file"); +// Scanner scan = new Scanner(resource); this.problemStatus = new HashMap<>(); - this.problemStatus.put("1", ProblemStatusEnum.SOLVED); - this.problemStatus.put("2", ProblemStatusEnum.SOLVED); + this.problemStatus.put(1, ProblemStatusEnum.SOLVED); + this.problemStatus.put(2, ProblemStatusEnum.SOLVED); } @Override @@ -54,7 +61,7 @@ public int getDay() { } @Override - public HashMap getProblemStatus() { + public Map getProblemStatus() { return problemStatus; } @@ -99,6 +106,13 @@ public Integer[] getRawData(InputStream resource) { } } +// ArrayList rawData; +// rawData = new ArrayList<>(); +// +// while (scan.hasNextLine()) { +// rawData.add(scan.nextLine()); +// } + Integer[] rawData_array = new Integer[rawData.size()]; for(int i = 0; i < rawData.size(); i++) rawData_array[i] = Integer.parseInt(rawData.get(i)); @@ -144,15 +158,15 @@ private int calculateNumber2() throws FileNotFoundException { // create arraylist that is subtracted by 2020 ArrayList data2 = new ArrayList(); - for (int j = 0; j < data.size(); j++) { - data2.add(2020 - data.get(j)); + for (Integer integer : data) { + data2.add(2020 - integer); } ArrayList data3 = new ArrayList(); for (int k=0; k rawData = getRawDataAsList(resource); /** The puzzle status {@code HashMap} */ - private final HashMap problemStatus; + private final Map problemStatus; @Autowired Day02() { this.problemStatus = new HashMap<>(); - this.problemStatus.put("1", ProblemStatusEnum.SOLVED); - this.problemStatus.put("2", ProblemStatusEnum.SOLVED); + this.problemStatus.put(1, ProblemStatusEnum.SOLVED); + this.problemStatus.put(2, ProblemStatusEnum.SOLVED); } @Override @@ -53,7 +53,7 @@ public int getDay() { } @Override - public HashMap getProblemStatus() { + public Map getProblemStatus() { return problemStatus; } diff --git a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java index 5038f65d..b4d97132 100644 --- a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java +++ b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java @@ -5,13 +5,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.*; import org.springframework.stereotype.Component; -import org.springframework.util.StreamUtils; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; import java.io.InputStream; import java.util.*; @@ -22,7 +17,7 @@ public class Day03 implements Days { /** The puzzle status {@code HashMap} */ -private final HashMap problemStatus; +private final Map problemStatus; // Adds a logger private static final Logger logger = LoggerFactory.getLogger(Day03.class); @@ -48,8 +43,8 @@ public class Day03 implements Days { @Autowired Day03() { this.problemStatus = new HashMap<>(); - this.problemStatus.put("1", ProblemStatusEnum.SOLVED); - this.problemStatus.put("2", ProblemStatusEnum.SOLVED); + this.problemStatus.put(1, ProblemStatusEnum.SOLVED); + this.problemStatus.put(2, ProblemStatusEnum.SOLVED); } @Override @@ -58,7 +53,7 @@ public int getDay() { } @Override - public HashMap getProblemStatus() { + public Map getProblemStatus() { return problemStatus; } diff --git a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java index ad6af7c8..0d023dfd 100644 --- a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java +++ b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java @@ -2,8 +2,6 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -19,7 +17,7 @@ public class Day04 implements Days { /** * The puzzle status {@code HashMap} */ - private final HashMap problemStatus; + private final Map problemStatus; // // Adds a logger // private static final Logger logger = LoggerFactory.getLogger(Day04.class); @@ -70,8 +68,8 @@ public class Day04 implements Days { @Autowired Day04() { this.problemStatus = new HashMap<>(); - this.problemStatus.put("1", ProblemStatusEnum.SOLVED); - this.problemStatus.put("2", ProblemStatusEnum.SOLVED); + this.problemStatus.put(1, ProblemStatusEnum.SOLVED); + this.problemStatus.put(2, ProblemStatusEnum.SOLVED); } // get current Day @@ -80,8 +78,10 @@ public int getDay() { return 4; } + + @Override - public HashMap getProblemStatus() { + public Map getProblemStatus() { return problemStatus; } diff --git a/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java b/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java index 7eb7d4bd..c3aae182 100644 --- a/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java +++ b/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java @@ -43,13 +43,18 @@ public AdventOfCodeService(List daysSolutions) { * @return a {@code String} with the result for the puzzle, or in case it has not been implemented, * an {@link PuzzleNotSolvedYetException} is thrown. */ - public String getResultsForASpecificDayAndPuzzlePart(String day, String part) { - Days thisDaysClass = findDayForDay(Integer.parseInt(day)); + public String getResultsForASpecificDayAndPuzzlePart(Integer day, Integer part) { + + Objects.requireNonNull(day, "day is null"); + Objects.requireNonNull(part, "part is null"); + + + Days thisDaysClass = findDayForDay(day); if (!isProblemSolvedForPart(thisDaysClass, part)) { throw new PuzzleNotSolvedYetException(new Throwable()); - } else if (("1").equals(part)) { + } else if ((part).equals(1)) { return thisDaysClass.firstPart(); - } else if (("2").equals(part)) { + } else if ((part).equals(2)) { return thisDaysClass.secondPart(); } else { return "This puzzle has not been solved yet."; @@ -63,7 +68,7 @@ public String getResultsForASpecificDayAndPuzzlePart(String day, String part) { * @param part the part to check for it's solution status * @return if the part has been solved for a specific day */ - private boolean isProblemSolvedForPart(Days thisDaysClass, String part) { + private boolean isProblemSolvedForPart(Days thisDaysClass, Integer part) { return thisDaysClass.getProblemStatus().containsKey(part) && thisDaysClass.getProblemStatus().get(part) == ProblemStatusEnum.SOLVED; } diff --git a/src/test/java/org/haffson/adventofcode/controller/AdventOfCodeControllerTest.java b/src/test/java/org/haffson/adventofcode/controller/AdventOfCodeControllerTest.java index 383e1788..d102e220 100644 --- a/src/test/java/org/haffson/adventofcode/controller/AdventOfCodeControllerTest.java +++ b/src/test/java/org/haffson/adventofcode/controller/AdventOfCodeControllerTest.java @@ -41,8 +41,8 @@ public class AdventOfCodeControllerTest { private MediaType contentType = new MediaType("application", "hal+json", Charset.forName("UTF-8")); - private String day1 = "1"; - private String part1 = "1"; + private Integer day1 = 1; + private Integer part1 = 1; private String resultDay1Part1 = "Part 1 - Frequency: 599"; @Autowired diff --git a/src/test/java/org/haffson/adventofcode/service/AdventOfCodeServiceTest.java b/src/test/java/org/haffson/adventofcode/service/AdventOfCodeServiceTest.java index 92c53bb9..9f8763db 100644 --- a/src/test/java/org/haffson/adventofcode/service/AdventOfCodeServiceTest.java +++ b/src/test/java/org/haffson/adventofcode/service/AdventOfCodeServiceTest.java @@ -20,7 +20,7 @@ public class AdventOfCodeServiceTest { private final List daysSolutions = new LinkedList<>(); - private HashMap problemStatus = new HashMap<>(); + private HashMap problemStatus = new HashMap<>(); private AdventOfCodeService adventOfCodeService; @@ -30,8 +30,8 @@ public class AdventOfCodeServiceTest { @Before public void setup() { - problemStatus.put("1", ProblemStatusEnum.SOLVED); - problemStatus.put("2", ProblemStatusEnum.UNSOLVED); + problemStatus.put(1, ProblemStatusEnum.SOLVED); + problemStatus.put(2, ProblemStatusEnum.UNSOLVED); daysSolutions.add(day01); Mockito.when(day01.getDay()).thenReturn(1); Mockito.when(day01.getProblemStatus()).thenReturn(problemStatus); @@ -41,24 +41,24 @@ public void setup() { @Test public void getResultsForASpecificDayAndPuzzlePartTest() { - String actualResult = adventOfCodeService.getResultsForASpecificDayAndPuzzlePart("1", "1"); + String actualResult = adventOfCodeService.getResultsForASpecificDayAndPuzzlePart(1, 2); Assert.assertEquals("Part 1 - Frequency: 599", actualResult); } @Test(expected = PuzzleNotSolvedYetException.class) public void tryingToGetResultsForANotYetImplementedPartThrowsExceptionTest() { - adventOfCodeService.getResultsForASpecificDayAndPuzzlePart("1", "2"); + adventOfCodeService.getResultsForASpecificDayAndPuzzlePart(1, 2); } @Test(expected = PuzzleNotSolvedYetException.class) public void tryingToGetResultsForANotYetImplementedDayThrowsException() { - adventOfCodeService.getResultsForASpecificDayAndPuzzlePart("2", "1"); + adventOfCodeService.getResultsForASpecificDayAndPuzzlePart(1, 1); } @Test(expected = PuzzleNotSolvedYetException.class) public void tryingToGetResultsForAnyOtherPartThrowsException() { - adventOfCodeService.getResultsForASpecificDayAndPuzzlePart("1", "3"); + adventOfCodeService.getResultsForASpecificDayAndPuzzlePart(1, 3); } } \ No newline at end of file From d206be1d949cf12333e3986f635c194e1705a7f6 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Mon, 6 Sep 2021 09:22:52 +0200 Subject: [PATCH 22/36] Heroku: I added a default value by @RequestParam line 56 at AdventofCodeController.java --- frontend/package-lock.json | 66 ++++++++++--------- .../controller/AdventOfCodeController.java | 4 +- .../AdventOfCodeControllerTest.java | 2 +- .../http-response.adoc | 4 +- .../response-body.adoc | 2 +- 5 files changed, 41 insertions(+), 37 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index bbf70e19..f11b89d5 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1797,31 +1797,40 @@ } }, "@jest/types": { - "version": "26.0.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.0.1.tgz", - "integrity": "sha512-IbtjvqI9+eS1qFnOIEL7ggWmT+iK/U+Vde9cGWtYb/b6XgKb3X44ZAe/z9YZzoAAZ/E92m0DqrilF934IGNnQA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.0.tgz", + "integrity": "sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", "chalk": "^4.0.0" }, "dependencies": { + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -1850,9 +1859,9 @@ "dev": true }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -2287,12 +2296,6 @@ "@babel/types": "^7.3.0" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", @@ -2388,9 +2391,9 @@ "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" }, "@types/yargs": { - "version": "15.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", - "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -5286,9 +5289,9 @@ } }, "classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, "clean-css": { "version": "4.2.1", @@ -11155,12 +11158,13 @@ } }, "jest-mock": { - "version": "26.0.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.0.1.tgz", - "integrity": "sha512-MpYTBqycuPYSY6xKJognV7Ja46/TeRbAZept987Zp+tuJvMN0YBWyyhG9mXyYQaU3SBI0TUlSaO5L3p49agw7Q==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.0.tgz", + "integrity": "sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w==", "dev": true, "requires": { - "@jest/types": "^26.0.1" + "@jest/types": "^27.1.0", + "@types/node": "*" } }, "jest-pnp-resolver": { diff --git a/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java b/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java index a3ca292e..c574b39a 100644 --- a/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java +++ b/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java @@ -53,8 +53,8 @@ public AdventOfCodeController(AdventOfCodeService adventOfCodeService) { * @return a HATEOAS-{@code Resource<>} with the corresponding solution */ @GetMapping - public Resource getResultForASpecificDayAndPuzzlePart(@RequestParam(value = "day") Integer day, - @RequestParam(value = "part") Integer part) { + public Resource getResultForASpecificDayAndPuzzlePart(@RequestParam(value = "day", defaultValue = "1") Integer day, + @RequestParam(value = "part", defaultValue = "1") Integer part) { logger.info("The results for day " + day + ", part " + part + " have been requested."); diff --git a/src/test/java/org/haffson/adventofcode/controller/AdventOfCodeControllerTest.java b/src/test/java/org/haffson/adventofcode/controller/AdventOfCodeControllerTest.java index d102e220..4d668fda 100644 --- a/src/test/java/org/haffson/adventofcode/controller/AdventOfCodeControllerTest.java +++ b/src/test/java/org/haffson/adventofcode/controller/AdventOfCodeControllerTest.java @@ -43,7 +43,7 @@ public class AdventOfCodeControllerTest { private Integer day1 = 1; private Integer part1 = 1; - private String resultDay1Part1 = "Part 1 - Frequency: 599"; + private String resultDay1Part1 = "Product 1: " + 326211; @Autowired private MockMvc mvc; diff --git a/target/snippets/getResultForASpecificDayAndPuzzlePart/http-response.adoc b/target/snippets/getResultForASpecificDayAndPuzzlePart/http-response.adoc index aa5412d6..6647c125 100644 --- a/target/snippets/getResultForASpecificDayAndPuzzlePart/http-response.adoc +++ b/target/snippets/getResultForASpecificDayAndPuzzlePart/http-response.adoc @@ -1,11 +1,11 @@ [source,http,options="nowrap"] ---- HTTP/1.1 200 OK -Content-Length: 153 Content-Type: application/json;charset=UTF-8 +Content-Length: 147 { - "content" : "Part 1 - Frequency: 599", + "content" : "Product 1: 326211", "_links" : { "self" : { "href" : "http://localhost:8080/api/adventOfCode?day=1&part=1" diff --git a/target/snippets/getResultForASpecificDayAndPuzzlePart/response-body.adoc b/target/snippets/getResultForASpecificDayAndPuzzlePart/response-body.adoc index e8a2c14e..59789b18 100644 --- a/target/snippets/getResultForASpecificDayAndPuzzlePart/response-body.adoc +++ b/target/snippets/getResultForASpecificDayAndPuzzlePart/response-body.adoc @@ -1,7 +1,7 @@ [source,options="nowrap"] ---- { - "content" : "Part 1 - Frequency: 599", + "content" : "Product 1: 326211", "_links" : { "self" : { "href" : "http://localhost:8080/api/adventOfCode?day=1&part=1" From 40c477e3ad7fba1e468bf8682c6c061a124130db Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Mon, 6 Sep 2021 10:27:23 +0200 Subject: [PATCH 23/36] Heroku: Bug Fix in Day01 (read in data) --- .../adventofcode/days/day01/Day01.java | 65 ++++--------------- .../adventofcode/days/day02/Day02.java | 22 +------ .../adventofcode/days/day03/Day03.java | 18 ----- .../adventofcode/days/day04/Day04.java | 37 ----------- .../adventofcode/days/day01/Day01Test.java | 14 ++++ 5 files changed, 26 insertions(+), 130 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index c3a57bba..e928afce 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -17,10 +17,6 @@ @Component public class Day01 implements Days { -// // initialization: -// private final InputStream resource; -// private Scanner scan; - /** The puzzle status {@code HashMap} */ private final Map problemStatus; @@ -29,27 +25,13 @@ public class Day01 implements Days { // Read content of input file - // create constructor? public InputStream resource = getClass().getResourceAsStream("/data/day01/input_day01.txt"); - -// // Read content of input file (real data) -// public File resource; -// { -// try { -// resource = new ClassPathResource( -// "data/day01/input_day01.txt").getFile(); -// } catch (IOException e) { -// logger.error("Raw Data (Input) file not found: " + e.getMessage()); -// } -// } + private final Integer[] data = getRawData(resource); -// @Autowired + // @Autowired Day01() { -// resource = getClass().getResourceAsStream("/data/day01/input_day01.txt"); -// if (resource==null) throw new RuntimeException("Could not access data file"); -// Scanner scan = new Scanner(resource); this.problemStatus = new HashMap<>(); this.problemStatus.put(1, ProblemStatusEnum.SOLVED); this.problemStatus.put(2, ProblemStatusEnum.SOLVED); @@ -67,13 +49,13 @@ public Map getProblemStatus() { @Override public String firstPart() { - return "Product 1: " + calculateNumber1(getRawData(resource)); + return "Product 1: " + calculateNumber1(data); } @Override public String secondPart() { try { - return "Product 2: " + calculateNumber2(); + return "Product 2: " + calculateNumber2(data); } catch (FileNotFoundException e) { return "error"; } @@ -85,17 +67,9 @@ public String secondPart() { * * @return the final frequency */ - - // read raw data and transform it to String[] public Integer[] getRawData(InputStream resource) { -// try (Scanner s = new Scanner(new File(String.valueOf(resource.toPath()))).useDelimiter("\n")){ -// while (s.hasNext()) { -// rawData.add(s.next()); -// } -// } catch (FileNotFoundException e) { -// logger.error("File not found!" + e.getMessage()); -// } + ArrayList rawData; try (Scanner scan = new Scanner(resource)) { @@ -106,13 +80,6 @@ public Integer[] getRawData(InputStream resource) { } } -// ArrayList rawData; -// rawData = new ArrayList<>(); -// -// while (scan.hasNextLine()) { -// rawData.add(scan.nextLine()); -// } - Integer[] rawData_array = new Integer[rawData.size()]; for(int i = 0; i < rawData.size(); i++) rawData_array[i] = Integer.parseInt(rawData.get(i)); @@ -135,31 +102,22 @@ private int calculateNumber1(Integer[] rawData_array){ } // check for intersection of two arraylists - ArrayList test = new ArrayList(); data.retainAll(data2); // multiplication of "intersected" values is the puzzle's answer! -// System.out.println("The answer of Puzzle Day 1.1 is: " + data.get(0) * data.get(1)); return data.get(0) * data.get(1); } - private int calculateNumber2() throws FileNotFoundException { - - // read data file - Scanner s = new Scanner(new File("/Users/jenni/dedica/AdventOfCode/AdventOfCode-Java-learning-project/src/main/resources/data/day01/input_day01.txt")); - ArrayList data = new ArrayList(); + private int calculateNumber2(Integer[] rawData_array) throws FileNotFoundException { - while (s.hasNext()) { - int i = Integer.parseInt(s.next()); - data.add(i); - } - s.close(); + List data = new ArrayList<>(rawData_array.length); + data.addAll(Arrays.asList(rawData_array)); // create arraylist that is subtracted by 2020 - ArrayList data2 = new ArrayList(); + ArrayList data2 = new ArrayList<>(); - for (Integer integer : data) { - data2.add(2020 - integer); + for (Integer datum : data) { + data2.add(2020 - datum); } ArrayList data3 = new ArrayList(); @@ -174,7 +132,6 @@ private int calculateNumber2() throws FileNotFoundException { data2.retainAll(data3); // multiplication of "intersected" values is the puzzle's answer! -// System.out.println("The answer of Puzzle Day 1.2 is: " + (2020-data2.get(0))*(2020-data2.get(1))*(2020-data2.get(2))); return (2020-data2.get(0))*(2020-data2.get(1))*(2020-data2.get(2)); diff --git a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java index 82afd756..d0840f5c 100644 --- a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java +++ b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java @@ -23,18 +23,6 @@ public class Day02 implements Days { // Read content of input file public InputStream resource = getClass().getResourceAsStream("/data/day02/input_day02.txt"); - - - //File resource; - // { - // try { - // resource = new ClassPathResource( - // "data/day02/input_day02.txt").getFile(); - // } catch (IOException e) { - // logger.error("Raw Data (Input) file not found: " + e.getMessage()); - // } - // } - private List rawData = getRawDataAsList(resource); /** The puzzle status {@code HashMap} */ @@ -92,15 +80,7 @@ public List getRawDataAsList(InputStream resource) { rawData.add(scan.nextLine()); } } -// List rawData = new ArrayList<>(); -// -// try (Scanner s = new Scanner(resource){ -// while (s.hasNext()) { -// rawData.add(s.next()); -// } -// } catch (FileNotFoundException e) { -// logger.error("File not found!"); -// } + return rawData; } diff --git a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java index b4d97132..46583ad4 100644 --- a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java +++ b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java @@ -26,16 +26,6 @@ public class Day03 implements Days { // Read content of input file public InputStream resource = getClass().getResourceAsStream("/data/day03/input_day03.txt"); -// File resource; -// { -// try { -// resource = new ClassPathResource( -// "data/day03/input_day03.txt").getFile(); -// } catch (IOException e) { -// logger.error("Raw Data (Input) file not found: " + e.getMessage()); -// } -// } - private final String[] data = getRawDataAsArray(resource); @@ -84,14 +74,6 @@ public String[] getTestData() { } public String[] getRawDataAsArray(InputStream resource) { -// List rawData = new ArrayList<>(); -// try (Scanner s = new Scanner(new File(String.valueOf(resource.toPath()))).useDelimiter("\n")){ -// while (s.hasNext()) { -// rawData.add(s.next()); -// } -// } catch (FileNotFoundException e) { -// logger.error("File not found!" + e.getMessage()); -// } ArrayList rawData; try (Scanner scan = new Scanner(resource)) { rawData = new ArrayList<>(); diff --git a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java index 0d023dfd..51ab9c2e 100644 --- a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java +++ b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java @@ -27,43 +27,14 @@ public class Day04 implements Days { public InputStream testResource = getClass().getResourceAsStream("/data/day04/day04_testdata.txt"); -// public File testResource; -// { -// try { -// testResource = new ClassPathResource( -// "data/day04/day04_testdata.txt").getFile(); -// } catch (IOException e) { -// logger.error("Raw Data (Input) file not found: " + e.getMessage()); -// } -// } - // Read content of test file (puzzle part 2) public InputStream testResource2 = getClass().getResourceAsStream("/data/day04/day04_testdata2.txt"); -// public File testResource2; -// { -// try { -// testResource2 = new ClassPathResource( -// "data/day04/day04_testdata2.txt").getFile(); -// } catch (IOException e) { -// logger.error("Raw Data (Input) file not found: " + e.getMessage()); -// } -// } // Read content of input file (real data) public InputStream resource = getClass().getResourceAsStream("/data/day04/input_day04.txt"); -// public File resource; -// { -// try { -// resource = new ClassPathResource( -// "data/day04/input_day04.txt").getFile(); -// } catch (IOException e) { -// logger.error("Raw Data (Input) file not found: " + e.getMessage()); -// } -// } - @Autowired Day04() { @@ -99,14 +70,6 @@ public String secondPart() { // read raw data and transform it to String[] public String[] getRawData(InputStream resource) { -// List rawData = new ArrayList<>(); -// try (Scanner s = new Scanner(new File(String.valueOf(resource.toPath()))).useDelimiter("\n\n")){ -// while (s.hasNext()) { -// rawData.add(s.next()); -// } -// } catch (FileNotFoundException e) { -// logger.error("File not found!" + e.getMessage()); -// } ArrayList rawData; try (Scanner scan = new Scanner(resource)) { diff --git a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java index be7ee1b0..3cc60ba7 100644 --- a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java @@ -31,4 +31,18 @@ public void test_firstPart_returnsExpectedResult() { Assert.assertEquals(expectedResult, actualResult); } + @Test + public void test_secondPart_returnsExpectedResult() { + //arrange + Day01 day01 = new Day01(); + + String expectedResult = "Product 2: " + 131347190; + + //act + String actualResult = day01.secondPart(); + + //assert + Assert.assertEquals(expectedResult, actualResult); + } + } From 6930948ea8db359c064fd2e99a90364083a9d0f7 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Mon, 6 Sep 2021 11:08:29 +0200 Subject: [PATCH 24/36] Heroku: AdventOfCodeServiceTest.java: modified outout to my day01 output (AoC year 2020) --- .../adventofcode/service/AdventOfCodeServiceTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/org/haffson/adventofcode/service/AdventOfCodeServiceTest.java b/src/test/java/org/haffson/adventofcode/service/AdventOfCodeServiceTest.java index 9f8763db..4b8f86c0 100644 --- a/src/test/java/org/haffson/adventofcode/service/AdventOfCodeServiceTest.java +++ b/src/test/java/org/haffson/adventofcode/service/AdventOfCodeServiceTest.java @@ -35,15 +35,15 @@ public void setup() { daysSolutions.add(day01); Mockito.when(day01.getDay()).thenReturn(1); Mockito.when(day01.getProblemStatus()).thenReturn(problemStatus); - Mockito.when(day01.firstPart()).thenReturn("Part 1 - Frequency: 599"); + Mockito.when(day01.firstPart()).thenReturn("Product 1: " + 326211); adventOfCodeService = new AdventOfCodeService(daysSolutions); } @Test public void getResultsForASpecificDayAndPuzzlePartTest() { - String actualResult = adventOfCodeService.getResultsForASpecificDayAndPuzzlePart(1, 2); + String actualResult = adventOfCodeService.getResultsForASpecificDayAndPuzzlePart(1, 1); - Assert.assertEquals("Part 1 - Frequency: 599", actualResult); + Assert.assertEquals("Product 1: " + 326211, actualResult); } @Test(expected = PuzzleNotSolvedYetException.class) @@ -53,12 +53,12 @@ public void tryingToGetResultsForANotYetImplementedPartThrowsExceptionTest() { @Test(expected = PuzzleNotSolvedYetException.class) public void tryingToGetResultsForANotYetImplementedDayThrowsException() { - adventOfCodeService.getResultsForASpecificDayAndPuzzlePart(1, 1); + adventOfCodeService.getResultsForASpecificDayAndPuzzlePart(10, 1); } @Test(expected = PuzzleNotSolvedYetException.class) public void tryingToGetResultsForAnyOtherPartThrowsException() { - adventOfCodeService.getResultsForASpecificDayAndPuzzlePart(1, 3); + adventOfCodeService.getResultsForASpecificDayAndPuzzlePart(2, 3); } } \ No newline at end of file From 4ee8d1bab3b9f82829f3ea2bcb9bad6c8171b721 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Mon, 6 Sep 2021 11:53:17 +0200 Subject: [PATCH 25/36] Heroku: add ne FE tests fix (Michelles repo) --- frontend/package-lock.json | 5770 +++++++++++++++++----- frontend/package.json | 2 +- frontend/src/components/App.test.js | 26 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 4533 insertions(+), 1267 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index f11b89d5..c6015870 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -12,6 +12,11 @@ "@babel/highlight": "^7.0.0" } }, + "@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" + }, "@babel/core": { "version": "7.7.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.5.tgz", @@ -100,6 +105,46 @@ "@babel/types": "^7.7.4" } }, + "@babel/helper-compilation-targets": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", + "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "browserslist": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", + "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", + "requires": { + "caniuse-lite": "^1.0.30001254", + "colorette": "^1.3.0", + "electron-to-chromium": "^1.3.830", + "escalade": "^3.1.1", + "node-releases": "^1.1.75" + } + }, + "caniuse-lite": { + "version": "1.0.30001255", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001255.tgz", + "integrity": "sha512-F+A3N9jTZL882f/fg/WWVnKSu6IOo3ueLz4zwaOPbPYHNmM/ZaDUyzyJwS1mZhX7Ex5jqTyW599Gdelh5PDYLQ==" + }, + "electron-to-chromium": { + "version": "1.3.830", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.830.tgz", + "integrity": "sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ==" + }, + "node-releases": { + "version": "1.1.75", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", + "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==" + } + } + }, "@babel/helper-create-class-features-plugin": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz", @@ -132,6 +177,186 @@ "lodash": "^4.17.13" } }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", + "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "@babel/helper-explode-assignable-expression": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz", @@ -249,6 +474,25 @@ "@babel/types": "^7.7.4" } }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", + "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, "@babel/helper-split-export-declaration": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", @@ -257,6 +501,16 @@ "@babel/types": "^7.7.4" } }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==" + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" + }, "@babel/helper-wrap-function": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz", @@ -344,14 +598,6 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==" }, - "@babel/plugin-external-helpers": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.7.4.tgz", - "integrity": "sha512-RVGNajLaFlknbZLutaP/uv7Q+xmVs2LMlEWFXbcjLnwtBdPqAVpV3nzYIAJqri/VjJCUrhG5nALijtg0aND+XA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz", @@ -391,12 +637,19 @@ } }, "@babel/plugin-proposal-export-default-from": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.7.4.tgz", - "integrity": "sha512-1t6dh7BHYUz4zD1m4pozYYEZy/3m8dgOr9owx3r0mPPI3iGKRUKUbIxfYmcJ4hwljs/dhd0qOTr1ZDUp43ix+w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.14.5.tgz", + "integrity": "sha512-T8KZ5abXvKMjF6JcoXjgac3ElmXf0AWzJwi2O/42Jk+HmCky3D9+i1B7NPP1FblyceqTevKeV/9szeikFoaMDg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-export-default-from": "^7.7.4" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-default-from": "^7.14.5" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + } } }, "@babel/plugin-proposal-json-strings": { @@ -445,12 +698,28 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.5.tgz", - "integrity": "sha512-sOwFqT8JSchtJeDD+CjmWCaiFoLxY4Ps7NjvwHC/U7l4e9i5pTRNt8nDMIFSOUL+ncFbYSwruHM8WknYItWdXw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.7.4" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + } } }, "@babel/plugin-proposal-unicode-property-regex": { @@ -471,11 +740,18 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.7.4.tgz", - "integrity": "sha512-JH3v5ZOeKT0qqdJ9BeBcZTFQiJOMax8RopSr1bH6ASkZKo2qWsvBML7W1mp89sszBRDBBRO8snqcByGdrMTdMg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + } } }, "@babel/plugin-syntax-decorators": { @@ -495,11 +771,18 @@ } }, "@babel/plugin-syntax-export-default-from": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.7.4.tgz", - "integrity": "sha512-j888jpjATLEzOWhKawq46UrpXnCRDbdhBd5io4jgwjJ3+CHHGCRb6PNAVEgs+BXIb+dNRAmnkv36zfB992PRVw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.14.5.tgz", + "integrity": "sha512-snWDxjuaPEobRBnhpqEfZ8RMxDbHt8+87fiEioGuE+Uc0xAKgSD8QiuL3lF93hPVQfZFAcYwrrf+H5qUhike3Q==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + } } }, "@babel/plugin-syntax-flow": { @@ -773,11 +1056,18 @@ } }, "@babel/plugin-transform-object-assign": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.7.4.tgz", - "integrity": "sha512-0TpeUlnhQDwKxPLTIckdaWt46L2s61c/5w5snw1OUod5ehOJywZD98Ha3dFHVjeqkfOFtOTH7cqxddjxUuvcmg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.14.5.tgz", + "integrity": "sha512-lvhjk4UN9xJJYB1mI5KC0/o1D5EcJXdbhVe+4fSk08D6ZN+iuAIs7LJC+71h8av9Ew4+uRq9452v9R93SFmQlQ==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + } } }, "@babel/plugin-transform-object-super": { @@ -869,20 +1159,39 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.7.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz", - "integrity": "sha512-tajQY+YmXR7JjTwRvwL4HePqoL3DYxpYXIHKVvrOIvJmeHe2y1w4tz5qz9ObUDC9m76rCzIMPyn4eERuwA4a4A==", - "requires": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "resolve": "^1.8.1", - "semver": "^5.5.1" + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.0.tgz", + "integrity": "sha512-sfHYkLGjhzWTq6xsuQ01oEsUYjkHRux9fW1iUA68dC7Qd8BS1Unq4aZ8itmQp95zUzIcyR2EbNMTzAicFj+guw==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "semver": "^6.3.0" }, "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + }, + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } } } }, @@ -1398,6 +1707,14 @@ } } }, + "@jest/create-cache-key-function": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.1.0.tgz", + "integrity": "sha512-5e0W3f03q8qupqRYxcRW94di/2BtkW5I6BxSl8HJWf+NtdnVWBkl8zh0F/Xe0pcJayF+BiMr3LZ1OfYV447R3w==", + "requires": { + "@jest/types": "^27.1.0" + } + }, "@jest/environment": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", @@ -1800,7 +2117,6 @@ "version": "27.1.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.0.tgz", "integrity": "sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g==", - "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -1813,7 +2129,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, "requires": { "@types/istanbul-lib-report": "*" } @@ -1822,7 +2137,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -1831,7 +2145,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1841,7 +2154,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -1849,20 +2161,17 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -1964,147 +2273,450 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" }, "@react-native-community/cli-debugger-ui": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-3.0.0.tgz", - "integrity": "sha512-m3X+iWLsK/H7/b7PpbNO33eQayR/+M26la4ZbYe1KRke5Umg4PIWsvg21O8Tw4uJcY8LA5hsP+rBi/syBkBf0g==", + "version": "6.0.0-rc.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-6.0.0-rc.0.tgz", + "integrity": "sha512-achYcPPoWa9D02C5tn6TBzjeY443wQTyx37urptc75JpZ7gR5YHsDyIEEWa3DDYp1va9zx/iGg+uZ/hWw07GAw==", "requires": { "serve-static": "^1.13.1" } }, - "@react-native-community/cli-platform-android": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-3.0.3.tgz", - "integrity": "sha512-rNO9DmRiVhB6aP2DVUjEJv7ecriTARDZND88ny3xNVUkrD1Y+zwF6aZu3eoT52VXOxLCSLiJzz19OiyGmfqxYg==", - "requires": { - "@react-native-community/cli-tools": "^3.0.0", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "jetifier": "^1.6.2", - "logkitty": "^0.6.0", - "slash": "^3.0.0", - "xmldoc": "^1.1.2" + "@react-native-community/cli-hermes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-6.0.0.tgz", + "integrity": "sha512-YUX8MEmDsEYdFuo/juCZUUDPPRQ/su3K/SPcSVmv7AIAwO/7ItuQ7+58PRI914XNvnRmY1GNVHKfWhUoNXMxvA==", + "requires": { + "@react-native-community/cli-platform-android": "^6.0.0", + "@react-native-community/cli-tools": "^6.0.0-rc.0", + "chalk": "^3.0.0", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5" }, "dependencies": { "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } }, - "@react-native-community/cli-platform-ios": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-3.0.0.tgz", - "integrity": "sha512-QoNVlDj8eMXRZk9uktPFsctHurQpv9jKmiu6mQii4NEtT2npE7g1hbWpRNojutBsfgmCdQGDHd9uB54eeCnYgg==", + "@react-native-community/cli-platform-android": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-6.0.0.tgz", + "integrity": "sha512-yXyrM2elKM8/thf1d8EMMm0l0KdeWmIMhWZzCoRpCIQoUuVtiCEMyrZF+aufvNvy74soKiCFeAmGNI8LPk2hzg==", "requires": { - "@react-native-community/cli-tools": "^3.0.0", - "chalk": "^2.4.2", - "js-yaml": "^3.13.1", - "xcode": "^2.0.0" + "@react-native-community/cli-tools": "^6.0.0-rc.0", + "chalk": "^3.0.0", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "jetifier": "^1.6.2", + "lodash": "^4.17.15", + "logkitty": "^0.7.1", + "slash": "^3.0.0", + "xmldoc": "^1.1.2" }, "dependencies": { "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { - "has-flag": "^3.0.0" + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-platform-ios": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-6.0.0.tgz", + "integrity": "sha512-+f6X4jDGuPpVcY2NsVAstnId4stnG7EvzLUhs7FUpMFjzss9c1ZJhsqQeKikOtzZbwLzFrpki/QrTK79ur7xSg==", + "requires": { + "@react-native-community/cli-tools": "^6.0.0-rc.0", + "chalk": "^3.0.0", + "glob": "^7.1.3", + "js-yaml": "^3.13.1", + "lodash": "^4.17.15", + "plist": "^3.0.2", + "xcode": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@react-native-community/cli-server-api": { + "version": "6.0.0-rc.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-6.0.0-rc.0.tgz", + "integrity": "sha512-shPG9RXXpDYeluoB3tzaYU9Ut0jTvZ3osatLLUJkWjbRjFreK9zUcnoFDDrsVT6fEoyeBftp5DSa+wCUnPmcJA==", + "requires": { + "@react-native-community/cli-debugger-ui": "^6.0.0-rc.0", + "@react-native-community/cli-tools": "^6.0.0-rc.0", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.0", + "nocache": "^2.1.0", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^1.1.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "requires": { + "options": ">=0.0.5", + "ultron": "1.0.x" } } } }, "@react-native-community/cli-tools": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-3.0.0.tgz", - "integrity": "sha512-8IhQKZdf3E4CR8T7HhkPGgorot/cLkRDgneJFDSWk/wCYZAuUh4NEAdumQV7N0jLSMWX7xxiWUPi94lOBxVY9g==", + "version": "6.0.0-rc.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-6.0.0-rc.0.tgz", + "integrity": "sha512-N31BhNacTe0UGYQxUx0WHWPKnF4pBe62hNRV9WNJdWqVl4TP45T1Fd/7ziiosfalIar+tOo9Sk0Pqq48x1+wNw==", "requires": { - "chalk": "^2.4.2", - "lodash": "^4.17.5", + "chalk": "^3.0.0", + "lodash": "^4.17.15", "mime": "^2.4.1", - "node-fetch": "^2.5.0" + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "shell-quote": "1.6.1" }, "dependencies": { "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } }, "@react-native-community/cli-types": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-6.0.0.tgz", + "integrity": "sha512-K493Fk2DMJC0ZM8s8gnfseKxGasIhuDaCUDeLZcoCSFlrjKEuEs1BKKEJiev0CARhKEXKOyyp/uqYM9nWhisNw==", + "requires": { + "ora": "^3.4.0" + } + }, + "@react-native/assets": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", + "integrity": "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==" + }, + "@react-native/normalize-color": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-1.0.0.tgz", + "integrity": "sha512-xUNRvNmCl3UGCPbbHvfyFMnpvLPoOjDCcp5bT9m2k+TF/ZBklEQwhPZlkrxRx2NhgFh1X3a5uL7mJ7ZR+8G7Qg==" + }, + "@react-native/polyfills": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-1.0.0.tgz", + "integrity": "sha512-0jbp4RxjYopTsIdLl+/Fy2TiwVYHy4mgeu07DG4b/LyM0OS/+lPP5c9sbnt/AMlnF6qz2JRZpPpGw1eMNS6A4w==" + }, + "@sideway/address": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", + "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", + "requires": { + "@hapi/hoek": "^9.0.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", + "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==" + } + } + }, + "@sideway/formula": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-3.0.0.tgz", - "integrity": "sha512-ng6Tm537E/M42GjE4TRUxQyL8sRfClcL7bQWblOCoxPZzJ2J3bdALsjeG3vDnVCIfI/R0AeFalN9KjMt0+Z/Zg==" + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, "@sinonjs/commons": { "version": "1.6.0", @@ -2316,6 +2928,14 @@ "@types/node": "*" } }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "requires": { + "@types/node": "*" + } + }, "@types/istanbul-lib-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", @@ -2394,7 +3014,6 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -2769,21 +3388,10 @@ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "requires": { - "ansi-wrap": "^0.1.0" - } - }, - "ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", - "requires": { - "ansi-wrap": "0.1.0" - } + "anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==" }, "ansi-escapes": { "version": "3.2.0", @@ -2815,27 +3423,11 @@ } } }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -2846,11 +3438,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" - }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -2957,6 +3544,11 @@ } } }, + "appdirsjs": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.5.tgz", + "integrity": "sha512-UyaAyzj+7XLoKhbXJi4zoAw8IDXCiLNCKfQEiuCsCCTkDmiG1vpCliQn/MoUvO3DZqCN1i6gOahokcFtNSIrVA==" + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -3039,11 +3631,6 @@ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=" - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -3088,11 +3675,6 @@ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, - "art": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/art/-/art-0.10.3.tgz", - "integrity": "sha512-HXwbdofRTiJT6qZX/FnchtldzJjS3vkLJxQilc3Xj+ma2MXjY4UAyQ0ls1XZYVnDvVIBiFZbC6QsvtW86TD6tQ==" - }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -3634,6 +4216,76 @@ "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.5.tgz", "integrity": "sha512-sGhfINU+AuMw9oFAdIn/nD5sem3pn/WgxAfDZ//Q3CnF+5uaho7C7shh2rKLk6sKE/XkfmyibghocwKdVjLIKg==" }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.4.tgz", + "integrity": "sha512-z3HnJE5TY/j4EFEa/qpQMSbcUJZ5JQi+3UFjXzn6pQCmIKc5Ug5j98SuYyH+m4xQnvKlMDIW4plLfgyVnd0IcQ==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.14.0" + }, + "dependencies": { + "browserslist": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", + "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", + "requires": { + "caniuse-lite": "^1.0.30001254", + "colorette": "^1.3.0", + "electron-to-chromium": "^1.3.830", + "escalade": "^3.1.1", + "node-releases": "^1.1.75" + } + }, + "caniuse-lite": { + "version": "1.0.30001255", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001255.tgz", + "integrity": "sha512-F+A3N9jTZL882f/fg/WWVnKSu6IOo3ueLz4zwaOPbPYHNmM/ZaDUyzyJwS1mZhX7Ex5jqTyW599Gdelh5PDYLQ==" + }, + "core-js-compat": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.17.2.tgz", + "integrity": "sha512-lHnt7A1Oqplebl5i0MrQyFv/yyEzr9p29OjlkcsFRDDgHwwQyVckfRGJ790qzXhkwM8ba4SFHHa2sO+T5f1zGg==", + "requires": { + "browserslist": "^4.16.8", + "semver": "7.0.0" + } + }, + "electron-to-chromium": { + "version": "1.3.830", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.830.tgz", + "integrity": "sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ==" + }, + "node-releases": { + "version": "1.1.75", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", + "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==" + }, + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + } + }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", @@ -4184,9 +4836,9 @@ } }, "babel-preset-fbjs": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz", - "integrity": "sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", "requires": { "@babel/plugin-proposal-class-properties": "^7.0.0", "@babel/plugin-proposal-object-rest-spread": "^7.0.0", @@ -4587,14 +5239,6 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, - "basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "requires": { - "safe-buffer": "5.1.2" - } - }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -4862,11 +5506,6 @@ "isarray": "^1.0.0" } }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -5054,11 +5693,6 @@ "supports-color": "^2.0.0" } }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" - }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -5322,9 +5956,9 @@ } }, "cli-spinners": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", - "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", + "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==" }, "cli-width": { "version": "2.2.0", @@ -5332,31 +5966,72 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" }, "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "number-is-nan": "^1.0.0" + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } } } @@ -5481,15 +6156,10 @@ "simple-swizzle": "^0.2.2" } }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - }, "colorette": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.1.0.tgz", - "integrity": "sha512-6S062WDQUXi6hOfkO/sBPVwE5ASXY4G2+b4atvhJfSsuUUhIaUKlkjLe9692Ipyt5/a+IPF5aVTu3V5gvXq5cg==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz", + "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==" }, "combined-stream": { "version": "1.0.8", @@ -5500,9 +6170,9 @@ } }, "command-exists": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", - "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==" + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" }, "commander": { "version": "2.20.3", @@ -5680,11 +6350,6 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" - }, "core-js-compat": { "version": "3.4.8", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.8.tgz", @@ -5749,37 +6414,6 @@ "sha.js": "^2.4.8" } }, - "create-react-class": { - "version": "15.6.3", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", - "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", - "requires": { - "fbjs": "^0.8.9", - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - }, - "fbjs": { - "version": "0.8.17", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", - "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" - } - } - } - }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -6125,9 +6759,9 @@ } }, "dayjs": { - "version": "1.8.17", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.17.tgz", - "integrity": "sha512-47VY/htqYqr9GHd7HW/h56PpQzRBSJcxIQFwqL3P20bMF/3az5c3PWdVY3LmPXFl6cQCYHL7c79b9ov+2bOBbw==" + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.6.tgz", + "integrity": "sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw==" }, "debug": { "version": "3.2.6", @@ -6583,14 +7217,6 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "~0.4.13" - } - }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -6626,9 +7252,9 @@ "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==" }, "envinfo": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.0.tgz", - "integrity": "sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ==" + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" }, "enzyme": { "version": "3.10.0", @@ -6744,6 +7370,14 @@ "is-arrayish": "^0.2.1" } }, + "error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", + "requires": { + "stackframe": "^1.1.1" + } + }, "errorhandler": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", @@ -6816,6 +7450,11 @@ "ext": "^1.1.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -7656,16 +8295,6 @@ } } }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -7730,17 +8359,6 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", @@ -7907,60 +8525,6 @@ "bser": "2.1.1" } }, - "fbjs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", - "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", - "requires": { - "core-js": "^2.4.1", - "fbjs-css-vars": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" - } - }, - "fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - }, - "fbjs-scripts": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fbjs-scripts/-/fbjs-scripts-1.2.0.tgz", - "integrity": "sha512-5krZ8T0Bf8uky0abPoCLrfa7Orxd8UH4Qq8hRUF2RZYNMu+FmEOrBc7Ib3YVONmxTXTlLAvyrrdrVmksDb2OqQ==", - "requires": { - "@babel/core": "^7.0.0", - "ansi-colors": "^1.0.1", - "babel-preset-fbjs": "^3.2.0", - "core-js": "^2.4.1", - "cross-spawn": "^5.1.0", - "fancy-log": "^1.3.2", - "object-assign": "^4.0.1", - "plugin-error": "^0.1.2", - "semver": "^5.1.0", - "through2": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -8833,6 +9397,11 @@ "integrity": "sha512-zKXyzksTeaCSw5wIX79iCA40YAa6CJMJgNg9wdkU/ERBrIdPSimPICYiLp65lRbSBqtiHql/HZfS2DyI/AH6tQ==", "dev": true }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -9139,9 +9708,29 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, "hermes-engine": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.2.1.tgz", - "integrity": "sha512-eNHUQHuadDMJARpaqvlCZoK/Nitpj6oywq3vQ3wCwEsww5morX34mW5PmKWQTO7aU0ck0hgulxR+EVDlXygGxQ==" + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.8.1.tgz", + "integrity": "sha512-as9Iccj/qrqqtDmfYUHbOIjt5xsQbUB6pjNIW3i1+RVr+pCAdz5S8/Jry778mz3rJWplYzHWdR1u1xQSYfBRYw==" + }, + "hermes-parser": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.4.7.tgz", + "integrity": "sha512-jc+zCtXbtwTiXoMAoXOHepxAaGVFIp89wwE9qcdwnMd/uGVEtPoY8FaFSsx0ThPvyKirdR2EsIIDVrpbSXz1Ag==" + }, + "hermes-profile-transformer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", + "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", + "requires": { + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } }, "hex-color-regex": { "version": "1.1.0", @@ -9525,68 +10114,6 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "internal-ip": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", @@ -9604,11 +10131,6 @@ "loose-envify": "^1.0.0" } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -9702,6 +10224,14 @@ "rgba-regex": "^1.0.0" } }, + "is-core-module": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", + "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -9921,26 +10451,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - }, - "dependencies": { - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - } - } - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -11912,9 +12422,36 @@ } }, "jetifier": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.5.tgz", - "integrity": "sha512-T7yzBSu9PR+DqjYt+I0KVO1XTb1QhAfHnXV5Nd3xpbXM6Xg4e3vP60Q4qkNU8Fh6PHC2PivPUNN3rY7G2MxcDQ==" + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.8.tgz", + "integrity": "sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==" + }, + "joi": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", + "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.0", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", + "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==" + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + } + } }, "js-levenshtein": { "version": "1.1.6", @@ -11941,9 +12478,9 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsc-android": { - "version": "245459.0.0", - "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-245459.0.0.tgz", - "integrity": "sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg==" + "version": "250230.2.1", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz", + "integrity": "sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==" }, "jsdom": { "version": "15.2.1", @@ -12245,14 +12782,6 @@ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, "left-pad": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", @@ -12392,6 +12921,11 @@ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, "lodash.escape": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", @@ -12489,134 +13023,13 @@ } }, "logkitty": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.6.1.tgz", - "integrity": "sha512-cHuXN8qUZuzX/7kB6VyS7kB4xyD24e8gyHXIFNhIv+fjW3P+jEXNUhj0o/7qWJtv7UZpbnPgUqzu/AZQ8RAqxQ==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", "requires": { "ansi-fragments": "^0.2.1", "dayjs": "^1.8.15", - "yargs": "^12.0.5" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "yargs": "^15.1.0" } }, "loglevel": { @@ -12643,15 +13056,6 @@ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", @@ -12722,14 +13126,6 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -12754,94 +13150,3192 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "^1.1.5" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "metro": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.66.2.tgz", + "integrity": "sha512-uNsISfcQ3iKKSHoN5Q+LAh0l3jeeg7ZcNZ/4BAHGsk02erA0OP+l2m+b5qYVoPptHz9Oc3KyG5oGJoTu41pWjg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "absolute-path": "^0.0.0", + "accepts": "^1.3.7", + "async": "^2.4.0", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "error-stack-parser": "^2.0.6", + "fs-extra": "^1.0.0", + "graceful-fs": "^4.1.3", + "hermes-parser": "0.4.7", + "image-size": "^0.6.0", + "invariant": "^2.2.4", + "jest-haste-map": "^26.5.2", + "jest-worker": "^26.0.0", + "lodash.throttle": "^4.1.1", + "metro-babel-register": "0.66.2", + "metro-babel-transformer": "0.66.2", + "metro-cache": "0.66.2", + "metro-cache-key": "0.66.2", + "metro-config": "0.66.2", + "metro-core": "0.66.2", + "metro-hermes-compiler": "0.66.2", + "metro-inspector-proxy": "0.66.2", + "metro-minify-uglify": "0.66.2", + "metro-react-native-babel-preset": "0.66.2", + "metro-resolver": "0.66.2", + "metro-runtime": "0.66.2", + "metro-source-map": "0.66.2", + "metro-symbolicate": "0.66.2", + "metro-transform-plugins": "0.66.2", + "metro-transform-worker": "0.66.2", + "mime-types": "^2.1.27", + "mkdirp": "^0.5.1", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "rimraf": "^2.5.4", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "temp": "0.8.3", + "throat": "^5.0.0", + "ws": "^1.1.5", + "yargs": "^15.3.1" + }, + "dependencies": { + "@babel/core": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", + "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.5", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", + "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "requires": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@babel/parser": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", + "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + } + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==" + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + } + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + } + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" + }, + "mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "requires": { + "mime-db": "1.49.0" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==" + }, + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "requires": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + } + } + }, + "metro-babel-register": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.66.2.tgz", + "integrity": "sha512-3F+vsVubUPJYKfVMeol8/7pd8CC287Rw92QYzJD8LEmI980xcgwMUEVBZ0UIAUwlLgiJG/f4Mwhuji2EeBXrPg==", + "requires": { + "@babel/core": "^7.14.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/register": "^7.0.0", + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/core": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", + "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.5", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", + "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "requires": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", + "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "metro-babel-transformer": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.66.2.tgz", + "integrity": "sha512-aJ/7fc/Xkofw8Fqa51OTDhBzBz26mmpIWrXAZcPdQ8MSTt883EWncxeCEjasc79NJ89BRi7sOkkaWZo2sXlKvw==", + "requires": { + "@babel/core": "^7.14.0", + "hermes-parser": "0.4.7", + "metro-source-map": "0.66.2", + "nullthrows": "^1.1.1" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/core": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", + "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.5", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", + "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "requires": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", + "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "metro-cache": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.66.2.tgz", + "integrity": "sha512-5QCYJtJOHoBSbL3H4/Fpl36oA697C3oYHqsce+Hk/dh2qtODUGpS3gOBhvP1B8iB+H8jJMyR75lZq129LJEsIQ==", + "requires": { + "metro-core": "0.66.2", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4" + } + }, + "metro-cache-key": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.66.2.tgz", + "integrity": "sha512-WtkNmRt41qOpHh1MkNA4nLiQ/m7iGL90ysSKD+fcLqlUnOBKJptPQm0ZUv8Kfqk18ddWX2KmsSbq+Sf3I6XohQ==" + }, + "metro-config": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.66.2.tgz", + "integrity": "sha512-0C+PrKKIBNNzLZUKN/8ZDJS2U5FLMOTXDWbvBHIdqb6YXz8WplXR2+xlSlaSCCi5b+GR7cWFWUNeKA4GQS1/AQ==", + "requires": { + "cosmiconfig": "^5.0.5", + "jest-validate": "^26.5.2", + "metro": "0.66.2", + "metro-cache": "0.66.2", + "metro-core": "0.66.2", + "metro-runtime": "0.66.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + } + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "metro-core": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.66.2.tgz", + "integrity": "sha512-JieLZkef/516yxXYvQxWnf3OWw5rcgWRy76K8JV/wr/i8LGVGulPAXlIi445/QZzXVydzRVASKAEVqyxM5F4mA==", + "requires": { + "jest-haste-map": "^26.5.2", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.66.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==" + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "metro-hermes-compiler": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.66.2.tgz", + "integrity": "sha512-nCVL1g9uR6vrw5+X1wjwZruRyMkndnzGRMqjqoljf+nGEqBTD607CR7elXw4fMWn/EM+1y0Vdq5altUu9LdgCA==" + }, + "metro-inspector-proxy": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.66.2.tgz", + "integrity": "sha512-gnLc9121eznwP0iiA9tCBW8qZjwIsCgwHWMF1g1Qaki9le9tzeJv3dK4/lFNGxyfSaLO7vahQEhsEYsiRnTROg==", + "requires": { + "connect": "^3.6.5", + "debug": "^2.2.0", + "ws": "^1.1.5", + "yargs": "^15.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "requires": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + } + } + }, + "metro-minify-uglify": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.66.2.tgz", + "integrity": "sha512-7TUK+L5CmB5x1PVnFbgmjzHW4CUadq9H5jgp0HfFoWT1skXAyEsx0DHkKDXwnot0khnNhBOEfl62ctQOnE110Q==", + "requires": { + "uglify-es": "^3.1.9" + } + }, + "metro-react-native-babel-preset": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.66.2.tgz", + "integrity": "sha512-H/nLBAz0MgfDloSe1FjyH4EnbokHFdncyERvLPXDACY3ROVRCeUyFNo70ywRGXW2NMbrV4H7KUyU4zkfWhC2HQ==", + "requires": { + "@babel/core": "^7.14.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-assign": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/core": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", + "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.5", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + } + } + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", + "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "requires": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + } + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", + "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "metro-react-native-babel-transformer": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.66.2.tgz", + "integrity": "sha512-z1ab7ihIT0pJrwgi9q2IH+LcW/xUWMQ0hH+Mrk7wbKQB0RnJdXFoxphrfoVHBHMUu+TBPetUcEkKawkK1e7Cng==", + "requires": { + "@babel/core": "^7.14.0", + "babel-preset-fbjs": "^3.4.0", + "hermes-parser": "0.4.7", + "metro-babel-transformer": "0.66.2", + "metro-react-native-babel-preset": "0.66.2", + "metro-source-map": "0.66.2", + "nullthrows": "^1.1.1" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/core": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", + "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.5", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", + "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "requires": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", + "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "metro-resolver": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.66.2.tgz", + "integrity": "sha512-pXQAJR/xauRf4kWFj2/hN5a77B4jLl0Fom5I3PHp6Arw/KxSBp0cnguXpGLwNQ6zQC0nxKCoYGL9gQpzMnN7Hw==", + "requires": { + "absolute-path": "^0.0.0" + } + }, + "metro-runtime": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.66.2.tgz", + "integrity": "sha512-vFhKBk2ot9FS4b+2v0OTa/guCF/QDAOJubY0CNg7PzCS5+w4y3IvZIcPX4SSS1t8pYEZBLvtdtTDarlDl81xmg==" + }, + "metro-source-map": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.66.2.tgz", + "integrity": "sha512-038tFmB7vSh73VQcDWIbr5O1m+WXWyYafDaOy+1A/2K308YP0oj33gbEgDnZsLZDwcJ+xt1x6KUEBIzlX4YGeQ==", + "requires": { + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.66.2", + "nullthrows": "^1.1.1", + "ob1": "0.66.2", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", + "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "metro-symbolicate": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.66.2.tgz", + "integrity": "sha512-u+DeQHyAFXVD7mVP+GST/894WHJ3i/U8oEJFnT7U3P52ZuLgX8n4tMNxhqZU12RcLR6etF8143aP0Ktx1gFLEQ==", + "requires": { + "invariant": "^2.2.4", + "metro-source-map": "0.66.2", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + } + }, + "metro-transform-plugins": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.66.2.tgz", + "integrity": "sha512-KTvqplh0ut7oDKovvDG6yzXM02R6X+9b2oVG+qYq8Zd3aCGTi51ASx4ThCNkAHyEvCuJdYg9fxXTL+j+wvhB5w==", + "requires": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.14.0", + "nullthrows": "^1.1.1" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/core": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", + "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.5", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + } + } + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", + "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "requires": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + } + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", + "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "metro-transform-worker": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.66.2.tgz", + "integrity": "sha512-dO4PtYOMGB7Vzte8aIzX39xytODhmbJrBYPu+zYzlDjyefJZT7BkZ0LkPIThtyJi96xWcGqi9JBSo0CeRupAHw==", + "requires": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.4.0", + "metro": "0.66.2", + "metro-babel-transformer": "0.66.2", + "metro-cache": "0.66.2", + "metro-cache-key": "0.66.2", + "metro-hermes-compiler": "0.66.2", + "metro-source-map": "0.66.2", + "metro-transform-plugins": "0.66.2", + "nullthrows": "^1.1.1" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/core": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", + "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.5", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", + "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "requires": { + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helpers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "requires": { + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "requires": { - "readable-stream": "^2.0.1" - } - }, - "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "metro": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.56.3.tgz", - "integrity": "sha512-mxHpvBGWanZ46wAEZVLinNO5IYMcFbTdMZIRhC7r+rvoSK6r9iPj95AujBfzLXMAl36RI2O3D7yp5hOYif/gEQ==", - "requires": { - "@babel/core": "^7.0.0", - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/plugin-external-helpers": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "absolute-path": "^0.0.0", - "async": "^2.4.0", - "babel-preset-fbjs": "^3.1.2", - "buffer-crc32": "^0.2.13", - "chalk": "^2.4.1", - "concat-stream": "^1.6.0", - "connect": "^3.6.5", - "debug": "^2.2.0", - "denodeify": "^1.2.1", - "eventemitter3": "^3.0.0", - "fbjs": "^1.0.0", - "fs-extra": "^1.0.0", - "graceful-fs": "^4.1.3", - "image-size": "^0.6.0", - "invariant": "^2.2.4", - "jest-haste-map": "^24.7.1", - "jest-worker": "^24.6.0", - "json-stable-stringify": "^1.0.1", - "lodash.throttle": "^4.1.1", - "merge-stream": "^1.0.1", - "metro-babel-register": "0.56.3", - "metro-babel-transformer": "0.56.3", - "metro-cache": "0.56.3", - "metro-config": "0.56.3", - "metro-core": "0.56.3", - "metro-inspector-proxy": "0.56.3", - "metro-minify-uglify": "0.56.3", - "metro-react-native-babel-preset": "0.56.3", - "metro-resolver": "0.56.3", - "metro-source-map": "0.56.3", - "metro-symbolicate": "0.56.3", - "mime-types": "2.1.11", - "mkdirp": "^0.5.1", - "node-fetch": "^2.2.0", - "nullthrows": "^1.1.0", - "resolve": "^1.5.0", - "rimraf": "^2.5.4", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "temp": "0.8.3", - "throat": "^4.1.0", - "wordwrap": "^1.0.0", - "write-file-atomic": "^1.2.0", - "ws": "^1.1.5", - "xpipe": "^1.0.5", - "yargs": "^9.0.0" - }, - "dependencies": { + }, + "@babel/parser": { + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", + "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", + "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } + } + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -12861,48 +16355,30 @@ } }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" - }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" + "ms": "2.1.2" } }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "requires": { - "graceful-fs": "^4.1.6" + "minimist": "^1.2.5" } }, - "mime-db": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk=" + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, - "mime-types": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "integrity": "sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw=", - "requires": { - "mime-db": "~1.23.0" - } + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "supports-color": { "version": "5.5.0", @@ -12914,187 +16390,6 @@ } } }, - "metro-babel-register": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.56.3.tgz", - "integrity": "sha512-ILCRtNFdW6vzqmLAG2MYWdTSE1vCAZqDKNggiNhlfViuoxmWAIL0vOqixl1CHZF5z4t55+fk46A0jSN7UgPyVw==", - "requires": { - "@babel/core": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/register": "^7.0.0", - "core-js": "^2.2.2", - "escape-string-regexp": "^1.0.5" - } - }, - "metro-babel-transformer": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.56.3.tgz", - "integrity": "sha512-N5/ftb3rBkt6uKlgYAv+lwtzYc4dK0tBpfZ8pjec3kcypGuGTuf4LTHEh65EuzySreLngYI0bQzoFSn3G3DYsw==", - "requires": { - "@babel/core": "^7.0.0", - "metro-source-map": "0.56.3" - } - }, - "metro-cache": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.56.3.tgz", - "integrity": "sha512-SsryVe/TVkt2IkEGnYhB3gQlg9iMlu8WJikQHcCEjMfPEnSIzmeymrX73fwQNPnTnN7F3E0HVjH6Wvq6fh0mcA==", - "requires": { - "jest-serializer": "^24.4.0", - "metro-core": "0.56.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4" - } - }, - "metro-config": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.56.3.tgz", - "integrity": "sha512-C3ZLA5y5gW5auDSQN5dsCTduJg7LXEiX/tLAADOkgXWVImr5P74x9Wt8y1MMWrKx6p+4p5RMDyEwWDMXJt/DwA==", - "requires": { - "cosmiconfig": "^5.0.5", - "jest-validate": "^24.7.0", - "metro": "0.56.3", - "metro-cache": "0.56.3", - "metro-core": "0.56.3", - "pretty-format": "^24.7.0" - } - }, - "metro-core": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.56.3.tgz", - "integrity": "sha512-OAaHP3mBdlACMZRwDJzZzYC0o2S3qfb4BBK75L8H4Ds+y3QUSrjsDEpHACcpaMTOds8rBvjzn+jjB5tqNoHfBA==", - "requires": { - "jest-haste-map": "^24.7.1", - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.56.3", - "wordwrap": "^1.0.0" - } - }, - "metro-inspector-proxy": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.56.3.tgz", - "integrity": "sha512-7WtHinw+VJcunQ3q8El1MqqzYSRvXEjW5QE13VYwcLtnay3pvcqACeiQmGbWI0IqxB1+QH8tf3nkA7z7pQ7Vpw==", - "requires": { - "connect": "^3.6.5", - "debug": "^2.2.0", - "rxjs": "^5.4.3", - "ws": "^1.1.5", - "yargs": "^9.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "metro-minify-uglify": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.56.3.tgz", - "integrity": "sha512-b9ljyeUpkJWVlFy8M/i4aNbvEBI0zN9vJh1jfU7yx+k9dX7FulLnpGmAQxxQdEszcM//sJrsKNS1oLYBxr0NMQ==", - "requires": { - "uglify-es": "^3.1.9" - } - }, - "metro-react-native-babel-preset": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.3.tgz", - "integrity": "sha512-tGPzX2ZwI8vQ8SiNVBPUIgKqmaRNVB6rtJtHCBQZAYRiMbxh0NHCUoFfKBej6U5qVgxiYYHyN8oB23evG4/Oow==", - "requires": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-exponentiation-operator": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-assign": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.0.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "react-refresh": "^0.4.0" - } - }, - "metro-react-native-babel-transformer": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.56.3.tgz", - "integrity": "sha512-T87m4jDu0gIvJo8kWEvkodWFgQ8XBzJUESs1hUUTBSMIqTa31MdWfA1gs+MipadG7OsEJpcb9m83mGr8K70MWw==", - "requires": { - "@babel/core": "^7.0.0", - "babel-preset-fbjs": "^3.1.2", - "metro-babel-transformer": "0.56.3", - "metro-react-native-babel-preset": "0.56.3", - "metro-source-map": "0.56.3" - } - }, - "metro-resolver": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.56.3.tgz", - "integrity": "sha512-VvMl4xUp0fy76WiP3YDtzMmrn6tN/jwxOBqlTy9MjN6R9sUXrGyO5thwn/uKQqp5vwBTuJev7nZL7OKzwludKA==", - "requires": { - "absolute-path": "^0.0.0" - } - }, - "metro-source-map": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.56.3.tgz", - "integrity": "sha512-CheqWbJZSM0zjcNBqELUiocwH3XArrOk6alhVuzJ2gV/WTMBQFwP0TtQssSMwjnouMHNEzY8RxErXKXBk/zJmQ==", - "requires": { - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "invariant": "^2.2.4", - "metro-symbolicate": "0.56.3", - "ob1": "0.56.3", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - } - }, - "metro-symbolicate": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.56.3.tgz", - "integrity": "sha512-fSQtjjy4eiJDThSl9eloxMElhrs+5PQB+DKKzmTFXT8e2GDga+pa1xTBFRUACMO8BXGuWmxR7SnGDw0wo5Ngrw==", - "requires": { - "invariant": "^2.2.4", - "metro-source-map": "0.56.3", - "source-map": "^0.5.6", - "through2": "^2.0.1", - "vlq": "^1.0.0" - } - }, "microevent.ts": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", @@ -13537,42 +16832,20 @@ "version": "13.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "moo": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz", - "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==", - "dev": true - }, - "morgan": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", - "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", - "requires": { - "basic-auth": "~2.0.0", - "debug": "2.6.9", - "depd": "~1.1.2", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { - "ms": "2.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, + "moo": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz", + "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==", + "dev": true + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -13701,6 +16974,11 @@ "lower-case": "^1.1.1" } }, + "nocache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz", + "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==" + }, "node-environment-flags": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", @@ -13720,9 +16998,9 @@ } }, "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, "node-forge": { "version": "0.9.0", @@ -13816,6 +17094,11 @@ "semver": "^6.3.0" } }, + "node-stream-zip": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.14.0.tgz", + "integrity": "sha512-SKXyiBy9DBemsPHf/piHT00Y+iPK+zwru1G6+8UdOBzITnmmPMHYBMV6M1znyzyhDhUFQW0HEmbGiPqtp51M6Q==" + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -13905,9 +17188,9 @@ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, "ob1": { - "version": "0.56.3", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.56.3.tgz", - "integrity": "sha512-3JL2ZyWOHDGTEAe4kcG+TxhGPKCCikgyoUIjE82JnXnmpR1LXItM9K3WhGsi4+O7oYngMW6FjpHHoc5xJTMkTQ==" + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.66.2.tgz", + "integrity": "sha512-RFewnL/RjE0qQBOuM+2bbY96zmJPIge/aDtsiDbLSb+MOiK8CReAhBHDgL+zrA3F1hQk00lMWpUwYcep750plA==" }, "object-assign": { "version": "4.1.1", @@ -14202,47 +17485,6 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - } - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -14373,11 +17615,6 @@ "json-parse-better-errors": "^1.0.1" } }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" - }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -14612,53 +17849,18 @@ } }, "plist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", - "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", - "requires": { - "base64-js": "^1.2.3", - "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" - } - }, - "plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz", + "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==", "requires": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7" }, "dependencies": { - "arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", - "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - } - }, - "arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=" - }, - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", - "requires": { - "kind-of": "^1.1.0" - } - }, - "kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=" + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" } } }, @@ -15792,11 +18994,11 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", + "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", "requires": { - "asap": "~2.0.3" + "asap": "~2.0.6" } }, "promise-inflight": { @@ -15848,11 +19050,6 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, "psl": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", @@ -16233,28 +19430,18 @@ } }, "react-devtools-core": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-3.6.3.tgz", - "integrity": "sha512-+P+eFy/yo8Z/UH9J0DqHZuUM5+RI2wl249TNvMx3J2jpUomLQa4Zxl56GEotGfw3PIP1eI+hVf1s53FlUONStQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.18.0.tgz", + "integrity": "sha512-Kg/LhDkdt9J0ned1D1RfeuSdX4cKW83/valJLYswGdsYc0g2msmD0kfYozsaRacjDoZwcKlxGOES1wrkET5O6Q==", "requires": { "shell-quote": "^1.6.1", - "ws": "^3.3.1" + "ws": "^7" }, "dependencies": { - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.4.tgz", + "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==" } } }, @@ -16310,140 +19497,248 @@ "dev": true }, "react-native": { - "version": "0.61.5", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.61.5.tgz", - "integrity": "sha512-MXqE3NoGO0T3dUKIKkIppijBhRRMpfN6ANbhMXHDuyfA+fSilRWgCwYgR/YNCC7ntECoJYikKaNTUBB0DeQy6Q==", - "requires": { - "@babel/runtime": "^7.0.0", - "@react-native-community/cli": "^3.0.0", - "@react-native-community/cli-platform-android": "^3.0.0", - "@react-native-community/cli-platform-ios": "^3.0.0", + "version": "0.65.1", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.65.1.tgz", + "integrity": "sha512-0UOVSnlssweQZjuaUtzViCifE/4tXm8oRbxwakopc8GavPu9vLulde145GOw6QVYiOy4iL50f+2XXRdX9NmMeQ==", + "requires": { + "@jest/create-cache-key-function": "^27.0.1", + "@react-native-community/cli": "^6.0.0", + "@react-native-community/cli-platform-android": "^6.0.0", + "@react-native-community/cli-platform-ios": "^6.0.0", + "@react-native/assets": "1.0.0", + "@react-native/normalize-color": "1.0.0", + "@react-native/polyfills": "1.0.0", "abort-controller": "^3.0.0", - "art": "^0.10.0", + "anser": "^1.4.9", "base64-js": "^1.1.2", - "connect": "^3.6.5", - "create-react-class": "^15.6.3", - "escape-string-regexp": "^1.0.5", "event-target-shim": "^5.0.1", - "fbjs": "^1.0.0", - "fbjs-scripts": "^1.1.0", - "hermes-engine": "^0.2.1", + "hermes-engine": "~0.8.1", "invariant": "^2.2.4", - "jsc-android": "^245459.0.0", - "metro-babel-register": "^0.56.0", - "metro-react-native-babel-transformer": "^0.56.0", - "metro-source-map": "^0.56.0", - "nullthrows": "^1.1.0", - "pretty-format": "^24.7.0", - "promise": "^7.1.1", + "jsc-android": "^250230.2.1", + "metro-babel-register": "0.66.2", + "metro-react-native-babel-transformer": "0.66.2", + "metro-runtime": "0.66.2", + "metro-source-map": "0.66.2", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.0.3", "prop-types": "^15.7.2", - "react-devtools-core": "^3.6.3", + "react-devtools-core": "^4.6.0", "react-refresh": "^0.4.0", "regenerator-runtime": "^0.13.2", - "scheduler": "0.15.0", + "scheduler": "^0.20.2", "stacktrace-parser": "^0.1.3", - "whatwg-fetch": "^3.0.0" + "use-subscription": "^1.0.0", + "whatwg-fetch": "^3.0.0", + "ws": "^6.1.4" }, "dependencies": { - "@react-native-community/cli": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-3.0.4.tgz", - "integrity": "sha512-kt+ENtC+eRUSfWPbbpx3r7fAQDcFwgM03VW/lBdVAUjkNxffPFT2GGdK23CJSBOXTjRSiGuwhvwH4Z28PdrlRA==", + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "requires": { - "@hapi/joi": "^15.0.3", - "@react-native-community/cli-debugger-ui": "^3.0.0", - "@react-native-community/cli-tools": "^3.0.0", - "@react-native-community/cli-types": "^3.0.0", - "chalk": "^2.4.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@react-native-community/cli": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-6.0.0.tgz", + "integrity": "sha512-wTbdpai58WzUBrw8lNbF/cSzX3pOWz+y+d46ip3M3Abd5yHNRvhuejRMVQC1o9luOM+ESJa4imYSbVdh7y5g+w==", + "requires": { + "@react-native-community/cli-debugger-ui": "^6.0.0-rc.0", + "@react-native-community/cli-hermes": "^6.0.0", + "@react-native-community/cli-server-api": "^6.0.0-rc.0", + "@react-native-community/cli-tools": "^6.0.0-rc.0", + "@react-native-community/cli-types": "^6.0.0", + "appdirsjs": "^1.2.4", + "chalk": "^3.0.0", "command-exists": "^1.2.8", "commander": "^2.19.0", - "compression": "^1.7.1", - "connect": "^3.6.5", "cosmiconfig": "^5.1.0", "deepmerge": "^3.2.0", - "envinfo": "^7.1.0", - "errorhandler": "^1.5.0", + "envinfo": "^7.7.2", "execa": "^1.0.0", "find-up": "^4.1.0", - "fs-extra": "^7.0.1", - "glob": "^7.1.1", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", "graceful-fs": "^4.1.3", - "inquirer": "^3.0.6", - "lodash": "^4.17.5", - "metro": "^0.56.0", - "metro-config": "^0.56.0", - "metro-core": "^0.56.0", - "metro-react-native-babel-transformer": "^0.56.0", + "joi": "^17.2.1", + "leven": "^3.1.0", + "lodash": "^4.17.15", + "metro": "^0.66.1", + "metro-config": "^0.66.1", + "metro-core": "^0.66.1", + "metro-react-native-babel-transformer": "^0.66.1", + "metro-resolver": "^0.66.1", + "metro-runtime": "^0.66.1", "minimist": "^1.2.0", "mkdirp": "^0.5.1", - "morgan": "^1.9.0", - "node-notifier": "^5.2.1", - "open": "^6.2.0", + "node-stream-zip": "^1.9.1", "ora": "^3.4.0", - "plist": "^3.0.0", + "pretty-format": "^26.6.2", + "prompts": "^2.4.0", "semver": "^6.3.0", "serve-static": "^1.13.1", - "shell-quote": "1.6.1", "strip-ansi": "^5.2.0", "sudo-prompt": "^9.0.0", - "wcwidth": "^1.0.1", - "ws": "^1.1.0" + "wcwidth": "^1.0.1" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "requires": { + "@types/yargs-parser": "*" } }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" } }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, "scheduler": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz", - "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + } } }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } }, "react-refresh": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.2.tgz", - "integrity": "sha512-kv5QlFFSZWo7OlJFNYbxRtY66JImuP2LcrFgyJfQaf85gSP+byzG21UbDQEYjU7f//ny8rwiEkO6py2Y+fEgAQ==" + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==" }, "react-router": { "version": "5.1.2", @@ -17260,27 +20555,6 @@ "aproba": "^1.1.1" } }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "requires": { - "rx-lite": "*" - } - }, - "rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "requires": { - "symbol-observable": "1.0.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -17718,9 +20992,9 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "simple-plist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.0.tgz", - "integrity": "sha512-2i5Tc0BYAqppM7jVzmNrI+aEUntPolIq4fDgji6WuNNn1D/qYdn2KwoLhZdzQkE04lu9L5tUoeJsjuJAvd+lFg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.1.tgz", + "integrity": "sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg==", "requires": { "bplist-creator": "0.0.8", "bplist-parser": "0.2.0", @@ -17804,11 +21078,6 @@ } } }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -18138,10 +21407,15 @@ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" }, + "stackframe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==" + }, "stacktrace-parser": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.8.tgz", - "integrity": "sha512-ig5rHJSdJrAsVqdb3oAI/8C6aQ7dEwJXoy/TIEIOTzdJHssmn12o6RsFoeQSLHoKjq0lX+kqhmnLDpyQTuWiJA==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", "requires": { "type-fest": "^0.7.1" } @@ -18379,9 +21653,9 @@ } }, "sudo-prompt": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", - "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==" + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==" }, "supports-color": { "version": "2.0.0", @@ -18441,11 +21715,6 @@ } } }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" - }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -18698,11 +21967,6 @@ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" - }, "timers-browserify": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", @@ -18882,11 +22146,6 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "ua-parser-js": { - "version": "0.7.20", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", - "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==" - }, "uglify-es": { "version": "3.3.9", "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", @@ -19095,6 +22354,14 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, + "use-subscription": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", + "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==", + "requires": { + "object-assign": "^4.1.1" + } + }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", @@ -19919,11 +23186,6 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, "workbox-background-sync": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", @@ -20143,29 +23405,18 @@ "mkdirp": "^0.5.1" } }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, "ws": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", - "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "requires": { - "options": ">=0.0.5", - "ultron": "1.0.x" + "async-limiter": "~1.0.0" } }, "xcode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.0.0.tgz", - "integrity": "sha512-5xF6RCjAdDEiEsbbZaS/gBRt3jZ/177otZcpoLCjGN/u1LrfgH7/Sgeeavpr/jELpyDqN2im3AKosl2G2W8hfw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.1.0.tgz", + "integrity": "sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ==", "requires": { "simple-plist": "^1.0.0", "uuid": "^3.3.2" @@ -20194,16 +23445,6 @@ "sax": "^1.2.1" } }, - "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" - }, - "xpipe": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz", - "integrity": "sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98=" - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -20214,11 +23455,6 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, "yaml": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz", @@ -20228,45 +23464,75 @@ } }, "yargs": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", - "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", - "requires": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "read-pkg-up": "^2.0.0", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^7.0.0" + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" } } }, "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - } + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } }, "yargs-unparser": { diff --git a/frontend/package.json b/frontend/package.json index 89a1404f..04e7675e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,7 +10,7 @@ "http-proxy-middleware": "^0.20.0", "react": "^16.12.0", "react-dom": "^16.12.0", - "react-native": "^0.61.5", + "react-native": "^0.65.1", "react-router-dom": "^5.1.2", "react-scripts": "^3.3.0" }, diff --git a/frontend/src/components/App.test.js b/frontend/src/components/App.test.js index 6b89afa8..483a2911 100755 --- a/frontend/src/components/App.test.js +++ b/frontend/src/components/App.test.js @@ -17,11 +17,11 @@ describe("App", () => { const actualPuzzleCards = component.instance().addPuzzleCards(); expect( - actualPuzzleCards.map(card => card.props.result) + actualPuzzleCards.map(card => card.props.result) ).to.have.all.members(expectedResults); expect( - actualPuzzleCards.map(card => card.props.cardType) + actualPuzzleCards.map(card => card.props.cardType) ).to.have.all.members(["puzzleCard", "puzzleCard", "puzzleCard"]); expect(actualPuzzleCards.map(card => card.props.day)).to.have.all.members([ @@ -47,22 +47,22 @@ describe("App", () => { expect(component.children().getElements().length).to.equal(2); expect(component.childAt(0).name()).to.equal( - "WithStyles(PrimarySearchAppBar)" + "WithStyles(PrimarySearchAppBar)" ); expect(component.childAt(1).name()).to.equal("WithStyles(ForwardRef(Grid))"); expect( - component - .childAt(1) - .children() - .getElements().length - ).to.equal(3); + component + .childAt(1) + .children() + .getElements().length + ).to.equal(1); expect( - component - .childAt(1) - .childAt(0) - .name() + component + .childAt(1) + .childAt(0) + .name() ).to.equal("WithStyles(CardTemplate)"); }); @@ -71,4 +71,4 @@ describe("App", () => { ReactDOM.render(, div); ReactDOM.unmountComponentAtNode(div); }); -}); +}); \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 73f2f913..2aceeb5d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Sat Jan 12 18:02:33 CET 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-all.zip From 51b0655a0cbec1175ae8d1432a31bd7764c483a9 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Mon, 6 Sep 2021 12:02:50 +0200 Subject: [PATCH 26/36] Heroku: add ne FE tests fix (Michelles repo) --- frontend/package-lock.json | 3753 +++++++++++++++++++----------------- 1 file changed, 1985 insertions(+), 1768 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index c6015870..1d105889 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -106,43 +106,14 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz", + "integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==", "requires": { "@babel/compat-data": "^7.15.0", "@babel/helper-validator-option": "^7.14.5", "browserslist": "^4.16.6", "semver": "^6.3.0" - }, - "dependencies": { - "browserslist": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", - "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", - "requires": { - "caniuse-lite": "^1.0.30001254", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.830", - "escalade": "^3.1.1", - "node-releases": "^1.1.75" - } - }, - "caniuse-lite": { - "version": "1.0.30001255", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001255.tgz", - "integrity": "sha512-F+A3N9jTZL882f/fg/WWVnKSu6IOo3ueLz4zwaOPbPYHNmM/ZaDUyzyJwS1mZhX7Ex5jqTyW599Gdelh5PDYLQ==" - }, - "electron-to-chromium": { - "version": "1.3.830", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.830.tgz", - "integrity": "sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ==" - }, - "node-releases": { - "version": "1.1.75", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", - "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==" - } } }, "@babel/helper-create-class-features-plugin": { @@ -201,47 +172,47 @@ } }, "@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", "requires": { - "@babel/types": "^7.15.4", + "@babel/types": "^7.15.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-plugin-utils": { @@ -250,11 +221,11 @@ "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/highlight": { @@ -268,40 +239,40 @@ } }, "@babel/parser": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", - "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==" }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -475,17 +446,17 @@ } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", - "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", + "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -1172,11 +1143,11 @@ }, "dependencies": { "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-plugin-utils": { @@ -1185,9 +1156,9 @@ "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" }, "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -1708,11 +1679,84 @@ } }, "@jest/create-cache-key-function": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.1.0.tgz", - "integrity": "sha512-5e0W3f03q8qupqRYxcRW94di/2BtkW5I6BxSl8HJWf+NtdnVWBkl8zh0F/Xe0pcJayF+BiMr3LZ1OfYV447R3w==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.0.6.tgz", + "integrity": "sha512-lDksBmA5/VkfVGs+GqF8DSM3HbJLmF5l57BqETj1CAceOVZTZI3FZQEegVNTDDnJ9bl8I0TFdc6fv1QjycQprA==", "requires": { - "@jest/types": "^27.1.0" + "@jest/types": "^27.0.6" + }, + "dependencies": { + "@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } } }, "@jest/environment": { @@ -2114,37 +2158,32 @@ } }, "@jest/types": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.0.tgz", - "integrity": "sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g==", + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.0.1.tgz", + "integrity": "sha512-IbtjvqI9+eS1qFnOIEL7ggWmT+iK/U+Vde9cGWtYb/b6XgKb3X44ZAe/z9YZzoAAZ/E92m0DqrilF934IGNnQA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", "chalk": "^4.0.0" }, "dependencies": { - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "requires": { - "@types/istanbul-lib-report": "*" - } - }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, "requires": { + "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2154,6 +2193,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -2161,17 +2201,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -2399,11 +2442,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -2468,11 +2506,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2519,14 +2552,6 @@ "@types/istanbul-lib-report": "*" } }, - "@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -2650,11 +2675,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "mime": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", @@ -2749,9 +2769,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true } } @@ -2908,6 +2928,12 @@ "@babel/types": "^7.3.0" } }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", @@ -3011,9 +3037,9 @@ "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", "requires": { "@types/yargs-parser": "*" } @@ -3281,9 +3307,9 @@ } }, "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==" + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" }, "acorn-globals": { "version": "4.3.4", @@ -4235,42 +4261,15 @@ "core-js-compat": "^3.14.0" }, "dependencies": { - "browserslist": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", - "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", - "requires": { - "caniuse-lite": "^1.0.30001254", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.830", - "escalade": "^3.1.1", - "node-releases": "^1.1.75" - } - }, - "caniuse-lite": { - "version": "1.0.30001255", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001255.tgz", - "integrity": "sha512-F+A3N9jTZL882f/fg/WWVnKSu6IOo3ueLz4zwaOPbPYHNmM/ZaDUyzyJwS1mZhX7Ex5jqTyW599Gdelh5PDYLQ==" - }, "core-js-compat": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.17.2.tgz", - "integrity": "sha512-lHnt7A1Oqplebl5i0MrQyFv/yyEzr9p29OjlkcsFRDDgHwwQyVckfRGJ790qzXhkwM8ba4SFHHa2sO+T5f1zGg==", + "version": "3.16.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.16.3.tgz", + "integrity": "sha512-A/OtSfSJQKLAFRVd4V0m6Sep9lPdjD8bpN8v3tCCGwE0Tmh0hOiVDm9tw6mXmWOKOSZIyr3EkywPo84cJjGvIQ==", "requires": { "browserslist": "^4.16.8", "semver": "7.0.0" } }, - "electron-to-chromium": { - "version": "1.3.830", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.830.tgz", - "integrity": "sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ==" - }, - "node-releases": { - "version": "1.1.75", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", - "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==" - }, "semver": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", @@ -5479,13 +5478,32 @@ } }, "browserslist": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz", - "integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==", + "version": "4.16.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.8.tgz", + "integrity": "sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ==", "requires": { - "caniuse-lite": "^1.0.30001015", - "electron-to-chromium": "^1.3.322", - "node-releases": "^1.1.42" + "caniuse-lite": "^1.0.30001251", + "colorette": "^1.3.0", + "electron-to-chromium": "^1.3.811", + "escalade": "^3.1.1", + "node-releases": "^1.1.75" + }, + "dependencies": { + "caniuse-lite": { + "version": "1.0.30001251", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz", + "integrity": "sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A==" + }, + "electron-to-chromium": { + "version": "1.3.817", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.817.tgz", + "integrity": "sha512-Vw0Faepf2Id9Kf2e97M/c99qf168xg86JLKDxivvlpBQ9KDtjSeX0v+TiuSE25PqeQfTz+NJs375b64ca3XOIQ==" + }, + "node-releases": { + "version": "1.1.75", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", + "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==" + } } }, "bser": { @@ -5693,6 +5711,11 @@ "supports-color": "^2.0.0" } }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -5923,9 +5946,9 @@ } }, "classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" }, "clean-css": { "version": "4.2.1", @@ -7037,9 +7060,9 @@ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" }, "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "requires": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" @@ -7135,14 +7158,6 @@ "domelementtype": "1" } }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "requires": { - "is-obj": "^1.0.0" - } - }, "dotenv": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", @@ -7183,23 +7198,25 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, - "electron-to-chromium": { - "version": "1.3.322", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", - "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==" - }, "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } } }, "emoji-regex": { @@ -7491,9 +7508,9 @@ } }, "eslint": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.7.2.tgz", - "integrity": "sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "requires": { "@babel/code-frame": "^7.0.0", "ajv": "^6.10.0", @@ -7534,18 +7551,10 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { - "ansi-escapes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", - "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", - "requires": { - "type-fest": "^0.8.1" - } - }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "ansi-styles": { "version": "3.2.1", @@ -7565,116 +7574,35 @@ "supports-color": "^5.3.0" } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "figures": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", - "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "requires": { - "escape-string-regexp": "^1.0.5" + "ms": "2.1.2" } }, "globals": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", - "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "requires": { "type-fest": "^0.8.1" } }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, - "inquirer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", - "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "requires": { - "mimic-fn": "^2.1.0" - } + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "regexpp": { "version": "2.0.1", @@ -7686,56 +7614,12 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", - "requires": { - "tslib": "^1.9.0" - } - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - } } }, "supports-color": { @@ -7883,9 +7767,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" } } }, @@ -8295,6 +8179,16 @@ } } }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -8530,14 +8424,6 @@ "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", @@ -8555,11 +8441,6 @@ "schema-utils": "^2.5.0" } }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -8693,149 +8574,6 @@ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, - "fork-ts-checker-webpack-plugin": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.0.tgz", - "integrity": "sha512-6OkRfjuNMNqb14f01xokcWcKV5Ekknc2FvziNpcTYru+kxIYFA2MtuuBI19MHThZnjSBhoi35Dcq+I0oUkFjmQ==", - "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^2.0.4", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -9453,9 +9191,9 @@ } }, "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "requires": { "is-glob": "^4.0.1" } @@ -9564,34 +9302,6 @@ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==" }, - "handlebars": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", - "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "uglify-js": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.2.tgz", - "integrity": "sha512-uhRwZcANNWVLrxLfNFEdltoPNhECUR3lc+UdJoG9CBpMcSnKyWA94tc3eAujB1GcMY5Uwq8ZMp4qWpxWYDQmaA==", - "optional": true, - "requires": { - "commander": "~2.20.3", - "source-map": "~0.6.1" - } - } - } - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -9778,9 +9488,9 @@ } }, "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "hpack.js": { "version": "2.1.6", @@ -9838,6 +9548,11 @@ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, "html-minifier": { "version": "3.5.21", "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", @@ -9946,9 +9661,9 @@ "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" }, "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "requires": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -10110,9 +9825,168 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + } + } }, "internal-ip": { "version": "4.3.0", @@ -10277,6 +10151,11 @@ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -10528,11 +10407,11 @@ } }, "istanbul-reports": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", - "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", "requires": { - "handlebars": "^4.1.2" + "html-escaper": "^2.0.0" } }, "jest": { @@ -11668,13 +11547,12 @@ } }, "jest-mock": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.0.tgz", - "integrity": "sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w==", + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.0.1.tgz", + "integrity": "sha512-MpYTBqycuPYSY6xKJognV7Ja46/TeRbAZept987Zp+tuJvMN0YBWyyhG9mXyYQaU3SBI0TUlSaO5L3p49agw7Q==", "dev": true, "requires": { - "@jest/types": "^27.1.0", - "@types/node": "*" + "@jest/types": "^26.0.1" } }, "jest-pnp-resolver": { @@ -12018,9 +11896,9 @@ } }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yargs": { "version": "13.3.0", @@ -12040,9 +11918,9 @@ } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -12568,13 +12446,10 @@ } }, "ws": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.0.tgz", - "integrity": "sha512-+SqNqFbwTm/0DC18KYzIsMTnEWpLwJsiasW/O17la4iDRRIO9uaHbvKiAS3AHgTiuuWerK/brj4O6MYZkei9xg==", - "dev": true, - "requires": { - "async-limiter": "^1.0.0" - } + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "dev": true } } }, @@ -12751,9 +12626,9 @@ "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "klaw": { "version": "1.3.1", @@ -12860,6 +12735,19 @@ "pinkie-promise": "^2.0.0" } }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", @@ -12912,9 +12800,9 @@ } }, "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash._reinterpolate": { "version": "3.0.0", @@ -13136,9 +13024,9 @@ } }, "merge-deep": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", - "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz", + "integrity": "sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==", "requires": { "arr-union": "^3.1.0", "clone-deep": "^0.2.4", @@ -13235,19 +13123,19 @@ }, "dependencies": { "@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -13265,19 +13153,19 @@ } }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13294,19 +13182,19 @@ } }, "@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", "requires": { - "@babel/types": "^7.15.4", + "@babel/types": "^7.15.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13315,13 +13203,13 @@ } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/code-frame": { @@ -13333,19 +13221,19 @@ } }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13354,17 +13242,17 @@ } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13373,17 +13261,17 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13392,17 +13280,17 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.15.0" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13411,17 +13299,17 @@ } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13430,18 +13318,18 @@ } }, "@babel/helper-module-transforms": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", - "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" }, "dependencies": { "@babel/code-frame": { @@ -13453,19 +13341,19 @@ } }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13474,17 +13362,17 @@ } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13493,20 +13381,20 @@ } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13515,17 +13403,17 @@ } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.8" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13534,17 +13422,17 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13553,13 +13441,13 @@ } }, "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", + "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" }, "dependencies": { "@babel/code-frame": { @@ -13571,19 +13459,19 @@ } }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13614,22 +13502,22 @@ } }, "@babel/parser": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", - "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==" }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -13643,9 +13531,9 @@ } }, "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -13681,14 +13569,6 @@ "@types/istanbul-lib-report": "*" } }, - "@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -13910,11 +13790,6 @@ "mime-db": "1.49.0" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -13981,19 +13856,19 @@ } }, "@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -14003,115 +13878,115 @@ } }, "@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", "requires": { - "@babel/types": "^7.15.4", + "@babel/types": "^7.15.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.15.0" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-module-transforms": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", - "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.8" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", + "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" } }, "@babel/highlight": { @@ -14125,40 +14000,40 @@ } }, "@babel/parser": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", - "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==" }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -14198,11 +14073,6 @@ "minimist": "^1.2.5" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -14238,19 +14108,19 @@ } }, "@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -14260,115 +14130,115 @@ } }, "@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", "requires": { - "@babel/types": "^7.15.4", + "@babel/types": "^7.15.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.15.0" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-module-transforms": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", - "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.8" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", + "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" } }, "@babel/highlight": { @@ -14382,40 +14252,40 @@ } }, "@babel/parser": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", - "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==" }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -14455,11 +14325,6 @@ "minimist": "^1.2.5" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -14523,14 +14388,6 @@ "@types/istanbul-lib-report": "*" } }, - "@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -14650,14 +14507,6 @@ "@types/istanbul-lib-report": "*" } }, - "@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -14885,19 +14734,19 @@ } }, "@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -14907,161 +14756,161 @@ }, "dependencies": { "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } } } }, "@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", "requires": { - "@babel/types": "^7.15.4", + "@babel/types": "^7.15.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } } } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.15.0" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-module-transforms": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", - "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" }, "dependencies": { "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } } } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.8" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", + "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" }, "dependencies": { "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } } } @@ -15077,30 +14926,30 @@ } }, "@babel/parser": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", - "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==" }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -15140,11 +14989,6 @@ "minimist": "^1.2.5" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -15183,19 +15027,19 @@ } }, "@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -15205,115 +15049,115 @@ } }, "@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", "requires": { - "@babel/types": "^7.15.4", + "@babel/types": "^7.15.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.15.0" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-module-transforms": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", - "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.8" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", + "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" } }, "@babel/highlight": { @@ -15327,40 +15171,40 @@ } }, "@babel/parser": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", - "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==" }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -15400,11 +15244,6 @@ "minimist": "^1.2.5" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -15457,19 +15296,19 @@ } }, "@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", "requires": { - "@babel/types": "^7.15.4", + "@babel/types": "^7.15.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -15478,19 +15317,19 @@ } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -15499,17 +15338,17 @@ } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -15518,17 +15357,17 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -15537,17 +15376,17 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -15566,24 +15405,24 @@ } }, "@babel/parser": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", - "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==" }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -15592,25 +15431,25 @@ } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -15693,19 +15532,19 @@ } }, "@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -15715,161 +15554,161 @@ }, "dependencies": { "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } } } }, "@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", "requires": { - "@babel/types": "^7.15.4", + "@babel/types": "^7.15.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } } } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.15.0" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-module-transforms": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", - "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" }, "dependencies": { "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } } } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.8" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" } }, "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", + "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" }, "dependencies": { "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } } } @@ -15885,30 +15724,30 @@ } }, "@babel/parser": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", - "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==" }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -15948,11 +15787,6 @@ "minimist": "^1.2.5" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -15997,19 +15831,19 @@ } }, "@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -16019,9 +15853,9 @@ }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16030,19 +15864,19 @@ } }, "@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", "requires": { - "@babel/types": "^7.15.4", + "@babel/types": "^7.15.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16051,19 +15885,19 @@ } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16072,17 +15906,17 @@ } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16091,17 +15925,17 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16110,17 +15944,17 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.15.0" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16129,17 +15963,17 @@ } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16148,24 +15982,24 @@ } }, "@babel/helper-module-transforms": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", - "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16174,17 +16008,17 @@ } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16193,20 +16027,20 @@ } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16215,17 +16049,17 @@ } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.8" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16234,17 +16068,17 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16253,19 +16087,19 @@ } }, "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", + "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16284,24 +16118,24 @@ } }, "@babel/parser": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz", - "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==" + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==" }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16310,25 +16144,25 @@ } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", "requires": { "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/types": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz", - "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -16370,11 +16204,6 @@ "minimist": "^1.2.5" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -16497,9 +16326,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minipass": { "version": "3.1.1", @@ -16593,18 +16422,11 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } + "minimist": "^1.2.5" } }, "mocha": { @@ -16715,6 +16537,21 @@ "path-exists": "^3.0.0" } }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -16805,9 +16642,9 @@ } }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yargs": { @@ -16878,11 +16715,6 @@ "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" - }, "nan": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", @@ -17002,11 +16834,6 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, - "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==" - }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -17086,14 +16913,6 @@ } } }, - "node-releases": { - "version": "1.1.42", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.42.tgz", - "integrity": "sha512-OQ/ESmUqGawI2PRX+XIRao44qWYBBfN54ImQYdWVTQqUckuejOg76ysSqDBK8NG3zwySRVnX36JwDQ6x+9GxzA==", - "requires": { - "semver": "^6.3.0" - } - }, "node-stream-zip": { "version": "1.14.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.14.0.tgz", @@ -17370,27 +17189,6 @@ "is-wsl": "^1.1.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } - } - }, "optimize-css-assets-webpack-plugin": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", @@ -17667,9 +17465,9 @@ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-to-regexp": { "version": "1.8.0", @@ -17795,66 +17593,14 @@ } } }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "requires": { - "find-up": "^2.1.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, "plist": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz", - "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.3.tgz", + "integrity": "sha512-ghdOKN99hh1oEmAlwBmPYo4L+tSQ7O3jRpkhWqOrMz86CWotpVzMevvQ+czo7oPDpOZyA6K06Ci7QVHpoh9gaA==", "requires": { "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7" + "xmlbuilder": "^9.0.7", + "xmldom": "^0.6.0" }, "dependencies": { "base64-js": { @@ -17883,13 +17629,13 @@ "integrity": "sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw==" }, "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", "requires": { "async": "^2.6.2", "debug": "^3.1.1", - "mkdirp": "^0.5.1" + "mkdirp": "^0.5.5" } }, "posix-character-classes": { @@ -17898,9 +17644,9 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.24.tgz", - "integrity": "sha512-Xl0XvdNWg+CblAXzNvbSOUvgJXwSjmbAKORqyw9V2AlHrm1js2gFw9y3jibBAhpKZi8b5JzJCVh/FyzPsTtgTA==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -18373,6 +18119,16 @@ "dot-prop": "^4.1.1", "indexes-of": "^1.0.1", "uniq": "^1.0.1" + }, + "dependencies": { + "dot-prop": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", + "requires": { + "is-obj": "^1.0.0" + } + } } } } @@ -18450,6 +18206,16 @@ "dot-prop": "^4.1.1", "indexes-of": "^1.0.1", "uniq": "^1.0.1" + }, + "dependencies": { + "dot-prop": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", + "requires": { + "is-obj": "^1.0.0" + } + } } } } @@ -19257,40 +19023,66 @@ } }, "react-dev-utils": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.0.0.tgz", - "integrity": "sha512-8OKSJvl8ccXJDNf0YGw377L9v1OnT16skD/EuZWm0M/yr255etP4x4kuUCT1EfFfJ7Rhc4ZTpPTfPrvgiXa50Q==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz", + "integrity": "sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ==", "requires": { - "@babel/code-frame": "7.5.5", + "@babel/code-frame": "7.8.3", "address": "1.1.2", - "browserslist": "4.7.3", + "browserslist": "4.10.0", "chalk": "2.4.2", - "cross-spawn": "6.0.5", + "cross-spawn": "7.0.1", "detect-port-alt": "1.1.6", - "escape-string-regexp": "1.0.5", - "filesize": "3.6.1", - "find-up": "3.0.0", - "fork-ts-checker-webpack-plugin": "3.1.0", + "escape-string-regexp": "2.0.0", + "filesize": "6.0.1", + "find-up": "4.1.0", + "fork-ts-checker-webpack-plugin": "3.1.1", "global-modules": "2.0.0", "globby": "8.0.2", "gzip-size": "5.1.1", "immer": "1.10.0", - "inquirer": "6.5.0", + "inquirer": "7.0.4", "is-root": "2.1.0", "loader-utils": "1.2.3", - "open": "^7.0.0", - "pkg-up": "2.0.0", - "react-error-overlay": "^6.0.4", + "open": "^7.0.2", + "pkg-up": "3.1.0", + "react-error-overlay": "^6.0.7", "recursive-readdir": "2.2.2", "shell-quote": "1.7.2", - "strip-ansi": "5.2.0", + "strip-ansi": "6.0.0", "text-table": "0.2.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "requires": { + "type-fest": "^0.21.3" + } + }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { "version": "3.2.1", @@ -19300,16 +19092,36 @@ "color-convert": "^1.9.0" } }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, "browserslist": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.3.tgz", - "integrity": "sha512-jWvmhqYpx+9EZm/FxcZSbUZyDEvDTLDi3nSAKbzEkyWvtI0mNSmUosey+5awDW1RUlrgXbQb5A6qY1xQH9U6MQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz", + "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==", "requires": { - "caniuse-lite": "^1.0.30001010", - "electron-to-chromium": "^1.3.306", - "node-releases": "^1.1.40" + "caniuse-lite": "^1.0.30001035", + "electron-to-chromium": "^1.3.378", + "node-releases": "^1.1.52", + "pkg-up": "^3.1.0" } }, + "caniuse-lite": { + "version": "1.0.30001251", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz", + "integrity": "sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A==" + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -19318,71 +19130,287 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + } + } + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "electron-to-chromium": { + "version": "1.3.817", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.817.tgz", + "integrity": "sha512-Vw0Faepf2Id9Kf2e97M/c99qf168xg86JLKDxivvlpBQ9KDtjSeX0v+TiuSE25PqeQfTz+NJs375b64ca3XOIQ==" + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + } + } + }, + "filesize": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", + "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "inquirer": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "is-docker": "^2.0.0" } }, - "find-up": { + "locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "locate-path": "^3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "inquirer": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", - "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + } } }, - "is-wsl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", - "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==" + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, - "locate-path": { + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node-releases": { + "version": "1.1.75", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", + "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==" + }, + "normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "mimic-fn": "^2.1.0" } }, "open": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.0.tgz", - "integrity": "sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", "requires": { - "is-wsl": "^2.1.0" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" } }, "p-locate": { @@ -19398,25 +19426,97 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, - "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + } + } + }, + "react-error-overlay": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", + "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "requires": { - "tslib": "^1.9.0" + "shebang-regex": "^3.0.0" } }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, "shell-quote": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } }, "supports-color": { @@ -19426,22 +19526,44 @@ "requires": { "has-flag": "^3.0.0" } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } } } }, "react-devtools-core": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.18.0.tgz", - "integrity": "sha512-Kg/LhDkdt9J0ned1D1RfeuSdX4cKW83/valJLYswGdsYc0g2msmD0kfYozsaRacjDoZwcKlxGOES1wrkET5O6Q==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.17.0.tgz", + "integrity": "sha512-+9/aF7Gc8gswkAsoyUyQdIrhKHY/hOaMdK0oPIHuxzckJC5Cd4R1Mx75DKaqn84znwrYvXQ65kAseA+X44jMTw==", "requires": { "shell-quote": "^1.6.1", "ws": "^7" }, "dependencies": { "ws": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.4.tgz", - "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==" + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==" } } }, @@ -19456,11 +19578,6 @@ "scheduler": "^0.18.0" } }, - "react-error-overlay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.4.tgz", - "integrity": "sha512-ueZzLmHltszTshDMwyfELDq8zOA803wQ1ZuzCccXa1m57k1PxSHfflPD5W9YIiTXLs0JTLzoj6o1LuM5N6zzNA==" - }, "react-hot-loader": { "version": "4.12.18", "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.12.18.tgz", @@ -19608,14 +19725,6 @@ "@types/istanbul-lib-report": "*" } }, - "@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -19666,11 +19775,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", @@ -20325,9 +20429,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" } } }, @@ -20555,6 +20659,14 @@ "aproba": "^1.1.1" } }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -20673,6 +20785,13 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } } }, "to-regex-range": { @@ -20760,11 +20879,18 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", "requires": { - "node-forge": "0.9.0" + "node-forge": "^0.10.0" + }, + "dependencies": { + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + } } }, "semver": { @@ -21389,9 +21515,9 @@ } }, "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.1.tgz", + "integrity": "sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw==", "requires": { "figgy-pudding": "^3.5.1", "minipass": "^3.1.1" @@ -21648,6 +21774,16 @@ "dot-prop": "^4.1.1", "indexes-of": "^1.0.1", "uniq": "^1.0.1" + }, + "dependencies": { + "dot-prop": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", + "requires": { + "is-obj": "^1.0.0" + } + } } } } @@ -22341,9 +22477,9 @@ } }, "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -22491,13 +22627,94 @@ } }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "requires": { - "chokidar": "^2.0.2", + "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + }, + "dependencies": { + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "optional": true + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "optional": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "optional": true, + "requires": { + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "optional": true + } + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "optional": true, + "requires": { + "chokidar": "^2.1.8" } }, "wbuf": { @@ -22742,9 +22959,9 @@ } }, "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", "requires": { "memory-fs": "^0.4.1", "mime": "^2.4.4", @@ -22754,9 +22971,9 @@ }, "dependencies": { "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" } } }, @@ -23127,9 +23344,9 @@ } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" }, "whatwg-encoding": { "version": "1.0.5", @@ -23445,15 +23662,20 @@ "sax": "^1.2.1" } }, + "xmldom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz", + "integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==" + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yaml": { "version": "1.7.2", @@ -23518,11 +23740,6 @@ "requires": { "ansi-regex": "^5.0.0" } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" } } }, @@ -23604,9 +23821,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "p-locate": { @@ -23662,9 +23879,9 @@ } }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yargs": { @@ -23686,9 +23903,9 @@ } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", From abd51b72a2394e80f3aaf30534be3837ebc69b66 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Mon, 13 Sep 2021 16:02:24 +0200 Subject: [PATCH 27/36] Answer to puzzle day05: I added data in the resources folder (day05), the main and the test script (day05). --- .../adventofcode/days/day05/Day05.java | 125 +++ .../resources/data/day05/day05_testdata1.txt | 3 + src/main/resources/data/day05/input_day05.txt | 876 ++++++++++++++++++ .../adventofcode/days/day05/Day05Test.java | 42 + 4 files changed, 1046 insertions(+) create mode 100644 src/main/java/org/haffson/adventofcode/days/day05/Day05.java create mode 100644 src/main/resources/data/day05/day05_testdata1.txt create mode 100644 src/main/resources/data/day05/input_day05.txt create mode 100644 src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java diff --git a/src/main/java/org/haffson/adventofcode/days/day05/Day05.java b/src/main/java/org/haffson/adventofcode/days/day05/Day05.java new file mode 100644 index 00000000..8295ea44 --- /dev/null +++ b/src/main/java/org/haffson/adventofcode/days/day05/Day05.java @@ -0,0 +1,125 @@ +package org.haffson.adventofcode.days.day05; + +import io.micrometer.core.lang.NonNull; +import org.apache.commons.lang3.StringUtils; +import org.haffson.adventofcode.ProblemStatusEnum; +import org.haffson.adventofcode.days.Days; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.InputStream; +import java.util.*; + +@Component +public class Day05 implements Days { + + /** + * the puzzle status {@code HashMap} + */ + private final Map problemStatus; + + @Autowired + Day05() { + this.problemStatus = new HashMap<>(); + this.problemStatus.put(1, ProblemStatusEnum.SOLVED); + this.problemStatus.put(2, ProblemStatusEnum.SOLVED); + } + + // read in test data and AoC data as InputStream and return data as ArrayList + public InputStream testDataInputStream = getClass().getResourceAsStream("/data/day05/day05_testdata1.txt"); + public InputStream dataInputStream = getClass().getResourceAsStream("/data/day05/input_day05.txt"); + + public static ArrayList getRawdataAsList(InputStream data){ + ArrayList rawdata; + try (Scanner scan = new Scanner(data)) { + rawdata = new ArrayList<>(); + + while (scan.hasNext()) { + scan.useDelimiter("\n"); + rawdata.add(scan.next()); + } + } + return rawdata; + } + + // answers puzzle 5 + // binary space partitioning principle + public int getRowOrCol(@NonNull String s, int stop, char identifier1, char identifier2) { + s = requireNonNullAndNonEmpty(s); + int numMin = 0; + int numMax = stop-1; + int rowOrCol = 0; + int num = 1; + int count = 0; + for (Character letter: s.toCharArray()) { + if (letter.equals(identifier1)) { + numMax = (int) (numMax-stop/Math.pow(2,num)); + num++; + count++; + } + if (letter.equals(identifier2)) { + numMin = numMin + (int)(stop/Math.pow(2,num)); + num++; + count++; + } + if (count==s.length() && (letter.equals(identifier1))) { + rowOrCol = numMin; + + } else if (count==s.length() && (letter.equals(identifier2))) { + rowOrCol = numMax; + } + } + return rowOrCol; + } + + // check for nulls (if input string is empty) + public static String requireNonNullAndNonEmpty(String string){ + if (StringUtils.isEmpty(string)){ + throw new NullPointerException("The string is null or empty"); + } else { + return string; + } + } + + // seatID is row*8 + column + public ArrayList getSeatID(InputStream dataIn) { + ArrayList seatIDs = new ArrayList<>(); + ArrayList data = getRawdataAsList(dataIn); + for (String ss : data) { + seatIDs.add(getRowOrCol(ss.substring(0,7),128, 'F', 'B')*8 + + getRowOrCol(ss.substring(7,ss.length()),8, 'L', 'R')); + } + return seatIDs; + } + + // First Part: find highest seatID + @Override + public String firstPart() { + int highestSeatID = Collections.max(getSeatID(dataInputStream)); + return "The highestSeatID is: " + highestSeatID; + } + + // Second Part: find missing seatID + @Override + public String secondPart() { + ArrayList seatIDs_sorted =getSeatID(dataInputStream); + Collections.sort(seatIDs_sorted); + int mySeat = 0; + for (int i=0; i getProblemStatus() { + return problemStatus; + } +} diff --git a/src/main/resources/data/day05/day05_testdata1.txt b/src/main/resources/data/day05/day05_testdata1.txt new file mode 100644 index 00000000..f8b3bec0 --- /dev/null +++ b/src/main/resources/data/day05/day05_testdata1.txt @@ -0,0 +1,3 @@ +BFFFBBFRRR +FFFBBBFRRR +BBFFBBFRLL \ No newline at end of file diff --git a/src/main/resources/data/day05/input_day05.txt b/src/main/resources/data/day05/input_day05.txt new file mode 100644 index 00000000..ef0e8b0f --- /dev/null +++ b/src/main/resources/data/day05/input_day05.txt @@ -0,0 +1,876 @@ +BFBBBBFRLL +FBFBFFBRLL +BBFBBFBLRL +BFFFBBFLLR +BFFFFBBLRL +BFBBFBFRRL +FBBFBFBRRR +FFBFBFFRLR +BBBFFBFLLL +BFFBBBBRRL +BBFBFFFRRR +FBFFFFFRLL +BFBFBBFLRL +BFBFBFBLRL +BFFFBFFLLL +BBFBBBFRRL +FBFFBBFRRR +FFBBBFFRRL +BFBBBBBLLL +FBFBFFBLLL +BBFBFBBLRR +BFFFFFBRLL +BFBFBBFRLR +BBFFBBFRRL +FBBBFBBRLL +BFFBBFBRRR +BFBFBBFLLL +BBFFBBBRLR +FBFFFFBRRL +BFFFBFBRRL +FFFBBBBLRR +FFBFFBBRRR +FFFBFBFRLL +FFFBBFFRRL +BFFBFBBRRL +FBBBFBBLRR +BBBFFBBRRR +FBFFFFBLLR +FFFBFFFLLL +BFFFBBBRRL +BFFFFBFLRL +FFFBFBFRLR +BFFBBBFLRL +BBBFBFFLRL +FBBFBBBLRL +FBFFBBBRLL +BFBFFFBLRR +FBBFFFBLLL +BFBFBFFRRR +BBFBFBBRRR +BFBBBFBRRR +FBFBFFFLLR +FBBFFBFLRR +FBFBBBBLRL +BBFFBFBRLL +FBFBFBFRRR +FFBBBFBRLL +BBBFFBBRLL +BBFBBFBRRR +FFBBFBFLLR +FBFBFBFRRL +BFFBFBBLLR +FFBBFFFLLR +BBFFFFFLLL +BBFBBBBLLR +FBBBBFBRLL +BFBBBBBLLR +FBBBBFBRRR +BFFBFBFLRL +FFBFBFBLRR +FFBBBFFRLR +BBFBBBBRRR +FFBBBBFLLL +BFBFFBBRLR +BFFFBFBLLL +BBFFBFBRRL +FFBFFBBLRR +FFFBBBBLLR +BFBBBBFRRL +BFBFBBFLLR +BBFFFBFRRR +BFFBBFFLRL +FFBFBBBRRL +BFFBFFFRRR +BBFBFBBRRL +BFBBBFFRLR +FFBFFBFLLL +FFFBFFBRRR +FBFFBBFRLL +BBBFBFFLLR +FFBBFBFLRR +FBFBBBFRLL +FBBFFFBLLR +FFBFBFFRLL +BBFBFFFRRL +BFBFBFFLRL +BFBBFBFRLL +BFFFBBBRLL +BFFFFFBRRL +FFFFBBBLLL +BBFBBBFRRR +FBBBFBFLRL +BBBFFBFRRL +FBBFBBBRLR +FBBFFBFLLL +BFBFBBBLLL +FBFFFFBLLL +FFBFFBFRLR +FBFFFBFLRL +FFBBFFBRRR +FBBBFBFRLL +BFFBFFBLLR +BBFFBBFRLL +FFBFBBFLLR +BFBBFBFRRR +FFBBBFBLLR +BBFBFFFRLR +BFBBFBFLLL +BBBFFFFRRR +FBFBFBBRLR +BFFFBBBLRL +FBBBFFBLRL +BFBFBFFLLL +FBFBFFFRLL +FFBBBBBLRL +FFBBBBBRLL +FBFBFBFRLL +FBBFFBFRRL +BFFBBBBRRR +BBFFFBFRLR +BBFBBFBLLR +FFFBFFBRLL +BBFFBFFRLR +FBBBFFBRLL +BBFFFBBRRR +FBBFBBFRRL +BBFBBFFLRR +FFFBFFBLRL +BFFBBFBLRR +FFBBBBFLRR +BBFFFBBRLL +FFFBFFBLLL +BFFFFBBLLR +FFBBFBBLRL +FBBFBFBLRR +FFFFBBBLRL +BFBFBFBRLL +FFBFFBBRLL +FFFBFBFLLL +FBBFFFFRRR +FFFBFBBLLR +BBFFBFFRRL +FFBFBBFRRL +BFFBFFFLLL +BFFBFFBRLL +BBFFBFBRRR +BFFBBBBLRL +FBFFFBBLLR +BBFFFFFLRR +FBBBFBFLLR +FFBFBBFLLL +BFFBFFBRRR +BBFFBBBRRR +FBFFFBBLRL +FBFBFBBLLR +BBFFFBBLLL +FBBFBFFRRR +BFFFBBBRRR +FFFFBBBLLR +FFBBBFBRLR +FBFFBFFRLR +FBFBFFFLRL +BBFBFFFLLR +FFBFFFBLRL +FBFFFFFRRL +FBBBBBBLRR +FBFBBBBRRR +FBBBFFBLLL +BBFBFFFLLL +BFFFBBFRLL +FFBBFFFRRL +FBFFFFFLRR +FFFBFBFRRL +BFBBFBFRLR +BFBBFFBRLR +BBFFBFBLRR +BFBBBFFLRL +BFFFFBBRLR +BBFFBBBLLL +BFBFBFBRRL +FBFFBFBLRR +FFFBFBFRRR +BBFFBFFLRR +FBBFBFBRLL +BFFFFBFLLL +FFBBFBBLLL +FFBFFFBRRR +BFFBFBFRLL +FBFFBBFRRL +BFFBFFFLRL +FBFBBFBLLL +BFFBFBBLLL +FBFFBFBRRR +FFBBFFFLLL +BBFBBBBLRR +FFBFFFBLLL +FBBBFBFLRR +BFFBBBBRLL +BFBFBBBLRL +BBFBBFBLRR +FBBBFFFLRL +BBFBFBFLLR +FFFBFFBLLR +FFFBFBFLRL +FFBFBBFRLL +FBBBBBBLRL +FFBFFBBLLL +FBBBBBFLRR +FBBBFBBRRR +BBFBFFBLLR +BFBFFBBLRL +BFBFFFFLRL +BFFFFFBLLL +FBFFBBBRRL +FFBBBFBRRR +BFFFBFFLLR +FBBBBFBLLL +FBBFFBBRRL +BBFFFBBLRR +FBFBFBBLRL +FBBBFBBLLL +FBBFBFFLLL +BBFBBFBRRL +FBFBFFFLRR +BBBFBFFLLL +BBFBBFFLLR +BBFBFFBRRL +FFBFFFFLLL +BBFFFBBLRL +FBBFBFBLLR +FBFBFFBLRR +BBFFFFBRRR +BFBBBFFRLL +BBFBFBFLRR +FFBFFBBLRL +FFFBBFFRRR +FBFBBFBRLL +FBBFFBBRRR +FBFFBFBLLL +FFBFFBBLLR +FBBFBFFLRL +BFFFFBBLRR +FBBFBFBRLR +BFFFFBFLRR +FFFBBBBLRL +FBFFBFFLLL +BFBBBBFLRL +BFFFBBFLRR +BFFFBFFRLR +BBFFFFFLLR +FFBBBBFRRR +BFBFFBFLRR +FFBFFFBLRR +BBFBBFFRRL +FBFBFBBLRR +BBFFBBFLRL +FBFBBFFLLL +BFBFBFFRLL +BBFBBBFRLL +FFBFBFBLLR +FBFBFBFLLR +BFBBFFBRRR +FFBBBFBLRR +FBFBFFFLLL +BFFFFFFRRL +BFBFFFBRLL +FBFFBBBLLR +FFFFBBBRLR +BFFBBBBLLR +FFBFFBFRRR +FBFBBBBRRL +BFBFBFBLRR +FBFBBFFRLL +BFFBFBFLLL +FBBBFFBRRL +BFBFFBBLLL +BFBBFBFLRL +FBFBFFBRLR +BFBFBFFLRR +FFBBFFBLRL +FFFBBBFRLL +BBFFBBFLRR +FBFBBFFRRL +BFFBFBBLRL +FBBBFBFRRL +FFBFFBFLLR +FBFFFBBRLR +BBFFBBBLRR +BBFBFBFRLL +FBFBBBBLLL +BFFFFFFRLL +FFBFFFBRLR +BFFFFBFRRR +BFBFFBBLLR +BFFBBBFRRR +BFBFFFBRRL +FBBBFFFRRR +BBFBBBBRRL +FBBFFFFRRL +FFBFFFFRLR +BFFFFFFLLL +FFBFBBFLRL +FFFBBFBRLL +FFFBFBBRRL +FBBBBFBLLR +FBFFFBFRRL +BFFBBBBLRR +FBFFFFFLRL +FFFBBFFLRR +BBFFFFFRLL +FBBBFFFLLR +BFFBBFBLLR +BBFBBBFLRL +FBFBFFBRRL +BBFFBFBRLR +FBFFBFBRRL +FFBFFBBRLR +FBBBBBFRRR +FFBFFFFRRR +BFBBBFBLLR +FBFBFBFRLR +BFBBBFBRLL +FBFBBFFLRR +BFBFBFBRLR +FBFBBBBLRR +BFBBFFFLLR +BFBFBBFRRL +FBFBBFBLLR +FFFFBBBRRR +BFBBBFBLLL +BFBFFFFRRR +FBBFFFBRRL +FFBFBFBRRR +FFBBFBBRLL +BFFBFFFRRL +BBFFFFFRLR +BFFFBBBLRR +FFBBFBBRRR +FFFBBFBLLR +FFBFBFFLRR +BBBFFFFLRL +FFFBFFBRLR +FFFBFFFLRR +FFBFBFFLLR +FBBBFBBRLR +FBBFBBBRLL +BBBFFBFRLR +FBBBBFBRLR +BFBBBBFLRR +FBBBFBFRLR +FFBFBFFRRL +FBBBFFFLRR +BFFBBFBRLL +FBFFFBBRLL +FBFBBBBRLL +BBBFFBFRRR +BFBBFFBLRL +BBBFFFBRLR +BBFBBFBRLR +BBFBBBBLRL +BBFFFBBRLR +BFFBBFBLLL +BFFBFBFRLR +FFBBBBBLLL +BFFFFFBLRL +BFBBFFBLLL +BFFBBFFLRR +BFFBBFFRRL +BFFFFFFLLR +FBBFBBFRLR +FBBBBFFRLR +BBFFFBFRLL +BBBFFFBLLR +FFFBBBFRRR +BFBBFFBRRL +FBBBBFFRLL +BFFFFFFRLR +FBBFBBFLRR +BFBFFFFLLL +BFBFFBBRLL +BFBBBFBRLR +BBFFFFFLRL +BFBBFFBRLL +BFBFBFBRRR +BBBFFBBLLL +BBFFFBFLRL +FBFFFBBRRL +FFBFBBBLRR +BFFFBBBRLR +BBFBFBBLLL +FFBFBFFRRR +BFFFFFFRRR +FBBBFFBRRR +BFBBBBBLRR +FBBBFFFRLR +BBFBBBFRLR +BFFFFFBLLR +FBBBBBBLLR +FFBFBBBRRR +FBFFBBBRLR +FBFFBBFLLL +BFBBFBFLRR +FFFBBFBLRL +BBFFFBFLLR +BBFBFBBRLL +BBFBBFBLLL +FFBBBBFRLR +BBFFFFFRRR +FBBBBBBRRL +BFFBBFFRLL +FBFBFFBLLR +FFBBBBFLLR +FFBFBBBRLL +BFBBFFFLRR +BFFFBBBLLR +BFFFBBFLRL +BFFBFBFRRL +FFBFBFBRRL +BBBFFFFLRR +FBBFFBBRLR +FFBBFBFLRL +FFFBBBFLLL +FFBFBBFRLR +BBBFFFFRLL +BFBBBFBRRL +FBBBBFBLRL +FBBFFBFRRR +BFBBBBBRLL +BFFBBBFLLL +BFFBBBFRRL +FBFBBBFLRR +BBFBFFBRRR +FBFBBFBRLR +BFBFFBFRLL +FBFBFBBRLL +BFBBFBBRRR +FFBBFBBLLR +FBFBFBFLLL +FBFBBBFLLR +BFBBBFFRRL +BFBFBBFLRR +FBFBFBFLRL +BFBBFBBLRL +BFFFFBBLLL +BFFFFBBRRL +BFBFBFFRLR +BBFFBBBRLL +FBFBBFBLRL +FBFBBFFLLR +BFBBFBBRRL +BFFFFFBRLR +BBFFFFBLLL +FFFBFBBRLR +FFBBFFFLRL +BFFBBFBRRL +FBFBFFBRRR +BBFFBFFRRR +FBBBFFFRRL +BFFBBFBRLR +BBBFFBFLRR +BBBFFBBRRL +FFFBFFFLRL +BBFFFFFRRL +BBFFBBFLLR +FBBFBFFRLL +BBFFFFBLRL +FFBBBFFRLL +BBBFFFFRRL +FFBBFBFRRR +BFFFFBBRRR +FFFBBBBRLL +BFBBFFBLLR +BBBFFFFLLR +BBFFBFFLLL +FFBFBFBLLL +FFBFFFFLRL +FBBFBBBRRL +FFFFBBFRRR +FBFBFBFLRR +FFBFFFFLRR +BFBBBFFLLR +FBFBFFFRRR +BFBBBBFLLL +BFFBFFBLLL +FBFBFBBLLL +FFFBBBFRLR +BFFFBFFRRL +BFBBFBBLLL +FFFBFFFRRR +FBFBBBBLLR +FFBBFFBRLR +FBBBFBFRRR +FFBBFFFRLL +BBFBFFFRLL +BBBFFFBRRR +BBFBBBBRLR +FBFBFFFRLR +FFFFBBBRRL +FFBFFFFRLL +BFFFBFBRRR +FFBBBFFLLR +BFFBFFFLRR +FFBFBFBLRL +FBFFBFFRLL +BFBFBBFRRR +FBBFBBBLLL +FBBBFFBRLR +FBFFFBFLRR +BFBBFBFLLR +FFBBBFBLRL +FFBBFBFRRL +FBBFBBBLRR +FFBBFFBLLL +FFFBFBBLRR +BFBFFFFLLR +BBFFBBFRLR +BFBFFFBRRR +FBFFFFBRLL +FBBBFFFRLL +BBFBBFBRLL +FFFFBBBLRR +BBFBFFFLRL +FBBBBBFRRL +BFBBBBBRRR +BFFBFFBLRR +FBBFBBFLRL +BFFBBFFRRR +FBBBFFFLLL +FFFBBBBLLL +BBFFBBBLLR +BFBBBFFRRR +BFBFFFBLRL +FBFFBFBLRL +FBFFFFFLLL +BBBFFBBRLR +FBBBBFFLRR +BFBBBFBLRL +FFFBBBBRLR +BFFFBFBLRR +FBFFFBFLLR +BBBFFFBLRL +BFBFFFFRRL +BFFFFBBRLL +BFFFBFFLRR +FBBFFBBLRL +FFBBBBBRRL +FBBFFFFLRL +FFBBFBFRLL +FFBFBBBLLL +FFBFFBFLRR +FBBFFBFRLR +FFBBBFBLLL +FBBFFBBRLL +BFFBFBBRRR +BFFFBFFLRL +FBFFFBFRLR +FBFBBFFRRR +FBBFBBFLLR +FFBBBBBLLR +BBFBFFBRLL +BFBBBBBLRL +BBFBFFBLRR +BFBFBFFLLR +BFFBFFFRLL +FBFBBFBRRL +BBBFFBFLRL +BFBFFFBLLL +BFBFBBBRRR +FFFBBFBLLL +FFFBFFFLLR +FBFBBBFRLR +FBBBBBFLRL +BFFFBFFRLL +BFBFFBBLRR +BFFFBBFLLL +FBFFBFBRLL +FBBBBBFLLR +BFFBBFFRLR +FFFBBBFLRL +FFFBBFBRLR +FFBBFBBLRR +FFFFBBBRLL +FFFBBFBLRR +FFBBBFFLRL +FBFFBBBLLL +FBFBBFBRRR +BFBFBBBLLR +BBFFFFBLLR +FFBFFBFRRL +BFBFFFFRLR +BBFBFBFRRL +FBBBFBBLRL +BBBFFFBRRL +BFFBFBFLRR +BBFFBFFLRL +FBBFFBFLLR +FBBFFBFLRL +BBFFBFBLRL +BFFBFFFRLR +FFFBFFFRRL +FBBFBFFRRL +FBBBFFBLRR +FFBBFFFRRR +BBFFFBFLRR +FBFFBBFRLR +FBBBFBBRRL +FBBFFFBLRR +BBFBBBFLLR +BBFBBFFRLL +BBFBFBBRLR +BFFFFBFRRL +BFBFBBBRRL +BFBFFBFLRL +FFBFBBFLRR +BBFBFFFLRR +BBFBFBFLLL +FBFBBBFRRL +BBFFFFBLRR +BBFFBFFRLL +BBFFFFBRLR +FBFFFBFRLL +FBFBBBBRLR +BBFFBBBLRL +BBFBBBBRLL +FBFFFFBLRL +BFBFBBFRLL +FBFFBFFLLR +FFFBBFFLLL +BFBBFFFRLL +BFFFFBFRLR +BFBBBBFRRR +FBBFFBBLLL +FBFFBFBRLR +BFFBFBFRRR +FBFFFFBLRR +BFBBBBFLLR +BFFFBFBLRL +BBFBFFBLRL +FBBBFFBLLR +FFBFBBBLLR +BBBFFBBLRL +BBFFBFFLLR +FFBBFFFLRR +FBFBFBBRRR +BFFFFFBRRR +BFBFBFBLLL +BFFFBBFRRL +FBBBBFFLRL +FBBFFFBLRL +BFBFFFFLRR +BFBBBFFLRR +FBBFFFFLLR +FBBFBBFRLL +FFBFBFBRLL +FBFFFBBLRR +BBFFBBFRRR +BFFBBBFRLR +BBFBFFBLLL +FFBBFBBRLR +FFFBFBFLLR +BFBBFFBLRR +FFBFFBBRRL +BBBFFBBLRR +FFBBFFBLLR +BFFBBBFRLL +FBFBFFFRRL +FBBBBFBRRL +BFBBBBFRLR +BFFBBFFLLL +FFBFBBFRRR +FBFBFFBLRL +FFFBFFBLRR +BFFBFFFLLR +FBFFBBBRRR +FBFFBFBLLR +FBFFFBBLLL +BBFBFBBLLR +FBFBBBFRRR +FBFBBFFLRL +FBFFFBFLLL +FFFBFFBRRL +FFFBBBBRRR +BBFFBBBRRL +FFFBBFBRRR +FFBFBFFLRL +FFBBBBBLRR +FBFBBBFLLL +FFBBFFBRLL +BFFBFFBRRL +BFBBBBBRLR +BBFBBBFLLL +FFBFFFBLLR +FFBFFBFRLL +FFFBBBFLLR +FFBFBBBRLR +BFBFBBBRLL +BFFBBBBRLR +FBBBBFFRRL +FFFBBFFRLR +BBFFBFBLLL +BBBFFBFLLR +FFBBBBFRLL +BBFFBFBLLR +BFBFBBBRLR +FFBFFFFRRL +BFBFFFFRLL +BBBFFFFLLL +BFFBBFFLLR +FBBFBFFLLR +FFBFBFBRLR +FBBBBBFRLL +FBBFFFBRLR +BBFFFBBLLR +BFFBFBBRLR +FFFBFBBRLL +BFBBFFFRRL +BBFBFBFRRR +FFFBFBFLRR +BFBBFFFLLL +BFFFFBFLLR +BBBFFFBLRR +BFBFBBBLRR +BFFFBBFRRR +BFBFFBBRRR +BBBFFFBRLL +FBFFFFFRLR +BFFBFFBRLR +BBFBBBFLRR +BBBFFFBLLL +FFFBFFFRLL +FBBFBFBLLL +BFBBFBBRLL +BFBFFBFRRL +FBFBFBBRRL +BFFBBBBLLL +FFFBFBBRRR +FFFBBFBRRL +FBBBBBBRLR +FFBBBBBRLR +BFBFBFFRRL +FFBBFFBLRR +BFFFBFBRLL +FBBFBFBLRL +FFBFFBFLRL +FBFFFFBRRR +FFBBFBFRLR +FBFFBBBLRL +FBFFBBFLLR +FFBBFFBRRL +BFFFFFBLRR +BFBFFFBRLR +FFBBBBFLRL +BFBFBFBLLR +FFFBBBFRRL +FBBFBBBLLR +FBFFFFFLLR +FBBBBBFRLR +BFBFFBFRLR +BFFBBBFLRR +FBFFBFFLRR +BBFBFBFLRL +FFBFBBBLRL +BFBBFFFLRL +BFFFBFBRLR +FBBFFFFLRR +FBBFFFFRLR +FBBFFBBLLR +FBBBBBBRLL +BFBFFBBRRL +BBFFFBFRRL +BFFBFBBLRR +FBFFBBFLRR +BBFBBFFRRR +BBFBFBFRLR +FBFBBFFRLR +FFFBBBBRRL +BBFFFFBRRL +FFBFFFBRLL +BFFFBFBLLR +BFFBBFBLRL +FBBFBBBRRR +FBFFBFFRRL +FBFFFFFRRR +BFFFBBFRLR +FFFBFFFRLR +FFBBBFBRRL +FBBFBFBRRL +BFFBFBBRLL +BBFFBBFLLL +FFFBBFFLRL +BFFBBBFLLR +FBBFBFFLRR +BBFBBFFRLR +BFBFFBFLLR +FBFFBBBLRR +BFBBFBBLRR +FFFBFBBLRL +BBBFFBFRLL +BBFFFBFLLL +BFBFFBFRRR +FFFBBBFLRR +BBFFFBBRRL +FFFFBBFRRL +FBBFFFBRRR +FBBBFBFLLL +FBFBBFBLRR +FBBBFBBLLR +FBFBBBFLRL +BBFFFFBRLL +FBBBBBBRRR +BFBBBFFLLL +BBFBFBBLRL +BFFFFBFRLL +FBFFBFFRRR +BBFBBBBLLL +BBBFFBBLLR +FBBBBFFRRR +FBBFBBFRRR +FBFFFBBRRR +BBFBBFFLRL +BBBFFFFRLR +FBBBBFBLRR +FFBBFBBRRL +FFFBBFFLLR +BFBBFFFRLR +BFFFBBBLLL +BFBBFFFRRR +FFBFBFFLLL +FBBFFFBRLL +FFBBFBFLLL +FBBFFBFRLL +BFBFFBFLLL +FBFFFFBRLR +FFBBBFFRRR +FBBFFBBLRR +BFFBFBFLLR +FBBBBBFLLL +BFFBFFBLRL +FFBBBBFRRL +BFBBBFBLRR +FBBBBFFLLL +BBFBFFBRLR +BFBBFBBRLR +FBBBBFFLLR +FBFFFBFRRR +FBBBBBBLLL +BBFBBFFLLL +BFBBFBBLLR +FBBFBFFRLR +FBBFFFFRLL +FBFFBBFLRL +FFFBBFFRLL +BFBFFFBLLR +FFBBBFFLLL +FBBFBBFLLL +FFBBBBBRRR +BFFFBFFRRR +FBFFBFFLRL +FBBFFFFLLL +FFBFFFBRRL +BFBBBBBRRL +FFBBFFFRLR +BFFFFFFLRL +FFBBBFFLRR +FFFBFBBLLL +FFBFFFFLLR \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java b/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java new file mode 100644 index 00000000..fd581496 --- /dev/null +++ b/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java @@ -0,0 +1,42 @@ +package org.haffson.adventofcode.days.day05; + +import org.haffson.adventofcode.days.day04.Day04; +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; + +public class Day05Test { + + + // Test return type + @Test + public void test_getRawDataArray1() { + Day05 day05 = new Day05(); + ArrayList expected = new ArrayList( + Arrays.asList("BFFFBBFRRR", "FFFBBBFRRR", "BBFFBBFRLL")); + ArrayList actual = day05.getRawdataAsList(day05.testDataInputStream); + Assert.assertEquals(expected, actual); + } + + // puzzle 5.1 real data: + // test method firstPart() + @Test + public void test_firstPart() { + Day05 day05 = new Day05(); + String expected = "The highestSeatID is: " + 930; + String actual = day05.firstPart(); + Assert.assertEquals(expected, actual); + } + + // test method firstPart() + @Test + public void test_secondPart() { + Day05 day05 = new Day05(); + String expected = "My seatID is: " + 515; + String actual = day05.secondPart(); + Assert.assertEquals(expected, actual); + } + +} From 39d57bb768a6a6dc56c7b377356c11893e509185 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Tue, 14 Sep 2021 09:28:42 +0200 Subject: [PATCH 28/36] Answer to puzzle day05: Formatting of Day05.java and Day05Test.java. Change of for loop to stream() in Day05.java. --- .../adventofcode/days/day05/Day05.java | 53 +++++++++---------- .../adventofcode/days/day05/Day05Test.java | 5 +- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day05/Day05.java b/src/main/java/org/haffson/adventofcode/days/day05/Day05.java index 8295ea44..36b9af98 100644 --- a/src/main/java/org/haffson/adventofcode/days/day05/Day05.java +++ b/src/main/java/org/haffson/adventofcode/days/day05/Day05.java @@ -9,6 +9,7 @@ import java.io.InputStream; import java.util.*; +import java.util.stream.Collectors; @Component public class Day05 implements Days { @@ -29,7 +30,7 @@ public class Day05 implements Days { public InputStream testDataInputStream = getClass().getResourceAsStream("/data/day05/day05_testdata1.txt"); public InputStream dataInputStream = getClass().getResourceAsStream("/data/day05/input_day05.txt"); - public static ArrayList getRawdataAsList(InputStream data){ + public static ArrayList getRawdataAsList(InputStream data) { ArrayList rawdata; try (Scanner scan = new Scanner(data)) { rawdata = new ArrayList<>(); @@ -47,67 +48,65 @@ public static ArrayList getRawdataAsList(InputStream data){ public int getRowOrCol(@NonNull String s, int stop, char identifier1, char identifier2) { s = requireNonNullAndNonEmpty(s); int numMin = 0; - int numMax = stop-1; + int numMax = stop - 1; int rowOrCol = 0; int num = 1; int count = 0; - for (Character letter: s.toCharArray()) { + for (Character letter : s.toCharArray()) { if (letter.equals(identifier1)) { - numMax = (int) (numMax-stop/Math.pow(2,num)); + numMax = (int) (numMax - stop / Math.pow(2, num)); num++; count++; } if (letter.equals(identifier2)) { - numMin = numMin + (int)(stop/Math.pow(2,num)); + numMin = numMin + (int) (stop / Math.pow(2, num)); num++; count++; } - if (count==s.length() && (letter.equals(identifier1))) { + if (count == s.length() && (letter.equals(identifier1))) { rowOrCol = numMin; - } else if (count==s.length() && (letter.equals(identifier2))) { - rowOrCol = numMax; - } + } else if (count == s.length() && (letter.equals(identifier2))) { + rowOrCol = numMax; + } } return rowOrCol; } - // check for nulls (if input string is empty) - public static String requireNonNullAndNonEmpty(String string){ - if (StringUtils.isEmpty(string)){ - throw new NullPointerException("The string is null or empty"); + @NonNull + //check for nulls (if input string is empty) + public static String requireNonNullAndNonEmpty(String string) { + if (StringUtils.isEmpty(string)) { + throw new IllegalArgumentException("The string is null or empty"); } else { return string; } } // seatID is row*8 + column - public ArrayList getSeatID(InputStream dataIn) { - ArrayList seatIDs = new ArrayList<>(); - ArrayList data = getRawdataAsList(dataIn); - for (String ss : data) { - seatIDs.add(getRowOrCol(ss.substring(0,7),128, 'F', 'B')*8 - + getRowOrCol(ss.substring(7,ss.length()),8, 'L', 'R')); - } - return seatIDs; + public List getSeatID(@NonNull final InputStream dataIn) { + return getRawdataAsList(Objects.requireNonNull(dataIn, "Data Inputstream is null.")).stream() + .map(ss -> getRowOrCol(ss.substring(0, 7), 128, 'F', 'B') * 8 + + getRowOrCol(ss.substring(7), 8, 'L', 'R')) + .collect(Collectors.toList()); } // First Part: find highest seatID @Override public String firstPart() { int highestSeatID = Collections.max(getSeatID(dataInputStream)); - return "The highestSeatID is: " + highestSeatID; + return "The highest seatID is: " + highestSeatID; } // Second Part: find missing seatID @Override public String secondPart() { - ArrayList seatIDs_sorted =getSeatID(dataInputStream); + List seatIDs_sorted = getSeatID(dataInputStream); Collections.sort(seatIDs_sorted); int mySeat = 0; - for (int i=0; i getProblemStatus() { return problemStatus; } -} +} \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java b/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java index fd581496..c1ee0695 100644 --- a/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java @@ -25,12 +25,13 @@ public void test_getRawDataArray1() { @Test public void test_firstPart() { Day05 day05 = new Day05(); - String expected = "The highestSeatID is: " + 930; + String expected = "The highest seatID is: " + 930; String actual = day05.firstPart(); Assert.assertEquals(expected, actual); } - // test method firstPart() + // puzzle 5.2 real data: + // test method secondPart() @Test public void test_secondPart() { Day05 day05 = new Day05(); From 157027fd64c66696bee1412af9dd29be10bf4a91 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Tue, 14 Sep 2021 09:42:24 +0200 Subject: [PATCH 29/36] Code formatting --- .../adventofcode/days/day01/Day01.java | 49 +++--------- .../adventofcode/days/day02/Day02.java | 24 ++---- .../adventofcode/days/day03/Day03.java | 46 +++++------ .../adventofcode/days/day04/Day04.java | 77 +++++-------------- .../adventofcode/days/day01/Day01Test.java | 10 +-- .../adventofcode/days/day02/Day02Test.java | 28 +------ .../adventofcode/days/day03/Day03Test.java | 19 ++--- .../adventofcode/days/day04/Day04Test.java | 7 +- .../adventofcode/days/day05/Day05Test.java | 8 +- 9 files changed, 71 insertions(+), 197 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index e928afce..d011054f 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -2,11 +2,7 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; - -import java.io.File; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.*; @@ -17,19 +13,15 @@ @Component public class Day01 implements Days { - /** The puzzle status {@code HashMap} */ + /** + * The puzzle status {@code HashMap} + */ private final Map problemStatus; - // Adds a logger - private static final Logger logger = LoggerFactory.getLogger(Day01.class); - - // Read content of input file public InputStream resource = getClass().getResourceAsStream("/data/day01/input_day01.txt"); private final Integer[] data = getRawData(resource); - - // @Autowired Day01() { this.problemStatus = new HashMap<>(); @@ -69,8 +61,6 @@ public String secondPart() { */ // read raw data and transform it to String[] public Integer[] getRawData(InputStream resource) { - - ArrayList rawData; try (Scanner scan = new Scanner(resource)) { rawData = new ArrayList<>(); @@ -79,63 +69,42 @@ public Integer[] getRawData(InputStream resource) { rawData.add(scan.nextLine()); } } - - Integer[] rawData_array = new Integer[rawData.size()]; - for(int i = 0; i < rawData.size(); i++) rawData_array[i] = Integer.parseInt(rawData.get(i)); + for (int i = 0; i < rawData.size(); i++) rawData_array[i] = Integer.parseInt(rawData.get(i)); return rawData_array; } - - - private int calculateNumber1(Integer[] rawData_array){ - + private int calculateNumber1(Integer[] rawData_array) { List data = new ArrayList<>(rawData_array.length); data.addAll(Arrays.asList(rawData_array)); - // create arraylist that is subtracted by 2020 ArrayList data2 = new ArrayList<>(); - for (Integer datum : data) { data2.add(2020 - datum); } - // check for intersection of two arraylists data.retainAll(data2); - // multiplication of "intersected" values is the puzzle's answer! return data.get(0) * data.get(1); } private int calculateNumber2(Integer[] rawData_array) throws FileNotFoundException { - List data = new ArrayList<>(rawData_array.length); data.addAll(Arrays.asList(rawData_array)); - // create arraylist that is subtracted by 2020 ArrayList data2 = new ArrayList<>(); - for (Integer datum : data) { data2.add(2020 - datum); } - - ArrayList data3 = new ArrayList(); - - for (int k=0; k data3 = new ArrayList<>(); + for (int k = 0; k < data.size(); k++) { for (Integer datum : data) { data3.add(data.get(k) + datum); - } } - data2.retainAll(data3); - // multiplication of "intersected" values is the puzzle's answer! - - return (2020-data2.get(0))*(2020-data2.get(1))*(2020-data2.get(2)); - + return (2020 - data2.get(0)) * (2020 - data2.get(1)) * (2020 - data2.get(2)); } - - -} +} \ No newline at end of file diff --git a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java index d0840f5c..d37367d6 100644 --- a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java +++ b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java @@ -6,7 +6,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; - import java.io.FileNotFoundException; import java.io.InputStream; import java.util.*; @@ -18,14 +17,13 @@ @Component public class Day02 implements Days { -// // Adds a logger -// private static final Logger logger = LoggerFactory.getLogger(Day02.class); - // Read content of input file public InputStream resource = getClass().getResourceAsStream("/data/day02/input_day02.txt"); private List rawData = getRawDataAsList(resource); - /** The puzzle status {@code HashMap} */ + /** + * The puzzle status {@code HashMap} + */ private final Map problemStatus; @Autowired @@ -63,11 +61,9 @@ public String secondPart() { } } - - - /** * Method to read raw data from file into list + * * @return raw data as list */ public List getRawDataAsList(InputStream resource) { @@ -102,11 +98,10 @@ public Data(int min, int max, @NonNull String letter, @NonNull String password) this.password = requireNonNullAndNonEmpty(password); } - } - public static String requireNonNullAndNonEmpty(String string){ - if (StringUtils.isEmpty(string)){ + public static String requireNonNullAndNonEmpty(String string) { + if (StringUtils.isEmpty(string)) { throw new NullPointerException("The string is null or empty"); } else { return string; @@ -114,9 +109,7 @@ public static String requireNonNullAndNonEmpty(String string){ } public List getData(List rawData) { - List dataArrayList = new ArrayList<>(); - for (String line : rawData) { // match patterns to determine min and max number of the letter in password, // the searched letter and password itself @@ -131,7 +124,6 @@ public List getData(List rawData) { return dataArrayList; } - /** * Primary method for Day 1, Part 1. * Gets the number of correct passwords from a list @@ -149,7 +141,7 @@ private int getNumberPwd1() throws FileNotFoundException { int count = 0; // number of letter appearance in password // count how often specific letter appears in pwd - for (int j = 0; j < datum.password.length(); j++){ + for (int j = 0; j < datum.password.length(); j++) { if (datum.password.charAt(j) == datum.letter.charAt(0)) count++; } // check if count meets criteria for correct password @@ -187,4 +179,4 @@ private int getNumberPwd2() throws FileNotFoundException { return countCorrPwd; } -} +} \ No newline at end of file diff --git a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java index 46583ad4..40e9183f 100644 --- a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java +++ b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java @@ -2,8 +2,6 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -11,25 +9,20 @@ import java.util.*; /** - * Implementation for Day 1: Chronal Calibration. + * Implementation for Day 1: chronal Calibration. */ @Component public class Day03 implements Days { -/** The puzzle status {@code HashMap} */ -private final Map problemStatus; - - // Adds a logger - private static final Logger logger = LoggerFactory.getLogger(Day03.class); - + /** + * The puzzle status {@code HashMap} + */ + private final Map problemStatus; // Read content of input file public InputStream resource = getClass().getResourceAsStream("/data/day03/input_day03.txt"); - - private final String[] data = getRawDataAsArray(resource); - @Autowired Day03() { this.problemStatus = new HashMap<>(); @@ -84,31 +77,31 @@ public String[] getRawDataAsArray(InputStream resource) { } String[] rawData_array = new String[rawData.size()]; - for(int i = 0; i < rawData.size(); i++) rawData_array[i] = rawData.get(i); + for (int i = 0; i < rawData.size(); i++) rawData_array[i] = rawData.get(i); return rawData_array; } -// method for answer of puzzle day03 part 1 + // method for answer of puzzle day03 part 1 // search for number of trees encountered - public String getNumTrees(String[] data){ + public String getNumTrees(String[] data) { int sizeX = data[0].length(); // vertical direction int sizeY = data.length; // horizontal direction int numTrees = 0; // number of trees encountered char square = 0; // each coordinate on grid is called square - for (int i=1; isizeX) { - int repeatedPosition = (i*3)%sizeX; - square = data[i*1].charAt(repeatedPosition); + else if (i * 3 > sizeX) { + int repeatedPosition = (i * 3) % sizeX; + square = data[i * 1].charAt(repeatedPosition); } - if (square == '#'){ + if (square == '#') { numTrees++; } } @@ -116,7 +109,7 @@ else if (i*3>sizeX) { } // method for answer of puzzle day03 part 1 - public String getProduct(String[] data){ + public String getProduct(String[] data) { // 5 slopes need to be checked int[] stepY = new int[5]; int[] stepX = new int[5]; @@ -137,11 +130,11 @@ public String getProduct(String[] data){ int sizeY = data.length; // vertical direction long product = 1; // number of product of all trees with all slopes - for (int j=0; j problemStatus; -// // Adds a logger -// private static final Logger logger = LoggerFactory.getLogger(Day04.class); - // Read content of test file (puzzle part 1) - public InputStream testResource = getClass().getResourceAsStream("/data/day04/day04_testdata.txt"); - // Read content of test file (puzzle part 2) - public InputStream testResource2 = getClass().getResourceAsStream("/data/day04/day04_testdata2.txt"); - // Read content of input file (real data) public InputStream resource = getClass().getResourceAsStream("/data/day04/input_day04.txt"); - @Autowired Day04() { this.problemStatus = new HashMap<>(); @@ -49,8 +41,6 @@ public int getDay() { return 4; } - - @Override public Map getProblemStatus() { return problemStatus; @@ -82,39 +72,28 @@ public String[] getRawData(InputStream resource) { } String[] rawData_array = new String[rawData.size()]; - for(int i = 0; i < rawData.size(); i++) rawData_array[i] = rawData.get(i); + for (int i = 0; i < rawData.size(); i++) rawData_array[i] = rawData.get(i); return rawData_array; } - - // answer to day04.1 - public int getNumberValidPassports(String[] rawData_array){ + public int getNumberValidPassports(String[] rawData_array) { int numberOfValidPassports = 0; - - for (String passport : rawData_array){ - + for (String passport : rawData_array) { Set validKeys = new HashSet<>(Arrays.asList("byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid")); - String[] splitPassport = passport.split("[\\s+]"); - - for (String field : splitPassport){ + for (String field : splitPassport) { String[] parts = field.split(":"); validKeys.remove(parts[0]); } - - if (validKeys.size() == 0){ + if (validKeys.size() == 0) { numberOfValidPassports++; + } } + return numberOfValidPassports; } - return numberOfValidPassports; - } - - - - // answer to day04.2 public int getRestrictedNumberValidPassports(String[] rawData_array) { int numberOfValidPassports = 0; @@ -123,83 +102,69 @@ public int getRestrictedNumberValidPassports(String[] rawData_array) { int count = 0; Map passports = new HashMap<>(); Set validKeys = new HashSet<>(Arrays.asList("byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid")); - String[] splitPassport = passport.split("[\\s+]"); - for (String field : splitPassport) { String[] parts = field.split(":"); passports.put(parts[0], parts[1]); validKeys.remove(parts[0]); } - // check only passports that contain all keys if (validKeys.size() == 0) { // check birth year int byr = Integer.parseInt(passports.get("byr")); - if (1920 <= byr && byr <= 2002){ + if (1920 <= byr && byr <= 2002) { count++; } - // check issue year int iyr = Integer.parseInt(passports.get("iyr")); - if (2010 <= iyr && iyr <= 2020){ + if (2010 <= iyr && iyr <= 2020) { count++; } - // check expiration year int eyr = Integer.parseInt(passports.get("eyr")); - if (2020 <= eyr && eyr <= 2030){ + if (2020 <= eyr && eyr <= 2030) { count++; } - - // check body heigth + // check body height String hgt = passports.get("hgt"); // accept only Strings that have more than 3 letters if (hgt.length() > 3) { String unit = hgt.substring(hgt.length() - 2); int bodyheight = Integer.parseInt(hgt.substring(0, (hgt.length() - 2))); - if (unit.equals("cm")) { if (bodyheight >= 150 && bodyheight <= 193) { count++; } - } else if (unit.equals("in")) { if (bodyheight >= 59 && bodyheight <= 76) { count++; } } } - // check hair color String hcl = passports.get("hcl"); - String hclHash = hcl.substring(0,1); - String haircolorID = hcl.substring(1,hcl.length()); - if (hclHash.equals("#") && haircolorID.length() == 6 && haircolorID.matches("[0-9a-f]+")){ + String hclHash = hcl.substring(0, 1); + String haircolorID = hcl.substring(1); + if (hclHash.equals("#") && haircolorID.length() == 6 && haircolorID.matches("[0-9a-f]+")) { count++; } - // check eye color String ecl = passports.get("ecl"); List colors = Arrays.asList("amb", "blu", "brn", "gry", "grn", "hzl", "oth"); - if (colors.contains(ecl)){ + if (colors.contains(ecl)) { count++; } - // check passport ID String pid = passports.get("pid"); - if (pid.length() == 9 && pid.matches("[0-9]+")){ + if (pid.length() == 9 && pid.matches("[0-9]+")) { count++; } - // if all keys are present and all values are valid to above 7 rules then count == 7 - if (count == 7){ - numberOfValidPassports++; - } - + // if all keys are present and all values are valid to above 7 rules then count == 7 + if (count == 7) { + numberOfValidPassports++; + } } } return numberOfValidPassports; } -} - - +} \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java index 3cc60ba7..7e0bbe45 100644 --- a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java @@ -8,7 +8,6 @@ @RunWith(SpringRunner.class) public class Day01Test { - @Test public void testGetDay() { Day01 day01 = new Day01(); @@ -21,12 +20,9 @@ public void testGetDay() { public void test_firstPart_returnsExpectedResult() { //arrange Day01 day01 = new Day01(); - String expectedResult = "Product 1: " + 326211; - //act String actualResult = day01.firstPart(); - //assert Assert.assertEquals(expectedResult, actualResult); } @@ -35,14 +31,10 @@ public void test_firstPart_returnsExpectedResult() { public void test_secondPart_returnsExpectedResult() { //arrange Day01 day01 = new Day01(); - String expectedResult = "Product 2: " + 131347190; - //act String actualResult = day01.secondPart(); - //assert Assert.assertEquals(expectedResult, actualResult); } - -} +} \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java b/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java index 496de65d..b9ca6ef8 100644 --- a/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java @@ -2,6 +2,7 @@ import org.junit.Assert; import org.junit.Test; + import java.util.ArrayList; import java.util.List; @@ -16,84 +17,61 @@ public void testGetDay() { Assert.assertEquals(expectedResult, actualResult); } - // First part test data @Test public void test_firstPart_returnsExpectedResult() { - List rawData = new ArrayList<>(); rawData.add("1-3 a: abcde"); rawData.add("1-3 b: cdefg"); rawData.add("2-9 c: ccccccccc"); - //arrange Day02 day02 = new Day02(); day02.addInput(rawData); - - String expectedResult = "Part 1 answer: " + 2; - + String expectedResult = "Part 1 answer: " + 2; //act String actualResult = day02.firstPart(); - //assert Assert.assertEquals(expectedResult, actualResult); } - // First part raw data from file (real puzzle data) @Test public void test_firstPart_puzzleData_returnsExpectedResult() { - //arrange Day02 day02 = new Day02(); String expectedResult = "Part 1 answer: " + 607; - //act String actualResult = day02.firstPart(); - //assert Assert.assertEquals(expectedResult, actualResult); } - // Second part test data @Test public void test_secondPart_returnsExpectedResult() { - List rawData = new ArrayList<>(); rawData.add("1-3 a: abcde"); rawData.add("1-3 b: cdefg"); rawData.add("2-9 c: ccccccccc"); - //arrange Day02 day02 = new Day02(); day02.addInput(rawData); - String expectedResult = "Part 2 answer: " + 1; - //act String actualResult = day02.secondPart(); - //assert Assert.assertEquals(expectedResult, actualResult); } - // Second part raw data from file (real puzzle data) @Test public void test_secondPart_puzzleData_returnsExpectedResult() { - //arrange Day02 day02 = new Day02(); - String expectedResult = "Part 2 answer: " + 321; - //act String actualResult = day02.secondPart(); - //assert Assert.assertEquals(expectedResult, actualResult); } - - -} +} \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java b/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java index 1db58171..2efdb56b 100644 --- a/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java @@ -18,7 +18,7 @@ public void testGetDay() { // Test getTestData() @Test - public void testGetTestData(){ + public void testGetTestData() { Day03 day03 = new Day03(); String[] lines = day03.getTestData(); String actualSquare = Character.toString(lines[0].charAt(0)); @@ -28,46 +28,39 @@ public void testGetTestData(){ // Test getNumTrees() with testData @Test - public void testGetNumTrees(){ + public void testGetNumTrees() { Day03 day03 = new Day03(); String actualTrees = "Trees encountered: " + day03.getNumTrees(day03.getTestData()); String expectedTrees = "Trees encountered: " + 7; Assert.assertEquals(actualTrees, expectedTrees); - } // Test getNumTrees() with real data (input_day03.txt) @Test - public void testGetNumTreesRealData(){ + public void testGetNumTreesRealData() { Day03 day03 = new Day03(); String actualTrees = day03.firstPart(); String expectedTrees = "Trees encountered: " + 159; Assert.assertEquals(actualTrees, expectedTrees); - } - // puzzle day03 part 2 // Test getProduct() with test data @Test - public void testGetProduct(){ + public void testGetProduct() { Day03 day03 = new Day03(); String actualTrees = "Product of all slopes: " + day03.getProduct(day03.getTestData()); String expectedTrees = "Product of all slopes: " + 336; Assert.assertEquals(actualTrees, expectedTrees); - } // puzzle day03 part 2 // Test getProduct() with real data @Test - public void testGetProduct_realData(){ + public void testGetProduct_realData() { Day03 day03 = new Day03(); String actualTrees = day03.secondPart(); String expectedTrees = "Product of all slopes: " + "6419669520"; Assert.assertEquals(actualTrees, expectedTrees); - } - - -} +} \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java b/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java index 21fc3126..0d64b74a 100644 --- a/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java @@ -1,11 +1,8 @@ package org.haffson.adventofcode.days.day04; -import org.haffson.adventofcode.days.day03.Day03; import org.junit.Assert; import org.junit.Test; -import java.util.HashMap; - public class Day04Test { // test output of method @@ -27,7 +24,6 @@ public void test_getRawDataArray2() { Assert.assertEquals(actual, expected); } - // test number of valid passports of test data @Test public void test_getNumberValidPassports() { @@ -54,5 +50,4 @@ public void test_getRestrictedNumberValidPassports() { int actual = day04.getRestrictedNumberValidPassports(day04.getRawData(day04.resource)); Assert.assertEquals(actual, expected); } - -} +} \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java b/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java index c1ee0695..91e1bf9a 100644 --- a/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java @@ -1,11 +1,10 @@ package org.haffson.adventofcode.days.day05; -import org.haffson.adventofcode.days.day04.Day04; import org.junit.Assert; import org.junit.Test; - import java.util.ArrayList; import java.util.Arrays; +import java.util.List; public class Day05Test { @@ -14,9 +13,9 @@ public class Day05Test { @Test public void test_getRawDataArray1() { Day05 day05 = new Day05(); - ArrayList expected = new ArrayList( + List expected = new ArrayList<>( Arrays.asList("BFFFBBFRRR", "FFFBBBFRRR", "BBFFBBFRLL")); - ArrayList actual = day05.getRawdataAsList(day05.testDataInputStream); + List actual = Day05.getRawdataAsList(day05.testDataInputStream); Assert.assertEquals(expected, actual); } @@ -39,5 +38,4 @@ public void test_secondPart() { String actual = day05.secondPart(); Assert.assertEquals(expected, actual); } - } From 71ed2139bfad2360912bdddf6854462cd98cd20a Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Fri, 17 Sep 2021 15:18:39 +0200 Subject: [PATCH 30/36] day01, day02, day03, day04: using utility class to read in raw Data, format scripts, change modifiers to private and final whenever possible. --- .../controller/AdventOfCodeController.java | 2 +- .../org/haffson/adventofcode/days/Days.java | 1 + .../adventofcode/days/day01/Day01.java | 104 ++++++-------- .../adventofcode/days/day02/Day02.java | 130 ++++++------------ .../adventofcode/days/day03/Day03.java | 97 +++++-------- .../adventofcode/days/day04/Day04.java | 93 +++++-------- .../adventofcode/days/day05/Day05.java | 2 +- .../service/AdventOfCodeService.java | 8 +- .../adventofcode/days/day01/Day01Test.java | 12 ++ .../adventofcode/days/day02/Day02Test.java | 32 ++--- .../adventofcode/days/day03/Day03Test.java | 48 +++---- .../adventofcode/days/day04/Day04Test.java | 40 ++---- 12 files changed, 226 insertions(+), 343 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java b/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java index c574b39a..99f6755b 100644 --- a/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java +++ b/src/main/java/org/haffson/adventofcode/controller/AdventOfCodeController.java @@ -54,7 +54,7 @@ public AdventOfCodeController(AdventOfCodeService adventOfCodeService) { */ @GetMapping public Resource getResultForASpecificDayAndPuzzlePart(@RequestParam(value = "day", defaultValue = "1") Integer day, - @RequestParam(value = "part", defaultValue = "1") Integer part) { + @RequestParam(value = "part", defaultValue = "1") Integer part){ logger.info("The results for day " + day + ", part " + part + " have been requested."); diff --git a/src/main/java/org/haffson/adventofcode/days/Days.java b/src/main/java/org/haffson/adventofcode/days/Days.java index dea186cf..0aac8b8a 100644 --- a/src/main/java/org/haffson/adventofcode/days/Days.java +++ b/src/main/java/org/haffson/adventofcode/days/Days.java @@ -2,6 +2,7 @@ import org.haffson.adventofcode.ProblemStatusEnum; +import java.util.List; import java.util.Map; /** diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index d011054f..93ec40eb 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -1,11 +1,12 @@ package org.haffson.adventofcode.days.day01; +import org.haffson.adventofcode.utils.DataLoader; import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; import org.springframework.stereotype.Component; -import java.io.FileNotFoundException; -import java.io.InputStream; + import java.util.*; +import java.util.stream.Collectors; /** * Implementation for Day 1: Chronal Calibration. @@ -13,22 +14,22 @@ @Component public class Day01 implements Days { - /** - * The puzzle status {@code HashMap} - */ private final Map problemStatus; + private final List numbers; - // Read content of input file - public InputStream resource = getClass().getResourceAsStream("/data/day01/input_day01.txt"); - private final Integer[] data = getRawData(resource); - - // @Autowired - Day01() { + public Day01() { + //get data + this.numbers = DataLoader.getDataDay01("/day01/input_day01.txt", "\n"); + // set ProblemStatus this.problemStatus = new HashMap<>(); this.problemStatus.put(1, ProblemStatusEnum.SOLVED); this.problemStatus.put(2, ProblemStatusEnum.SOLVED); } + public List getNumbers() { + return numbers; + } + @Override public int getDay() { return 1; @@ -41,70 +42,53 @@ public Map getProblemStatus() { @Override public String firstPart() { - return "Product 1: " + calculateNumber1(data); + return "Product 1: " + calculateProduct_Part1(numbers); } @Override public String secondPart() { - try { - return "Product 2: " + calculateNumber2(data); - } catch (FileNotFoundException e) { - return "error"; - } + return "Product 2: " + calculateProduct_Part2(numbers); + } + + + // utility method: subtract numbers by 2020 + private List getSubtractedBy2020(List numbers) { + return numbers.stream() + .map(value -> 2020 - value) + .collect(Collectors.toList()); } /** * Primary method for Day 1, Part 1. * Calculates the product of two specific numbers from a list * - * @return the final frequency + * @return the product */ - // read raw data and transform it to String[] - public Integer[] getRawData(InputStream resource) { - ArrayList rawData; - try (Scanner scan = new Scanner(resource)) { - rawData = new ArrayList<>(); - - while (scan.hasNextLine()) { - rawData.add(scan.nextLine()); - } - } - Integer[] rawData_array = new Integer[rawData.size()]; - for (int i = 0; i < rawData.size(); i++) rawData_array[i] = Integer.parseInt(rawData.get(i)); - - return rawData_array; + private int calculateProduct_Part1(List numbers) { + // check for intersection of two lists + numbers.retainAll(getSubtractedBy2020(numbers)); + // product of "intersected" values is the puzzle's answer! + return numbers.get(0) * numbers.get(1); } - private int calculateNumber1(Integer[] rawData_array) { - List data = new ArrayList<>(rawData_array.length); - data.addAll(Arrays.asList(rawData_array)); - // create arraylist that is subtracted by 2020 - ArrayList data2 = new ArrayList<>(); - for (Integer datum : data) { - data2.add(2020 - datum); - } - // check for intersection of two arraylists - data.retainAll(data2); - // multiplication of "intersected" values is the puzzle's answer! - return data.get(0) * data.get(1); - } + /** + * Primary method for Day 1, Part 2. + * Calculates the product of two specific numbers from a list + * + * @return the product + */ + private int calculateProduct_Part2(List numbers) { + List numbersSubtractedBy2020 = getSubtractedBy2020(numbers); - private int calculateNumber2(Integer[] rawData_array) throws FileNotFoundException { - List data = new ArrayList<>(rawData_array.length); - data.addAll(Arrays.asList(rawData_array)); - // create arraylist that is subtracted by 2020 - ArrayList data2 = new ArrayList<>(); - for (Integer datum : data) { - data2.add(2020 - datum); - } - List data3 = new ArrayList<>(); - for (int k = 0; k < data.size(); k++) { - for (Integer datum : data) { - data3.add(data.get(k) + datum); + List tempData = new ArrayList<>(); + for (int k = 0; k < numbers.size(); k++) { + for (Integer datum : numbers) { + tempData.add(numbers.get(k) + datum); } } - data2.retainAll(data3); - // multiplication of "intersected" values is the puzzle's answer! - return (2020 - data2.get(0)) * (2020 - data2.get(1)) * (2020 - data2.get(2)); + // check for intersection of two lists + numbersSubtractedBy2020.retainAll(tempData); + // product of "intersected" values is the puzzle's answer! + return (2020 - numbersSubtractedBy2020.get(0)) * (2020 - numbersSubtractedBy2020.get(1)) * (2020 - numbersSubtractedBy2020.get(2)); } } \ No newline at end of file diff --git a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java index d37367d6..772f70ba 100644 --- a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java +++ b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java @@ -1,13 +1,12 @@ package org.haffson.adventofcode.days.day02; -import org.apache.commons.lang3.StringUtils; import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; -import org.springframework.beans.factory.annotation.Autowired; +import org.haffson.adventofcode.utils.CheckStringisEmpty; +import org.haffson.adventofcode.utils.DataLoader; import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; -import java.io.FileNotFoundException; -import java.io.InputStream; + import java.util.*; @@ -17,22 +16,23 @@ @Component public class Day02 implements Days { - // Read content of input file - public InputStream resource = getClass().getResourceAsStream("/data/day02/input_day02.txt"); - private List rawData = getRawDataAsList(resource); - - /** - * The puzzle status {@code HashMap} - */ + // get passwordDatabase private final Map problemStatus; + private final List passwordDatabase; - @Autowired - Day02() { + Day02(@NonNull String filename) { + //get data + this.passwordDatabase = DataLoader.getRawDataAsList("/day02/" + filename, "\n"); + // set problemstatus this.problemStatus = new HashMap<>(); this.problemStatus.put(1, ProblemStatusEnum.SOLVED); this.problemStatus.put(2, ProblemStatusEnum.SOLVED); } + public List getPasswordDatabase() { + return passwordDatabase; + } + @Override public int getDay() { return 2; @@ -45,39 +45,12 @@ public Map getProblemStatus() { @Override public String firstPart() { - try { - return "Part 1 answer: " + getNumberPwd1(); - } catch (FileNotFoundException e) { - return "Error in method 1: " + e.getMessage(); - } + return "Part 1 answer: " + getNumberPassword1(passwordDatabase); } @Override public String secondPart() { - try { - return "Part 2 answer: " + getNumberPwd2(); - } catch (FileNotFoundException e) { - return "Error in method 2: " + e.getMessage(); - } - } - - /** - * Method to read raw data from file into list - * - * @return raw data as list - */ - public List getRawDataAsList(InputStream resource) { - - ArrayList rawData; - try (Scanner scan = new Scanner(resource)) { - rawData = new ArrayList<>(); - - while (scan.hasNextLine()) { - rawData.add(scan.nextLine()); - } - } - - return rawData; + return "Part 2 answer: " + getNumberPassword2(passwordDatabase); } /** @@ -91,37 +64,29 @@ public static class Data { private final String password; public Data(int min, int max, @NonNull String letter, @NonNull String password) { - this.min = min; this.max = max; - this.letter = requireNonNullAndNonEmpty(letter); - this.password = requireNonNullAndNonEmpty(password); - + this.letter = CheckStringisEmpty.requireNonNullAndNonEmpty(letter); + this.password = CheckStringisEmpty.requireNonNullAndNonEmpty(password); } - } - public static String requireNonNullAndNonEmpty(String string) { - if (StringUtils.isEmpty(string)) { - throw new NullPointerException("The string is null or empty"); - } else { - return string; - } - } + public static List getPasswordData(List passwordDatabase) { + + List PasswordDataArrayList = new ArrayList<>(); + for (String line : passwordDatabase) { + // match patterns to determine min and max number of the letter in password, + // the searched letter and password itself + String pattern = "(\\d+)-(\\d+)\\s+(\\w):\\s+(\\w*)"; + int min = Integer.parseInt(line.replaceAll(pattern, "$1")); + int max = Integer.parseInt(line.replaceAll(pattern, "$2")); + String letter = line.replaceAll(pattern, "$3"); + String password = line.replaceAll(pattern, "$4"); - public List getData(List rawData) { - List dataArrayList = new ArrayList<>(); - for (String line : rawData) { - // match patterns to determine min and max number of the letter in password, - // the searched letter and password itself - String pattern = "(\\d+)-(\\d+)\\s+(\\w):\\s+(\\w*)"; - int min = Integer.parseInt(line.replaceAll(pattern, "$1")); - int max = Integer.parseInt(line.replaceAll(pattern, "$2")); - String letter = line.replaceAll(pattern, "$3"); - String password = line.replaceAll(pattern, "$4"); - - dataArrayList.add(new Data(min, max, letter, password)); + PasswordDataArrayList.add(new Data(min, max, letter, password)); + } + return PasswordDataArrayList; } - return dataArrayList; + } /** @@ -130,53 +95,42 @@ public List getData(List rawData) { * * @return the number of correct passwords in list */ - - private int getNumberPwd1() throws FileNotFoundException { - // get data - List data = getData(rawData); - int countCorrPwd = 0; // answer to puzzle day 2.1: number of correct passwords in list + public int getNumberPassword1(List passwordDatabase) { + List data = Data.getPasswordData(passwordDatabase); + int countCorrPasswords = 0; // number of correct passwords in list // loop through passwords for (Data datum : data) { int count = 0; // number of letter appearance in password - // count how often specific letter appears in pwd for (int j = 0; j < datum.password.length(); j++) { if (datum.password.charAt(j) == datum.letter.charAt(0)) count++; } // check if count meets criteria for correct password if (count >= datum.min && count <= datum.max) { - countCorrPwd++; + countCorrPasswords++; } } - return countCorrPwd; + return countCorrPasswords; } - // if raw data is not read via file, e.g. test data - public void addInput(List rawData) { - this.rawData = rawData; - } - - private int getNumberPwd2() throws FileNotFoundException { - // get data - List data = getData(rawData); + public int getNumberPassword2(List passwordDatabase) { - int countCorrPwd = 0; // answer to puzzle day 2.2: number of correct passwords in list + List data = Data.getPasswordData(passwordDatabase); + int countCorrPasswords = 0; // answer to puzzle day 2.2: number of correct passwords in list // loop through passwords for (Data datum : data) { - boolean onlyFirstPosition = datum.password.charAt(datum.min - 1) == datum.letter.charAt(0) && datum.password.charAt(datum.max - 1) != datum.letter.charAt(0); boolean onlySecondPosition = datum.password.charAt(datum.max - 1) == datum.letter.charAt(0) && datum.password.charAt(datum.min - 1) != datum.letter.charAt(0); - // letter must appear only once (either only(!) at first or only(!) at second position) if ((onlyFirstPosition && !onlySecondPosition) || (!onlyFirstPosition && onlySecondPosition)) { - countCorrPwd++; + countCorrPasswords++; } } - return countCorrPwd; + return countCorrPasswords; } } \ No newline at end of file diff --git a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java index 40e9183f..6e7addeb 100644 --- a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java +++ b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java @@ -2,10 +2,10 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; -import org.springframework.beans.factory.annotation.Autowired; +import org.haffson.adventofcode.utils.DataLoader; import org.springframework.stereotype.Component; +import org.springframework.lang.NonNull; -import java.io.InputStream; import java.util.*; /** @@ -14,22 +14,23 @@ @Component public class Day03 implements Days { - /** - * The puzzle status {@code HashMap} - */ + /// get passwordDatabase private final Map problemStatus; + private final List grid; - // Read content of input file - public InputStream resource = getClass().getResourceAsStream("/data/day03/input_day03.txt"); - private final String[] data = getRawDataAsArray(resource); - - @Autowired - Day03() { + Day03(@NonNull String filename) { + //get data + this.grid = DataLoader.getRawDataAsList("/day03/" + filename, "\n"); + // set problemstatus this.problemStatus = new HashMap<>(); this.problemStatus.put(1, ProblemStatusEnum.SOLVED); this.problemStatus.put(2, ProblemStatusEnum.SOLVED); } + public List getGrid() { + return grid; + } + @Override public int getDay() { return 3; @@ -42,74 +43,42 @@ public Map getProblemStatus() { @Override public String firstPart() { - return "Trees encountered: " + getNumTrees(data); + return "Trees encountered: " + getNumberTrees(grid); } @Override public String secondPart() { - return "Product of all slopes: " + getProduct(data); - } - - public String[] getTestData() { - final String test = "..##.......\n" + - "#...#...#..\n" + - ".#....#..#.\n" + - "..#.#...#.#\n" + - ".#...##..#.\n" + - "..#.##.....\n" + - ".#.#.#....#\n" + - ".#........#\n" + - "#.##...#...\n" + - "#...##....#\n" + - ".#..#...#.#"; - - return test.split("\\n"); - } - - public String[] getRawDataAsArray(InputStream resource) { - ArrayList rawData; - try (Scanner scan = new Scanner(resource)) { - rawData = new ArrayList<>(); - - while (scan.hasNextLine()) { - rawData.add(scan.nextLine()); - } - } - - String[] rawData_array = new String[rawData.size()]; - for (int i = 0; i < rawData.size(); i++) rawData_array[i] = rawData.get(i); - - return rawData_array; + return "Product of all slopes: " + getProduct(grid); } // method for answer of puzzle day03 part 1 -// search for number of trees encountered - public String getNumTrees(String[] data) { + // search for number of trees encountered + private int getNumberTrees(List grid) { - int sizeX = data[0].length(); // vertical direction - int sizeY = data.length; // horizontal direction - int numTrees = 0; // number of trees encountered + int sizeX = grid.get(0).length(); // vertical direction + int sizeY = grid.size(); // horizontal direction + int numberTrees = 0; // number of trees encountered char square = 0; // each coordinate on grid is called square for (int i = 1; i < sizeY; i++) { // every step: 1 square vertical, 3 squares horizontal if ((i * 3) <= sizeX) { - square = data[i * 1].charAt(i * 3); + square = grid.get(i * 1).charAt(i * 3); } // as in horizontal direction the same pattern repeats to the right many times, use modulo in if-condition else if (i * 3 > sizeX) { int repeatedPosition = (i * 3) % sizeX; - square = data[i * 1].charAt(repeatedPosition); + square = grid.get(i * 1).charAt(repeatedPosition); } if (square == '#') { - numTrees++; + numberTrees++; } } - return "" + numTrees; + return numberTrees; } - // method for answer of puzzle day03 part 1 - public String getProduct(String[] data) { + // method for answer of puzzle day03 part 2 + private long getProduct(List grid) { // 5 slopes need to be checked int[] stepY = new int[5]; int[] stepX = new int[5]; @@ -126,20 +95,20 @@ public String getProduct(String[] data) { stepX[3] = 7; stepX[4] = 1; - int sizeX = data[0].length(); // horizontal direction - int sizeY = data.length; // vertical direction + int sizeX = grid.get(0).length(); // horizontal direction + int sizeY = grid.size(); // vertical direction long product = 1; // number of product of all trees with all slopes for (int j = 0; j < stepY.length; j++) { - int numTrees = 0; // number of trees encountered + int numberTrees = 0; // number of trees encountered for (int i = 1; i * stepY[j] < sizeY; i++) { - if (data[i * stepY[j]].charAt((i * stepX[j]) % sizeX) == '#') { - numTrees++; + if (grid.get(i * stepY[j]).charAt((i * stepX[j]) % sizeX) == '#') { + numberTrees++; } } - product *= numTrees; + product *= numberTrees; } - return "" + product; + return product; } -} +} \ No newline at end of file diff --git a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java index efc1a1a2..48fa61f8 100644 --- a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java +++ b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java @@ -2,10 +2,10 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; -import org.springframework.beans.factory.annotation.Autowired; +import org.haffson.adventofcode.utils.DataLoader; import org.springframework.stereotype.Component; +import org.springframework.lang.NonNull; -import java.io.InputStream; import java.util.*; /** @@ -14,27 +14,23 @@ @Component public class Day04 implements Days { - /** - * The puzzle status {@code HashMap} - */ + // get passwordDatabase private final Map problemStatus; + private final List batchFile; - // Read content of test file (puzzle part 1) - public InputStream testResource = getClass().getResourceAsStream("/data/day04/day04_testdata.txt"); - - // Read content of test file (puzzle part 2) - public InputStream testResource2 = getClass().getResourceAsStream("/data/day04/day04_testdata2.txt"); - - // Read content of input file (real data) - public InputStream resource = getClass().getResourceAsStream("/data/day04/input_day04.txt"); - - @Autowired - Day04() { + Day04(@NonNull String filename) { + //get data + this.batchFile = DataLoader.getRawDataAsList("/day04/" + filename, "\n\n"); + // set problemstatus this.problemStatus = new HashMap<>(); this.problemStatus.put(1, ProblemStatusEnum.SOLVED); this.problemStatus.put(2, ProblemStatusEnum.SOLVED); } + public List getPasswordDatabase() { + return batchFile; + } + // get current Day @Override public int getDay() { @@ -49,38 +45,19 @@ public Map getProblemStatus() { // get answer puzzle day04.1: @Override public String firstPart() { - return "Number of valid passports: " + getNumberValidPassports(getRawData(resource)); + return "Number of valid passports: " + getNumberValidPassports(batchFile); } // get answer puzzle day04.2: @Override public String secondPart() { - return "Number of valid passports: " + getRestrictedNumberValidPassports(getRawData(resource)); - } - - // read raw data and transform it to String[] - public String[] getRawData(InputStream resource) { - - ArrayList rawData; - try (Scanner scan = new Scanner(resource)) { - rawData = new ArrayList<>(); - - while (scan.hasNext()) { - scan.useDelimiter("\n\n"); - rawData.add(scan.next()); - } - } - - String[] rawData_array = new String[rawData.size()]; - for (int i = 0; i < rawData.size(); i++) rawData_array[i] = rawData.get(i); - - return rawData_array; + return "Number of valid passports: " + getRestrictedNumberValidPassports(batchFile); } // answer to day04.1 - public int getNumberValidPassports(String[] rawData_array) { + public int getNumberValidPassports(List batchFile) { int numberOfValidPassports = 0; - for (String passport : rawData_array) { + for (String passport : batchFile) { Set validKeys = new HashSet<>(Arrays.asList("byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid")); String[] splitPassport = passport.split("[\\s+]"); for (String field : splitPassport) { @@ -95,10 +72,10 @@ public int getNumberValidPassports(String[] rawData_array) { } // answer to day04.2 - public int getRestrictedNumberValidPassports(String[] rawData_array) { + public int getRestrictedNumberValidPassports(List batchFile) { int numberOfValidPassports = 0; - for (String passport : rawData_array) { + for (String passport : batchFile) { int count = 0; Map passports = new HashMap<>(); Set validKeys = new HashSet<>(Arrays.asList("byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid")); @@ -111,26 +88,26 @@ public int getRestrictedNumberValidPassports(String[] rawData_array) { // check only passports that contain all keys if (validKeys.size() == 0) { // check birth year - int byr = Integer.parseInt(passports.get("byr")); - if (1920 <= byr && byr <= 2002) { + int birthYear = Integer.parseInt(passports.get("byr")); + if (1920 <= birthYear && birthYear <= 2002) { count++; } // check issue year - int iyr = Integer.parseInt(passports.get("iyr")); - if (2010 <= iyr && iyr <= 2020) { + int issueYear = Integer.parseInt(passports.get("iyr")); + if (2010 <= issueYear && issueYear <= 2020) { count++; } // check expiration year - int eyr = Integer.parseInt(passports.get("eyr")); - if (2020 <= eyr && eyr <= 2030) { + int expirationYear = Integer.parseInt(passports.get("eyr")); + if (2020 <= expirationYear && expirationYear <= 2030) { count++; } // check body height - String hgt = passports.get("hgt"); + String height = passports.get("hgt"); // accept only Strings that have more than 3 letters - if (hgt.length() > 3) { - String unit = hgt.substring(hgt.length() - 2); - int bodyheight = Integer.parseInt(hgt.substring(0, (hgt.length() - 2))); + if (height.length() > 3) { + String unit = height.substring(height.length() - 2); + int bodyheight = Integer.parseInt(height.substring(0, (height.length() - 2))); if (unit.equals("cm")) { if (bodyheight >= 150 && bodyheight <= 193) { count++; @@ -142,21 +119,21 @@ public int getRestrictedNumberValidPassports(String[] rawData_array) { } } // check hair color - String hcl = passports.get("hcl"); - String hclHash = hcl.substring(0, 1); - String haircolorID = hcl.substring(1); + String hairColor = passports.get("hcl"); + String hclHash = hairColor.substring(0, 1); + String haircolorID = hairColor.substring(1); if (hclHash.equals("#") && haircolorID.length() == 6 && haircolorID.matches("[0-9a-f]+")) { count++; } // check eye color - String ecl = passports.get("ecl"); + String eyeColor = passports.get("ecl"); List colors = Arrays.asList("amb", "blu", "brn", "gry", "grn", "hzl", "oth"); - if (colors.contains(ecl)) { + if (colors.contains(eyeColor)) { count++; } // check passport ID - String pid = passports.get("pid"); - if (pid.length() == 9 && pid.matches("[0-9]+")) { + String passportID = passports.get("pid"); + if (passportID.length() == 9 && passportID.matches("[0-9]+")) { count++; } // if all keys are present and all values are valid to above 7 rules then count == 7 diff --git a/src/main/java/org/haffson/adventofcode/days/day05/Day05.java b/src/main/java/org/haffson/adventofcode/days/day05/Day05.java index 36b9af98..95e58049 100644 --- a/src/main/java/org/haffson/adventofcode/days/day05/Day05.java +++ b/src/main/java/org/haffson/adventofcode/days/day05/Day05.java @@ -1,6 +1,6 @@ package org.haffson.adventofcode.days.day05; -import io.micrometer.core.lang.NonNull; +import org.springframework.lang.NonNull; import org.apache.commons.lang3.StringUtils; import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; diff --git a/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java b/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java index c3aae182..ca188f64 100644 --- a/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java +++ b/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java @@ -4,7 +4,9 @@ import org.haffson.adventofcode.controller.AdventOfCodeController; import org.haffson.adventofcode.days.Days; import org.haffson.adventofcode.exceptions.PuzzleNotSolvedYetException; +import org.haffson.adventofcode.utils.CheckStringisEmpty; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; import java.util.List; @@ -43,7 +45,7 @@ public AdventOfCodeService(List daysSolutions) { * @return a {@code String} with the result for the puzzle, or in case it has not been implemented, * an {@link PuzzleNotSolvedYetException} is thrown. */ - public String getResultsForASpecificDayAndPuzzlePart(Integer day, Integer part) { + public String getResultsForASpecificDayAndPuzzlePart(@NonNull Integer day, @NonNull Integer part) { Objects.requireNonNull(day, "day is null"); Objects.requireNonNull(part, "part is null"); @@ -52,9 +54,9 @@ public String getResultsForASpecificDayAndPuzzlePart(Integer day, Integer part) Days thisDaysClass = findDayForDay(day); if (!isProblemSolvedForPart(thisDaysClass, part)) { throw new PuzzleNotSolvedYetException(new Throwable()); - } else if ((part).equals(1)) { + } else if (part==1) { return thisDaysClass.firstPart(); - } else if ((part).equals(2)) { + } else if (part==2) { return thisDaysClass.secondPart(); } else { return "This puzzle has not been solved yet."; diff --git a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java index 7e0bbe45..afdfcc53 100644 --- a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java @@ -5,6 +5,7 @@ import org.junit.runner.RunWith; import org.springframework.test.context.junit4.SpringRunner; + @RunWith(SpringRunner.class) public class Day01Test { @@ -16,6 +17,17 @@ public void testGetDay() { Assert.assertEquals(expectedResult, actualResult); } + @Test + public void test_rawDataNotEmpty() { + //arrange + Day01 day01 = new Day01(); + Integer expectedSize = 200; + //act + Integer actualSize = day01.getNumbers().size(); + //assert + Assert.assertEquals(expectedSize, actualSize); + } + @Test public void test_firstPart_returnsExpectedResult() { //arrange diff --git a/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java b/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java index b9ca6ef8..4b16efa6 100644 --- a/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java @@ -3,6 +3,7 @@ import org.junit.Assert; import org.junit.Test; +import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; @@ -11,7 +12,7 @@ public class Day02Test { @Test public void testGetDay() { - Day02 day02 = new Day02(); + Day02 day02 = new Day02("input_day02.txt"); int expectedResult = 2; int actualResult = day02.getDay(); Assert.assertEquals(expectedResult, actualResult); @@ -19,14 +20,9 @@ public void testGetDay() { // First part test data @Test - public void test_firstPart_returnsExpectedResult() { - List rawData = new ArrayList<>(); - rawData.add("1-3 a: abcde"); - rawData.add("1-3 b: cdefg"); - rawData.add("2-9 c: ccccccccc"); - //arrange - Day02 day02 = new Day02(); - day02.addInput(rawData); + public void test_testData_firstPart_returnsExpectedResult() { + // arrange + Day02 day02 = new Day02("day02_testdata.txt"); String expectedResult = "Part 1 answer: " + 2; //act String actualResult = day02.firstPart(); @@ -36,9 +32,9 @@ public void test_firstPart_returnsExpectedResult() { // First part raw data from file (real puzzle data) @Test - public void test_firstPart_puzzleData_returnsExpectedResult() { + public void test_firstPart_returnsExpectedResult() { //arrange - Day02 day02 = new Day02(); + Day02 day02 = new Day02("input_day02.txt"); String expectedResult = "Part 1 answer: " + 607; //act String actualResult = day02.firstPart(); @@ -48,14 +44,10 @@ public void test_firstPart_puzzleData_returnsExpectedResult() { // Second part test data @Test - public void test_secondPart_returnsExpectedResult() { - List rawData = new ArrayList<>(); - rawData.add("1-3 a: abcde"); - rawData.add("1-3 b: cdefg"); - rawData.add("2-9 c: ccccccccc"); + public void test_testData_secondPart_returnsExpectedResult() { //arrange - Day02 day02 = new Day02(); - day02.addInput(rawData); + Day02 day02 = new Day02("day02_testdata.txt"); +// day02.addInput(rawData); String expectedResult = "Part 2 answer: " + 1; //act String actualResult = day02.secondPart(); @@ -65,9 +57,9 @@ public void test_secondPart_returnsExpectedResult() { // Second part raw data from file (real puzzle data) @Test - public void test_secondPart_puzzleData_returnsExpectedResult() { + public void test_secondPart_returnsExpectedResult() { //arrange - Day02 day02 = new Day02(); + Day02 day02 = new Day02("input_day02.txt"); String expectedResult = "Part 2 answer: " + 321; //act String actualResult = day02.secondPart(); diff --git a/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java b/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java index 2efdb56b..4d3b3188 100644 --- a/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java @@ -3,6 +3,8 @@ import org.junit.Assert; import org.junit.Test; +import java.util.List; + //@RunWith(SpringRunner.class) public class Day03Test { @@ -10,57 +12,57 @@ public class Day03Test { // Test getDay() @Test public void testGetDay() { - Day03 day03 = new Day03(); - int actualDay = day03.getDay(); + Day03 day03 = new Day03("input_day03.txt"); int expectedDay = 3; - Assert.assertEquals(actualDay, expectedDay); + int actualDay = day03.getDay(); + Assert.assertEquals(expectedDay, actualDay); } // Test getTestData() @Test public void testGetTestData() { - Day03 day03 = new Day03(); - String[] lines = day03.getTestData(); - String actualSquare = Character.toString(lines[0].charAt(0)); + Day03 day03 = new Day03("day03_testdata.txt"); + List grid = day03.getGrid(); String expectedSquare = "."; - Assert.assertEquals(actualSquare, expectedSquare); + String actualSquare = Character.toString(grid.get(0).charAt(0)); + Assert.assertEquals(expectedSquare, actualSquare); } - // Test getNumTrees() with testData + // Test getNumberTrees() with testData @Test - public void testGetNumTrees() { - Day03 day03 = new Day03(); - String actualTrees = "Trees encountered: " + day03.getNumTrees(day03.getTestData()); + public void testGetNumberTrees() { + Day03 day03 = new Day03("day03_testdata.txt"); String expectedTrees = "Trees encountered: " + 7; - Assert.assertEquals(actualTrees, expectedTrees); + String actualTrees = day03.firstPart(); + Assert.assertEquals(expectedTrees, actualTrees); } - // Test getNumTrees() with real data (input_day03.txt) + // Test getNumberTrees() with real data (input_day03.txt) @Test - public void testGetNumTreesRealData() { - Day03 day03 = new Day03(); - String actualTrees = day03.firstPart(); + public void testGetNumberTreesRealData() { + Day03 day03 = new Day03("input_day03.txt"); String expectedTrees = "Trees encountered: " + 159; - Assert.assertEquals(actualTrees, expectedTrees); + String actualTrees = day03.firstPart(); + Assert.assertEquals(expectedTrees, actualTrees); } // puzzle day03 part 2 // Test getProduct() with test data @Test public void testGetProduct() { - Day03 day03 = new Day03(); - String actualTrees = "Product of all slopes: " + day03.getProduct(day03.getTestData()); + Day03 day03 = new Day03("day03_testdata.txt"); String expectedTrees = "Product of all slopes: " + 336; - Assert.assertEquals(actualTrees, expectedTrees); + String actualTrees = day03.secondPart(); + Assert.assertEquals(expectedTrees, actualTrees); } // puzzle day03 part 2 // Test getProduct() with real data @Test public void testGetProduct_realData() { - Day03 day03 = new Day03(); - String actualTrees = day03.secondPart(); + Day03 day03 = new Day03("input_day03.txt"); String expectedTrees = "Product of all slopes: " + "6419669520"; - Assert.assertEquals(actualTrees, expectedTrees); + String actualTrees = day03.secondPart(); + Assert.assertEquals(expectedTrees, actualTrees); } } \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java b/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java index 0d64b74a..dd3e9569 100644 --- a/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java @@ -5,49 +5,39 @@ public class Day04Test { - // test output of method - @Test - public void test_getRawDataArray1() { - Day04 day04 = new Day04(); - String expected = "ecl:gry pid:860033327 eyr:2020 hcl:#fffffd\n" + - "byr:1937 iyr:2017 cid:147 hgt:183cm"; - String actual = day04.getRawData(day04.testResource)[0]; - Assert.assertEquals(actual, expected); - } - // test length of output of method @Test public void test_getRawDataArray2() { - Day04 day04 = new Day04(); + Day04 day04 = new Day04("day04_testdata.txt"); Integer expected = 4; - Integer actual = day04.getRawData(day04.testResource).length; - Assert.assertEquals(actual, expected); + Integer actual = day04.getPasswordDatabase().size(); + Assert.assertEquals(expected, actual); } // test number of valid passports of test data @Test public void test_getNumberValidPassports() { - Day04 day04 = new Day04(); - int expected = 2; - int actual = day04.getNumberValidPassports(day04.getRawData(day04.testResource)); - Assert.assertEquals(actual, expected); + Day04 day04 = new Day04("day04_testdata.txt"); + String expected = "Number of valid passports: " + 2; + String actual = day04.firstPart(); + Assert.assertEquals(expected, actual); } // test number of valid passports of input data @Test public void test_getNumberValidPassports1() { - Day04 day04 = new Day04(); - int expected = 250; - int actual = day04.getNumberValidPassports(day04.getRawData(day04.resource)); - Assert.assertEquals(actual, expected); + Day04 day04 = new Day04("input_day04.txt"); + String expected = "Number of valid passports: " + 250; + String actual = day04.firstPart(); + Assert.assertEquals(expected, actual); } // puzzle 2 test number of valid passports of input data (stricter rules) @Test public void test_getRestrictedNumberValidPassports() { - Day04 day04 = new Day04(); - int expected = 158; - int actual = day04.getRestrictedNumberValidPassports(day04.getRawData(day04.resource)); - Assert.assertEquals(actual, expected); + Day04 day04 = new Day04("input_day04.txt"); + String expected = "Number of valid passports: " + 158; + String actual = day04.secondPart(); + Assert.assertEquals(expected, actual); } } \ No newline at end of file From 423f0d2f3b420effae7eeb4a54fb7763f8edb122 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Mon, 20 Sep 2021 11:47:21 +0200 Subject: [PATCH 31/36] day01, day02, day03, day04, day05: using utility class to read in raw Data (DataLoader.java), to create problemStatus Maps (Problemstatus.java) and to throw illegal Argument Exception if Strings are empty (CheckStringIsEmpty.java). Additionally, some script formatting, modifiers changing to private and final whenever possible and variable renaming. --- .../adventofcode/ProblemStatusEnum.java | 12 ++- .../adventofcode/days/day01/Day01.java | 10 +-- .../adventofcode/days/day02/Day02.java | 7 +- .../adventofcode/days/day03/Day03.java | 7 +- .../adventofcode/days/day04/Day04.java | 9 +- .../adventofcode/days/day05/Day05.java | 88 +++++++------------ .../service/AdventOfCodeService.java | 4 +- .../utils/CheckStringisEmpty.java | 20 +++++ .../adventofcode/utils/DataLoader.java | 56 ++++++++++++ .../adventofcode/utils/ProblemStatus.java | 22 +++++ .../resources/data/day02/day02_testdata.txt | 3 + .../resources/data/day03/day03_testdata.txt | 11 +++ .../adventofcode/days/day01/Day01Test.java | 23 ++++- .../adventofcode/days/day04/Day04Test.java | 2 +- .../adventofcode/days/day05/Day05Test.java | 18 +--- 15 files changed, 194 insertions(+), 98 deletions(-) create mode 100644 src/main/java/org/haffson/adventofcode/utils/CheckStringisEmpty.java create mode 100644 src/main/java/org/haffson/adventofcode/utils/DataLoader.java create mode 100644 src/main/java/org/haffson/adventofcode/utils/ProblemStatus.java create mode 100644 src/main/resources/data/day02/day02_testdata.txt create mode 100644 src/main/resources/data/day03/day03_testdata.txt diff --git a/src/main/java/org/haffson/adventofcode/ProblemStatusEnum.java b/src/main/java/org/haffson/adventofcode/ProblemStatusEnum.java index 585793bb..e4fbbe04 100644 --- a/src/main/java/org/haffson/adventofcode/ProblemStatusEnum.java +++ b/src/main/java/org/haffson/adventofcode/ProblemStatusEnum.java @@ -6,12 +6,18 @@ * @author Michelle Fernandez Bieber */ public enum ProblemStatusEnum { - /** if the puzzle has been solved */ + /** + * if the puzzle has been solved + */ SOLVED, - /** if the puzzle is being worked on */ + /** + * if the puzzle is being worked on + */ IN_PROGRESS, - /** if the puzzle hasn't been started yet */ + /** + * if the puzzle hasn't been started yet + */ UNSOLVED } diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index 93ec40eb..6818615e 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -3,6 +3,7 @@ import org.haffson.adventofcode.utils.DataLoader; import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; +import org.haffson.adventofcode.utils.ProblemStatus; import org.springframework.stereotype.Component; import java.util.*; @@ -17,13 +18,12 @@ public class Day01 implements Days { private final Map problemStatus; private final List numbers; - public Day01() { + public Day01(String filename) { //get data - this.numbers = DataLoader.getDataDay01("/day01/input_day01.txt", "\n"); + this.numbers = DataLoader.getDataDay01("/day01/" + filename, "\n"); // set ProblemStatus - this.problemStatus = new HashMap<>(); - this.problemStatus.put(1, ProblemStatusEnum.SOLVED); - this.problemStatus.put(2, ProblemStatusEnum.SOLVED); + this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, + ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); } public List getNumbers() { diff --git a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java index 772f70ba..a08e7ac0 100644 --- a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java +++ b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java @@ -4,6 +4,7 @@ import org.haffson.adventofcode.days.Days; import org.haffson.adventofcode.utils.CheckStringisEmpty; import org.haffson.adventofcode.utils.DataLoader; +import org.haffson.adventofcode.utils.ProblemStatus; import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; @@ -16,7 +17,6 @@ @Component public class Day02 implements Days { - // get passwordDatabase private final Map problemStatus; private final List passwordDatabase; @@ -24,9 +24,8 @@ public class Day02 implements Days { //get data this.passwordDatabase = DataLoader.getRawDataAsList("/day02/" + filename, "\n"); // set problemstatus - this.problemStatus = new HashMap<>(); - this.problemStatus.put(1, ProblemStatusEnum.SOLVED); - this.problemStatus.put(2, ProblemStatusEnum.SOLVED); + this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, + ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); } public List getPasswordDatabase() { diff --git a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java index 6e7addeb..30ff0d4a 100644 --- a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java +++ b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java @@ -3,6 +3,7 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; import org.haffson.adventofcode.utils.DataLoader; +import org.haffson.adventofcode.utils.ProblemStatus; import org.springframework.stereotype.Component; import org.springframework.lang.NonNull; @@ -14,7 +15,6 @@ @Component public class Day03 implements Days { - /// get passwordDatabase private final Map problemStatus; private final List grid; @@ -22,9 +22,8 @@ public class Day03 implements Days { //get data this.grid = DataLoader.getRawDataAsList("/day03/" + filename, "\n"); // set problemstatus - this.problemStatus = new HashMap<>(); - this.problemStatus.put(1, ProblemStatusEnum.SOLVED); - this.problemStatus.put(2, ProblemStatusEnum.SOLVED); + this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, + ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); } public List getGrid() { diff --git a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java index 48fa61f8..6c477c6c 100644 --- a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java +++ b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java @@ -3,6 +3,7 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; import org.haffson.adventofcode.utils.DataLoader; +import org.haffson.adventofcode.utils.ProblemStatus; import org.springframework.stereotype.Component; import org.springframework.lang.NonNull; @@ -14,7 +15,6 @@ @Component public class Day04 implements Days { - // get passwordDatabase private final Map problemStatus; private final List batchFile; @@ -22,12 +22,11 @@ public class Day04 implements Days { //get data this.batchFile = DataLoader.getRawDataAsList("/day04/" + filename, "\n\n"); // set problemstatus - this.problemStatus = new HashMap<>(); - this.problemStatus.put(1, ProblemStatusEnum.SOLVED); - this.problemStatus.put(2, ProblemStatusEnum.SOLVED); + this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, + ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); } - public List getPasswordDatabase() { + public List getBatchFile() { return batchFile; } diff --git a/src/main/java/org/haffson/adventofcode/days/day05/Day05.java b/src/main/java/org/haffson/adventofcode/days/day05/Day05.java index 95e58049..da5a920c 100644 --- a/src/main/java/org/haffson/adventofcode/days/day05/Day05.java +++ b/src/main/java/org/haffson/adventofcode/days/day05/Day05.java @@ -1,107 +1,83 @@ package org.haffson.adventofcode.days.day05; +import org.haffson.adventofcode.utils.CheckStringisEmpty; +import org.haffson.adventofcode.utils.DataLoader; +import org.haffson.adventofcode.utils.ProblemStatus; import org.springframework.lang.NonNull; -import org.apache.commons.lang3.StringUtils; import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; @Component public class Day05 implements Days { - /** - * the puzzle status {@code HashMap} - */ private final Map problemStatus; - - @Autowired - Day05() { - this.problemStatus = new HashMap<>(); - this.problemStatus.put(1, ProblemStatusEnum.SOLVED); - this.problemStatus.put(2, ProblemStatusEnum.SOLVED); + private final List boardingPasses; + + Day05(@NonNull String filename) { + //get data + this.boardingPasses = DataLoader.getRawDataAsList("/day05/" + filename, "\n"); + // set problemstatus + this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, + ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); } - // read in test data and AoC data as InputStream and return data as ArrayList - public InputStream testDataInputStream = getClass().getResourceAsStream("/data/day05/day05_testdata1.txt"); - public InputStream dataInputStream = getClass().getResourceAsStream("/data/day05/input_day05.txt"); - - public static ArrayList getRawdataAsList(InputStream data) { - ArrayList rawdata; - try (Scanner scan = new Scanner(data)) { - rawdata = new ArrayList<>(); - - while (scan.hasNext()) { - scan.useDelimiter("\n"); - rawdata.add(scan.next()); - } - } - return rawdata; + public List getBoardingPasses() { + return boardingPasses; } // answers puzzle 5 // binary space partitioning principle - public int getRowOrCol(@NonNull String s, int stop, char identifier1, char identifier2) { - s = requireNonNullAndNonEmpty(s); + public int getRowOrCol(@NonNull String seatName, int maxNumberRowsOrCols, char character1, char character2) { + CheckStringisEmpty.requireNonNullAndNonEmpty(seatName); int numMin = 0; - int numMax = stop - 1; + int numMax = maxNumberRowsOrCols - 1; int rowOrCol = 0; - int num = 1; + int exponent = 1; int count = 0; - for (Character letter : s.toCharArray()) { - if (letter.equals(identifier1)) { - numMax = (int) (numMax - stop / Math.pow(2, num)); - num++; + for (Character letter : seatName.toCharArray()) { + if (letter.equals(character1)) { + numMax = (int) (numMax - maxNumberRowsOrCols / Math.pow(2, exponent)); + exponent++; count++; } - if (letter.equals(identifier2)) { - numMin = numMin + (int) (stop / Math.pow(2, num)); - num++; + if (letter.equals(character2)) { + numMin = numMin + (int) (maxNumberRowsOrCols / Math.pow(2, exponent)); + exponent++; count++; } - if (count == s.length() && (letter.equals(identifier1))) { + if (count == seatName.length() && (letter.equals(character1))) { rowOrCol = numMin; - } else if (count == s.length() && (letter.equals(identifier2))) { + } else if (count == seatName.length() && (letter.equals(character2))) { rowOrCol = numMax; } } return rowOrCol; } - @NonNull - //check for nulls (if input string is empty) - public static String requireNonNullAndNonEmpty(String string) { - if (StringUtils.isEmpty(string)) { - throw new IllegalArgumentException("The string is null or empty"); - } else { - return string; - } - } - // seatID is row*8 + column - public List getSeatID(@NonNull final InputStream dataIn) { - return getRawdataAsList(Objects.requireNonNull(dataIn, "Data Inputstream is null.")).stream() - .map(ss -> getRowOrCol(ss.substring(0, 7), 128, 'F', 'B') * 8 - + getRowOrCol(ss.substring(7), 8, 'L', 'R')) + private List getSeatID(@NonNull List boardingPasses) { + return boardingPasses.stream() + .map(seat -> getRowOrCol(seat.substring(0, 7), 128, 'F', 'B') * 8 + + getRowOrCol(seat.substring(7), 8, 'L', 'R')) .collect(Collectors.toList()); } // First Part: find highest seatID @Override public String firstPart() { - int highestSeatID = Collections.max(getSeatID(dataInputStream)); + int highestSeatID = Collections.max(getSeatID(boardingPasses)); return "The highest seatID is: " + highestSeatID; } // Second Part: find missing seatID @Override public String secondPart() { - List seatIDs_sorted = getSeatID(dataInputStream); + List seatIDs_sorted = getSeatID(boardingPasses); Collections.sort(seatIDs_sorted); int mySeat = 0; for (int i = 0; i < seatIDs_sorted.size() - 1; i++) { diff --git a/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java b/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java index ca188f64..a028f405 100644 --- a/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java +++ b/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java @@ -54,9 +54,9 @@ public String getResultsForASpecificDayAndPuzzlePart(@NonNull Integer day, @NonN Days thisDaysClass = findDayForDay(day); if (!isProblemSolvedForPart(thisDaysClass, part)) { throw new PuzzleNotSolvedYetException(new Throwable()); - } else if (part==1) { + } else if (Objects.equals(part,1)) { return thisDaysClass.firstPart(); - } else if (part==2) { + } else if (Objects.equals(part,2)) { return thisDaysClass.secondPart(); } else { return "This puzzle has not been solved yet."; diff --git a/src/main/java/org/haffson/adventofcode/utils/CheckStringisEmpty.java b/src/main/java/org/haffson/adventofcode/utils/CheckStringisEmpty.java new file mode 100644 index 00000000..2d6bd888 --- /dev/null +++ b/src/main/java/org/haffson/adventofcode/utils/CheckStringisEmpty.java @@ -0,0 +1,20 @@ +package org.haffson.adventofcode.utils; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +@Component +public class CheckStringisEmpty { + + private CheckStringisEmpty() { + + } + + public static String requireNonNullAndNonEmpty(String string) { + if (StringUtils.isEmpty(string)) { + throw new IllegalArgumentException("The string is null or empty"); + } else { + return string; + } + } +} diff --git a/src/main/java/org/haffson/adventofcode/utils/DataLoader.java b/src/main/java/org/haffson/adventofcode/utils/DataLoader.java new file mode 100644 index 00000000..f6456055 --- /dev/null +++ b/src/main/java/org/haffson/adventofcode/utils/DataLoader.java @@ -0,0 +1,56 @@ +package org.haffson.adventofcode.utils; + +import org.springframework.lang.NonNull; +import org.springframework.stereotype.Component; + +import java.io.InputStream; +import java.util.*; +import java.util.stream.Collectors; + +@Component +public class DataLoader { + + private DataLoader() { + } + + public static List getRawDataAsList(@NonNull String path, @NonNull String delimiter) { + InputStream dataIn = Objects.requireNonNull(DataLoader.class.getResourceAsStream("/data" + + CheckStringisEmpty.requireNonNullAndNonEmpty(path)), + "Data InputStream must not be null."); + List rawData; + try (Scanner scan = new Scanner(dataIn)) { + rawData = new ArrayList<>(); + while (scan.hasNext()) { + scan.useDelimiter(CheckStringisEmpty.requireNonNullAndNonEmpty(delimiter)); + rawData.add(scan.next()); + } + } + return rawData; + } + + public static List getDataDay01(@NonNull String path, @NonNull String delimiter) { + return getRawDataAsList(path, delimiter).stream() + .map(Integer::parseInt) + .collect(Collectors.toList()); + } + + public static List getDataDay02(@NonNull String path, @NonNull String delimiter) { + return getRawDataAsList(path, delimiter); + } + + public static List getDataDay03(@NonNull String path, @NonNull String delimiter) { + return getRawDataAsList(path, delimiter); + } + + public static List getDataDay04(@NonNull String path, @NonNull String delimiter) { + return getRawDataAsList(path, delimiter); + } + + public static List getDataDay05(@NonNull String path, @NonNull String delimiter) { + return getRawDataAsList(path, delimiter); + } + + public static List getDataDay06(@NonNull String path, @NonNull String delimiter) { + return getRawDataAsList(path, delimiter); + } +} \ No newline at end of file diff --git a/src/main/java/org/haffson/adventofcode/utils/ProblemStatus.java b/src/main/java/org/haffson/adventofcode/utils/ProblemStatus.java new file mode 100644 index 00000000..c9d7ab51 --- /dev/null +++ b/src/main/java/org/haffson/adventofcode/utils/ProblemStatus.java @@ -0,0 +1,22 @@ +package org.haffson.adventofcode.utils; + +import org.haffson.adventofcode.ProblemStatusEnum; + +import java.util.HashMap; +import java.util.Map; + +public class ProblemStatus { + + private ProblemStatus() { + + } + + public static Map getProblemStatusMap(int part1, int part2, + ProblemStatusEnum status1, ProblemStatusEnum status2) { + final Map problemStatus = new HashMap<>(); + + problemStatus.put(part1, status1); + problemStatus.put(part2, status2); + return problemStatus; + } +} \ No newline at end of file diff --git a/src/main/resources/data/day02/day02_testdata.txt b/src/main/resources/data/day02/day02_testdata.txt new file mode 100644 index 00000000..2eab3350 --- /dev/null +++ b/src/main/resources/data/day02/day02_testdata.txt @@ -0,0 +1,3 @@ +1-3 a: abcde +1-3 b: cdefg +2-9 c: ccccccccc \ No newline at end of file diff --git a/src/main/resources/data/day03/day03_testdata.txt b/src/main/resources/data/day03/day03_testdata.txt new file mode 100644 index 00000000..8f551de5 --- /dev/null +++ b/src/main/resources/data/day03/day03_testdata.txt @@ -0,0 +1,11 @@ +..##....... +#...#...#.. +.#....#..#. +..#.#...#.# +.#...##..#. +..#.##..... +.#.#.#....# +.#........# +#.##...#... +#...##....# +.#..#...#.# \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java index afdfcc53..d0b8a0c3 100644 --- a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java @@ -1,17 +1,32 @@ package org.haffson.adventofcode.days.day01; +import org.haffson.adventofcode.ProblemStatusEnum; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.junit4.SpringRunner; +import java.util.HashMap; +import java.util.Map; + @RunWith(SpringRunner.class) public class Day01Test { + @Test + public void test_getProblemStatus() { + Day01 day01 = new Day01("input_day01.txt"); + Map expectedResult = new HashMap() {{ + put(1, ProblemStatusEnum.SOLVED); + put(2, ProblemStatusEnum.SOLVED); + }}; + Map actualResult = day01.getProblemStatus(); + Assert.assertEquals(expectedResult, actualResult); + } + @Test public void testGetDay() { - Day01 day01 = new Day01(); + Day01 day01 = new Day01("input_day01.txt"); int expectedResult = 1; int actualResult = day01.getDay(); Assert.assertEquals(expectedResult, actualResult); @@ -20,7 +35,7 @@ public void testGetDay() { @Test public void test_rawDataNotEmpty() { //arrange - Day01 day01 = new Day01(); + Day01 day01 = new Day01("input_day01.txt"); Integer expectedSize = 200; //act Integer actualSize = day01.getNumbers().size(); @@ -31,7 +46,7 @@ public void test_rawDataNotEmpty() { @Test public void test_firstPart_returnsExpectedResult() { //arrange - Day01 day01 = new Day01(); + Day01 day01 = new Day01("input_day01.txt"); String expectedResult = "Product 1: " + 326211; //act String actualResult = day01.firstPart(); @@ -42,7 +57,7 @@ public void test_firstPart_returnsExpectedResult() { @Test public void test_secondPart_returnsExpectedResult() { //arrange - Day01 day01 = new Day01(); + Day01 day01 = new Day01("input_day01.txt"); String expectedResult = "Product 2: " + 131347190; //act String actualResult = day01.secondPart(); diff --git a/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java b/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java index dd3e9569..91713ab7 100644 --- a/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java @@ -10,7 +10,7 @@ public class Day04Test { public void test_getRawDataArray2() { Day04 day04 = new Day04("day04_testdata.txt"); Integer expected = 4; - Integer actual = day04.getPasswordDatabase().size(); + Integer actual = day04.getBatchFile().size(); Assert.assertEquals(expected, actual); } diff --git a/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java b/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java index 91e1bf9a..a3d392c3 100644 --- a/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java @@ -2,28 +2,18 @@ import org.junit.Assert; import org.junit.Test; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Day05Test { - - // Test return type - @Test - public void test_getRawDataArray1() { - Day05 day05 = new Day05(); - List expected = new ArrayList<>( - Arrays.asList("BFFFBBFRRR", "FFFBBBFRRR", "BBFFBBFRLL")); - List actual = Day05.getRawdataAsList(day05.testDataInputStream); - Assert.assertEquals(expected, actual); - } - // puzzle 5.1 real data: // test method firstPart() @Test public void test_firstPart() { - Day05 day05 = new Day05(); + Day05 day05 = new Day05("input_day05.txt"); String expected = "The highest seatID is: " + 930; String actual = day05.firstPart(); Assert.assertEquals(expected, actual); @@ -33,9 +23,9 @@ public void test_firstPart() { // test method secondPart() @Test public void test_secondPart() { - Day05 day05 = new Day05(); + Day05 day05 = new Day05("input_day05.txt"); String expected = "My seatID is: " + 515; String actual = day05.secondPart(); Assert.assertEquals(expected, actual); } -} +} \ No newline at end of file From 4f179094b8468b3a3479568f3f991365d5c7bc14 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 22 Sep 2021 16:10:48 +0200 Subject: [PATCH 32/36] Create mock Objects of DataLoader for all testing scripts --- build.gradle | 7 +- .../adventofcode/days/day01/Day01.java | 12 ++- .../adventofcode/days/day02/Day02.java | 20 ++-- .../adventofcode/days/day03/Day03.java | 9 +- .../adventofcode/days/day04/Day04.java | 9 +- .../adventofcode/days/day05/Day05.java | 22 +++-- .../service/AdventOfCodeService.java | 1 - ...ngisEmpty.java => CheckStringIsEmpty.java} | 9 +- .../adventofcode/utils/DataLoader.java | 22 ++--- .../resources/data/day06/day06_testdata.txt | 15 +++ .../adventofcode/days/day01/Day01Test.java | 59 ++++++++---- .../adventofcode/days/day02/Day02Test.java | 69 ++++++------- .../adventofcode/days/day03/Day03Test.java | 71 +++++++------- .../adventofcode/days/day04/Day04Test.java | 96 +++++++++++++++---- .../adventofcode/days/day05/Day05Test.java | 39 +++++--- 15 files changed, 283 insertions(+), 177 deletions(-) rename src/main/java/org/haffson/adventofcode/utils/{CheckStringisEmpty.java => CheckStringIsEmpty.java} (63%) create mode 100644 src/main/resources/data/day06/day06_testdata.txt diff --git a/build.gradle b/build.gradle index df0f07cf..3a04f44c 100644 --- a/build.gradle +++ b/build.gradle @@ -75,16 +75,21 @@ dependencies { implementation 'org.liquibase:liquibase-core' implementation 'com.google.code.findbugs:jsr305:1.3.9' implementation 'org.apache.commons:commons-lang3:3.12.0' + implementation 'org.junit.jupiter:junit-jupiter:5.7.0' + implementation 'org.junit.jupiter:junit-jupiter:5.7.0' asciidoctor 'org.springframework.restdocs:spring-restdocs-asciidoctor' testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc") testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'junit:junit' +// testImplementation 'junit:junit' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1' testImplementation 'org.mockito:mockito-inline:2.8.9' testImplementation 'com.tngtech.archunit:archunit:0.9.3' } test { outputs.dir snippetsDir + useJUnitPlatform() } asciidoctor { diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index 6818615e..2f2307bf 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -4,11 +4,13 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; import org.haffson.adventofcode.utils.ProblemStatus; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.*; import java.util.stream.Collectors; + /** * Implementation for Day 1: Chronal Calibration. */ @@ -18,9 +20,9 @@ public class Day01 implements Days { private final Map problemStatus; private final List numbers; - public Day01(String filename) { - //get data - this.numbers = DataLoader.getDataDay01("/day01/" + filename, "\n"); + public Day01(@Value("filename") String filename, DataLoader dataLoader) { + // get data + this.numbers = dataLoader.getDataDay01("/day01/" + filename, "\n"); // set ProblemStatus this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); @@ -64,7 +66,7 @@ private List getSubtractedBy2020(List numbers) { * * @return the product */ - private int calculateProduct_Part1(List numbers) { + private int calculateProduct_Part1(final List numbers) { // check for intersection of two lists numbers.retainAll(getSubtractedBy2020(numbers)); // product of "intersected" values is the puzzle's answer! @@ -77,7 +79,7 @@ private int calculateProduct_Part1(List numbers) { * * @return the product */ - private int calculateProduct_Part2(List numbers) { + private int calculateProduct_Part2(final List numbers) { List numbersSubtractedBy2020 = getSubtractedBy2020(numbers); List tempData = new ArrayList<>(); diff --git a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java index a08e7ac0..21ca2956 100644 --- a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java +++ b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java @@ -2,13 +2,16 @@ import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; -import org.haffson.adventofcode.utils.CheckStringisEmpty; +import org.haffson.adventofcode.utils.CheckStringIsEmpty; import org.haffson.adventofcode.utils.DataLoader; import org.haffson.adventofcode.utils.ProblemStatus; +import org.springframework.beans.factory.annotation.Value; import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; /** @@ -20,9 +23,9 @@ public class Day02 implements Days { private final Map problemStatus; private final List passwordDatabase; - Day02(@NonNull String filename) { + Day02(@Value("filename") String filename, DataLoader dataLoader) { //get data - this.passwordDatabase = DataLoader.getRawDataAsList("/day02/" + filename, "\n"); + this.passwordDatabase = dataLoader.getDataDay02("/day02/" + filename, "\n"); // set problemstatus this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); @@ -65,8 +68,8 @@ public static class Data { public Data(int min, int max, @NonNull String letter, @NonNull String password) { this.min = min; this.max = max; - this.letter = CheckStringisEmpty.requireNonNullAndNonEmpty(letter); - this.password = CheckStringisEmpty.requireNonNullAndNonEmpty(password); + this.letter = CheckStringIsEmpty.requireNonNullAndNonEmpty(letter); + this.password = CheckStringIsEmpty.requireNonNullAndNonEmpty(password); } public static List getPasswordData(List passwordDatabase) { @@ -94,7 +97,7 @@ public static List getPasswordData(List passwordDatabase) { * * @return the number of correct passwords in list */ - public int getNumberPassword1(List passwordDatabase) { + public int getNumberPassword1(final List passwordDatabase) { List data = Data.getPasswordData(passwordDatabase); int countCorrPasswords = 0; // number of correct passwords in list @@ -113,7 +116,7 @@ public int getNumberPassword1(List passwordDatabase) { return countCorrPasswords; } - public int getNumberPassword2(List passwordDatabase) { + public int getNumberPassword2(final List passwordDatabase) { List data = Data.getPasswordData(passwordDatabase); int countCorrPasswords = 0; // answer to puzzle day 2.2: number of correct passwords in list @@ -131,5 +134,4 @@ public int getNumberPassword2(List passwordDatabase) { } return countCorrPasswords; } - } \ No newline at end of file diff --git a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java index 30ff0d4a..d003ef49 100644 --- a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java +++ b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java @@ -4,6 +4,7 @@ import org.haffson.adventofcode.days.Days; import org.haffson.adventofcode.utils.DataLoader; import org.haffson.adventofcode.utils.ProblemStatus; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.lang.NonNull; @@ -18,9 +19,9 @@ public class Day03 implements Days { private final Map problemStatus; private final List grid; - Day03(@NonNull String filename) { + Day03(@Value("filename") String filename, DataLoader dataLoader) { //get data - this.grid = DataLoader.getRawDataAsList("/day03/" + filename, "\n"); + this.grid = dataLoader.getDataDay03("/day03/" + filename, "\n"); // set problemstatus this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); @@ -52,7 +53,7 @@ public String secondPart() { // method for answer of puzzle day03 part 1 // search for number of trees encountered - private int getNumberTrees(List grid) { + private int getNumberTrees(final List grid) { int sizeX = grid.get(0).length(); // vertical direction int sizeY = grid.size(); // horizontal direction @@ -77,7 +78,7 @@ else if (i * 3 > sizeX) { } // method for answer of puzzle day03 part 2 - private long getProduct(List grid) { + private long getProduct(final List grid) { // 5 slopes need to be checked int[] stepY = new int[5]; int[] stepX = new int[5]; diff --git a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java index 6c477c6c..62d24db2 100644 --- a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java +++ b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java @@ -4,6 +4,7 @@ import org.haffson.adventofcode.days.Days; import org.haffson.adventofcode.utils.DataLoader; import org.haffson.adventofcode.utils.ProblemStatus; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.lang.NonNull; @@ -18,9 +19,9 @@ public class Day04 implements Days { private final Map problemStatus; private final List batchFile; - Day04(@NonNull String filename) { + Day04(@Value("filename") String filename, DataLoader dataLoader) { //get data - this.batchFile = DataLoader.getRawDataAsList("/day04/" + filename, "\n\n"); + this.batchFile = dataLoader.getDataDay04("/day04/" + filename, "\n\n"); // set problemstatus this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); @@ -54,7 +55,7 @@ public String secondPart() { } // answer to day04.1 - public int getNumberValidPassports(List batchFile) { + public int getNumberValidPassports(final List batchFile) { int numberOfValidPassports = 0; for (String passport : batchFile) { Set validKeys = new HashSet<>(Arrays.asList("byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid")); @@ -71,7 +72,7 @@ public int getNumberValidPassports(List batchFile) { } // answer to day04.2 - public int getRestrictedNumberValidPassports(List batchFile) { + public int getRestrictedNumberValidPassports(final List batchFile) { int numberOfValidPassports = 0; for (String passport : batchFile) { diff --git a/src/main/java/org/haffson/adventofcode/days/day05/Day05.java b/src/main/java/org/haffson/adventofcode/days/day05/Day05.java index da5a920c..85901485 100644 --- a/src/main/java/org/haffson/adventofcode/days/day05/Day05.java +++ b/src/main/java/org/haffson/adventofcode/days/day05/Day05.java @@ -1,14 +1,17 @@ package org.haffson.adventofcode.days.day05; -import org.haffson.adventofcode.utils.CheckStringisEmpty; +import org.haffson.adventofcode.ProblemStatusEnum; +import org.haffson.adventofcode.days.Days; +import org.haffson.adventofcode.utils.CheckStringIsEmpty; import org.haffson.adventofcode.utils.DataLoader; import org.haffson.adventofcode.utils.ProblemStatus; +import org.springframework.beans.factory.annotation.Value; import org.springframework.lang.NonNull; -import org.haffson.adventofcode.ProblemStatusEnum; -import org.haffson.adventofcode.days.Days; import org.springframework.stereotype.Component; -import java.util.*; +import java.util.Collections; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; @Component @@ -17,9 +20,9 @@ public class Day05 implements Days { private final Map problemStatus; private final List boardingPasses; - Day05(@NonNull String filename) { + Day05(@Value("filename") String filename, DataLoader dataLoader) { //get data - this.boardingPasses = DataLoader.getRawDataAsList("/day05/" + filename, "\n"); + this.boardingPasses = dataLoader.getDataDay05("/day05/" + filename, "\n"); // set problemstatus this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); @@ -31,8 +34,8 @@ public List getBoardingPasses() { // answers puzzle 5 // binary space partitioning principle - public int getRowOrCol(@NonNull String seatName, int maxNumberRowsOrCols, char character1, char character2) { - CheckStringisEmpty.requireNonNullAndNonEmpty(seatName); + private int getRowOrCol(@NonNull String seatName, int maxNumberRowsOrCols, char character1, char character2) { + CheckStringIsEmpty.requireNonNullAndNonEmpty(seatName); int numMin = 0; int numMax = maxNumberRowsOrCols - 1; int rowOrCol = 0; @@ -56,11 +59,12 @@ public int getRowOrCol(@NonNull String seatName, int maxNumberRowsOrCols, char c rowOrCol = numMax; } } + System.out.println(rowOrCol); return rowOrCol; } // seatID is row*8 + column - private List getSeatID(@NonNull List boardingPasses) { + private List getSeatID(@NonNull final List boardingPasses) { return boardingPasses.stream() .map(seat -> getRowOrCol(seat.substring(0, 7), 128, 'F', 'B') * 8 + getRowOrCol(seat.substring(7), 8, 'L', 'R')) diff --git a/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java b/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java index a028f405..926dcf5e 100644 --- a/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java +++ b/src/main/java/org/haffson/adventofcode/service/AdventOfCodeService.java @@ -4,7 +4,6 @@ import org.haffson.adventofcode.controller.AdventOfCodeController; import org.haffson.adventofcode.days.Days; import org.haffson.adventofcode.exceptions.PuzzleNotSolvedYetException; -import org.haffson.adventofcode.utils.CheckStringisEmpty; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; diff --git a/src/main/java/org/haffson/adventofcode/utils/CheckStringisEmpty.java b/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java similarity index 63% rename from src/main/java/org/haffson/adventofcode/utils/CheckStringisEmpty.java rename to src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java index 2d6bd888..c39d9963 100644 --- a/src/main/java/org/haffson/adventofcode/utils/CheckStringisEmpty.java +++ b/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java @@ -1,20 +1,17 @@ package org.haffson.adventofcode.utils; import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; -@Component -public class CheckStringisEmpty { +public class CheckStringIsEmpty { - private CheckStringisEmpty() { + private CheckStringIsEmpty() { } public static String requireNonNullAndNonEmpty(String string) { if (StringUtils.isEmpty(string)) { throw new IllegalArgumentException("The string is null or empty"); - } else { - return string; } + return string; } } diff --git a/src/main/java/org/haffson/adventofcode/utils/DataLoader.java b/src/main/java/org/haffson/adventofcode/utils/DataLoader.java index f6456055..488e7eb6 100644 --- a/src/main/java/org/haffson/adventofcode/utils/DataLoader.java +++ b/src/main/java/org/haffson/adventofcode/utils/DataLoader.java @@ -10,47 +10,47 @@ @Component public class DataLoader { - private DataLoader() { + public DataLoader() { } - public static List getRawDataAsList(@NonNull String path, @NonNull String delimiter) { + private List getRawDataAsList(@NonNull String path, @NonNull String delimiter) { InputStream dataIn = Objects.requireNonNull(DataLoader.class.getResourceAsStream("/data" - + CheckStringisEmpty.requireNonNullAndNonEmpty(path)), - "Data InputStream must not be null."); + + CheckStringIsEmpty.requireNonNullAndNonEmpty(path)), + "Data InputStream must not be null: " + path); List rawData; try (Scanner scan = new Scanner(dataIn)) { rawData = new ArrayList<>(); while (scan.hasNext()) { - scan.useDelimiter(CheckStringisEmpty.requireNonNullAndNonEmpty(delimiter)); + scan.useDelimiter(CheckStringIsEmpty.requireNonNullAndNonEmpty(delimiter)); rawData.add(scan.next()); } } return rawData; } - public static List getDataDay01(@NonNull String path, @NonNull String delimiter) { + public List getDataDay01(@NonNull String path, @NonNull String delimiter) { return getRawDataAsList(path, delimiter).stream() .map(Integer::parseInt) .collect(Collectors.toList()); } - public static List getDataDay02(@NonNull String path, @NonNull String delimiter) { + public List getDataDay02(@NonNull String path, @NonNull String delimiter) { return getRawDataAsList(path, delimiter); } - public static List getDataDay03(@NonNull String path, @NonNull String delimiter) { + public List getDataDay03(@NonNull String path, @NonNull String delimiter) { return getRawDataAsList(path, delimiter); } - public static List getDataDay04(@NonNull String path, @NonNull String delimiter) { + public List getDataDay04(@NonNull String path, @NonNull String delimiter) { return getRawDataAsList(path, delimiter); } - public static List getDataDay05(@NonNull String path, @NonNull String delimiter) { + public List getDataDay05(@NonNull String path, @NonNull String delimiter) { return getRawDataAsList(path, delimiter); } - public static List getDataDay06(@NonNull String path, @NonNull String delimiter) { + public List getDataDay06(@NonNull String path, @NonNull String delimiter) { return getRawDataAsList(path, delimiter); } } \ No newline at end of file diff --git a/src/main/resources/data/day06/day06_testdata.txt b/src/main/resources/data/day06/day06_testdata.txt new file mode 100644 index 00000000..8fdfebd9 --- /dev/null +++ b/src/main/resources/data/day06/day06_testdata.txt @@ -0,0 +1,15 @@ +abc + +a +b +c + +ab +ac + +a +a +a +a + +b \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java index d0b8a0c3..143362b5 100644 --- a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java @@ -1,67 +1,84 @@ package org.haffson.adventofcode.days.day01; import org.haffson.adventofcode.ProblemStatusEnum; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.haffson.adventofcode.utils.DataLoader; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; -import java.util.HashMap; -import java.util.Map; +import java.util.*; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.*; -@RunWith(SpringRunner.class) public class Day01Test { + DataLoader dataLoader; + // @Matthias: I think this is Java 8 the command List.of() does not exist, yet. + List testNumbers = new ArrayList<>(Arrays.asList(1721, 979, 366, 299, 675, 1456)); + + @BeforeEach + void setup() { + dataLoader = mock(DataLoader.class); + } + @Test public void test_getProblemStatus() { - Day01 day01 = new Day01("input_day01.txt"); + when(dataLoader.getDataDay01(anyString(), eq("\n"))).thenReturn(testNumbers); + Day01 day01 = new Day01("input_day01.txt", dataLoader); Map expectedResult = new HashMap() {{ put(1, ProblemStatusEnum.SOLVED); put(2, ProblemStatusEnum.SOLVED); }}; Map actualResult = day01.getProblemStatus(); - Assert.assertEquals(expectedResult, actualResult); + assertThat(actualResult).isEqualTo(expectedResult); } @Test public void testGetDay() { - Day01 day01 = new Day01("input_day01.txt"); + when(dataLoader.getDataDay01(anyString(), eq("\n"))).thenReturn(testNumbers); + Day01 day01 = new Day01("input_day01.txt", dataLoader); int expectedResult = 1; int actualResult = day01.getDay(); - Assert.assertEquals(expectedResult, actualResult); + assertThat(actualResult).isEqualTo(expectedResult); } @Test public void test_rawDataNotEmpty() { //arrange - Day01 day01 = new Day01("input_day01.txt"); - Integer expectedSize = 200; + when(dataLoader.getDataDay01(anyString(), eq("\n"))).thenReturn(testNumbers); + Day01 day01 = new Day01("input_day01.txt", dataLoader); + int expectedSize = 6; //act - Integer actualSize = day01.getNumbers().size(); + List actual = day01.getNumbers(); //assert - Assert.assertEquals(expectedSize, actualSize); + verify(dataLoader, times(1)).getDataDay01(anyString(), anyString()); + assertThat(actual).hasSize(expectedSize); } @Test public void test_firstPart_returnsExpectedResult() { //arrange - Day01 day01 = new Day01("input_day01.txt"); - String expectedResult = "Product 1: " + 326211; + when(dataLoader.getDataDay01(anyString(), eq("\n"))).thenReturn(testNumbers); + Day01 day01 = new Day01("input_day01.txt", dataLoader); + String expectedResult = "Product 1: " + 514579; //act String actualResult = day01.firstPart(); //assert - Assert.assertEquals(expectedResult, actualResult); + assertThat(actualResult).isEqualTo(expectedResult); } @Test public void test_secondPart_returnsExpectedResult() { //arrange - Day01 day01 = new Day01("input_day01.txt"); - String expectedResult = "Product 2: " + 131347190; + when(dataLoader.getDataDay01(anyString(), eq("\n"))).thenReturn(testNumbers); + Day01 day01 = new Day01("input_day01.txt", dataLoader); + String expectedResult = "Product 2: " + 241861950; //act String actualResult = day01.secondPart(); //assert - Assert.assertEquals(expectedResult, actualResult); + assertThat(actualResult).isEqualTo(expectedResult); } } \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java b/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java index 4b16efa6..07af324a 100644 --- a/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java @@ -1,69 +1,60 @@ package org.haffson.adventofcode.days.day02; -import org.junit.Assert; -import org.junit.Test; +import org.haffson.adventofcode.utils.DataLoader; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; -import java.io.FileNotFoundException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; -//@RunWith(SpringRunner.class) +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + public class Day02Test { + DataLoader dataLoader = new DataLoader(); + List passwordDatabase = new ArrayList<>(Arrays.asList("1-3 a: abcde", "1-3 b: cdefg", "2-9 c: ccccccccc")); + + @BeforeEach + void setup() { + dataLoader = mock(DataLoader.class); + } + @Test public void testGetDay() { - Day02 day02 = new Day02("input_day02.txt"); + when(dataLoader.getDataDay02(anyString(), anyString())).thenReturn(passwordDatabase); + Day02 day02 = new Day02("input_day02.txt", dataLoader); int expectedResult = 2; int actualResult = day02.getDay(); - Assert.assertEquals(expectedResult, actualResult); - } - - // First part test data - @Test - public void test_testData_firstPart_returnsExpectedResult() { - // arrange - Day02 day02 = new Day02("day02_testdata.txt"); - String expectedResult = "Part 1 answer: " + 2; - //act - String actualResult = day02.firstPart(); - //assert - Assert.assertEquals(expectedResult, actualResult); + assertThat(actualResult).isEqualTo(expectedResult); } - // First part raw data from file (real puzzle data) + // First part @Test public void test_firstPart_returnsExpectedResult() { //arrange - Day02 day02 = new Day02("input_day02.txt"); - String expectedResult = "Part 1 answer: " + 607; + when(dataLoader.getDataDay02(anyString(), anyString())).thenReturn(passwordDatabase); + Day02 day02 = new Day02("input_day02.txt", dataLoader); + String expectedResult = "Part 1 answer: " + 2; //act String actualResult = day02.firstPart(); //assert - Assert.assertEquals(expectedResult, actualResult); - } - - // Second part test data - @Test - public void test_testData_secondPart_returnsExpectedResult() { - //arrange - Day02 day02 = new Day02("day02_testdata.txt"); -// day02.addInput(rawData); - String expectedResult = "Part 2 answer: " + 1; - //act - String actualResult = day02.secondPart(); - //assert - Assert.assertEquals(expectedResult, actualResult); + assertThat(actualResult).isEqualTo(expectedResult); } - // Second part raw data from file (real puzzle data) + // Second part @Test public void test_secondPart_returnsExpectedResult() { //arrange - Day02 day02 = new Day02("input_day02.txt"); - String expectedResult = "Part 2 answer: " + 321; + when(dataLoader.getDataDay02(anyString(), anyString())).thenReturn(passwordDatabase); + Day02 day02 = new Day02("input_day02.txt", dataLoader); + String expectedResult = "Part 2 answer: " + 1; //act String actualResult = day02.secondPart(); //assert - Assert.assertEquals(expectedResult, actualResult); + assertThat(actualResult).isEqualTo(expectedResult); } } \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java b/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java index 4d3b3188..c9254549 100644 --- a/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java @@ -1,68 +1,69 @@ package org.haffson.adventofcode.days.day03; -import org.junit.Assert; -import org.junit.Test; +import org.haffson.adventofcode.utils.DataLoader; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + -//@RunWith(SpringRunner.class) public class Day03Test { + DataLoader dataLoader = new DataLoader(); + List grid = new ArrayList<>(Arrays.asList("..##.......", "#...#...#..", ".#....#..#.", + "..#.#...#.#", ".#...##..#.", "..#.##.....", ".#.#.#....#", ".#........#", + "#.##...#...", "#...##....#", ".#..#...#.#")); + + @BeforeEach + void setup() { + dataLoader = mock(DataLoader.class); + } + // Test getDay() @Test public void testGetDay() { - Day03 day03 = new Day03("input_day03.txt"); + when(dataLoader.getDataDay03(anyString(), anyString())).thenReturn(grid); + Day03 day03 = new Day03("input_day03.txt", dataLoader); int expectedDay = 3; int actualDay = day03.getDay(); - Assert.assertEquals(expectedDay, actualDay); + assertEquals(expectedDay, actualDay); } // Test getTestData() @Test public void testGetTestData() { - Day03 day03 = new Day03("day03_testdata.txt"); + when(dataLoader.getDataDay03(anyString(), anyString())).thenReturn(grid); + Day03 day03 = new Day03("day03_testdata.txt", dataLoader); List grid = day03.getGrid(); String expectedSquare = "."; String actualSquare = Character.toString(grid.get(0).charAt(0)); - Assert.assertEquals(expectedSquare, actualSquare); - } - - // Test getNumberTrees() with testData - @Test - public void testGetNumberTrees() { - Day03 day03 = new Day03("day03_testdata.txt"); - String expectedTrees = "Trees encountered: " + 7; - String actualTrees = day03.firstPart(); - Assert.assertEquals(expectedTrees, actualTrees); + assertEquals(expectedSquare, actualSquare); } - // Test getNumberTrees() with real data (input_day03.txt) + // puzzle day03 part 1 Test getNumberTrees() @Test public void testGetNumberTreesRealData() { - Day03 day03 = new Day03("input_day03.txt"); - String expectedTrees = "Trees encountered: " + 159; + when(dataLoader.getDataDay03(anyString(), anyString())).thenReturn(grid); + Day03 day03 = new Day03("input_day03.txt", dataLoader); + String expectedTrees = "Trees encountered: " + 7; String actualTrees = day03.firstPart(); - Assert.assertEquals(expectedTrees, actualTrees); - } - - // puzzle day03 part 2 - // Test getProduct() with test data - @Test - public void testGetProduct() { - Day03 day03 = new Day03("day03_testdata.txt"); - String expectedTrees = "Product of all slopes: " + 336; - String actualTrees = day03.secondPart(); - Assert.assertEquals(expectedTrees, actualTrees); + assertEquals(expectedTrees, actualTrees); } - // puzzle day03 part 2 - // Test getProduct() with real data + // puzzle day03 part 2 Test getProduct() @Test public void testGetProduct_realData() { - Day03 day03 = new Day03("input_day03.txt"); - String expectedTrees = "Product of all slopes: " + "6419669520"; + when(dataLoader.getDataDay03(anyString(), anyString())).thenReturn(grid); + Day03 day03 = new Day03("input_day03.txt", dataLoader); + String expectedTrees = "Product of all slopes: " + "336"; String actualTrees = day03.secondPart(); - Assert.assertEquals(expectedTrees, actualTrees); + assertEquals(expectedTrees, actualTrees); } } \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java b/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java index 91713ab7..acb787a8 100644 --- a/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java @@ -1,43 +1,97 @@ package org.haffson.adventofcode.days.day04; -import org.junit.Assert; -import org.junit.Test; +import org.haffson.adventofcode.utils.DataLoader; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class Day04Test { + DataLoader dataLoader = new DataLoader(); + List batchFilePart1 = new ArrayList<>(Arrays + .asList("ecl:gry pid:860033327 eyr:2020 hcl:#fffffd\n" + + "byr:1937 iyr:2017 cid:147 hgt:183cm\n" + + "\n", + "iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884\n" + + "hcl:#cfa07d byr:1929\n" + + "\n", + "hcl:#ae17e1 iyr:2013\n" + + "eyr:2024\n" + + "ecl:brn pid:760753108 byr:1931\n" + + "hgt:179cm\n" + + "\n", + "hcl:#cfa07d eyr:2025 pid:166559648\n" + + "iyr:2011 ecl:brn hgt:59in")); + + List batchFilePart2 = new ArrayList<>(Arrays + .asList("eyr:1972 cid:100\n" + + "hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926\n" + + "\n", + "iyr:2019\n" + + "hcl:#602927 eyr:1967 hgt:170cm\n" + + "ecl:grn pid:012533040 byr:1946\n" + + "\n", + "hcl:dab227 iyr:2012\n" + + "ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277\n" + + "\n", + "hgt:59cm ecl:zzz\n" + + "eyr:2038 hcl:74454a iyr:2023\n" + + "pid:3556412378 byr:2007\n" + + "\n", + "pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980\n" + + "hcl:#623a2f\n" + + "\n", + "eyr:2029 ecl:blu cid:129 byr:1989\n" + + "iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm\n" + + "\n", + "hcl:#888785\n" + + "hgt:164cm byr:2001 iyr:2015 cid:88\n" + + "pid:545766238 ecl:hzl\n" + + "eyr:2022\n" + + "\n", + "iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719")); + + @BeforeEach + void setup() { + dataLoader = mock(DataLoader.class); + } + // test length of output of method @Test public void test_getRawDataArray2() { - Day04 day04 = new Day04("day04_testdata.txt"); + when(dataLoader.getDataDay04(anyString(), eq("\n\n"))).thenReturn(batchFilePart1); + Day04 day04 = new Day04("day04_testdata.txt", dataLoader); Integer expected = 4; Integer actual = day04.getBatchFile().size(); - Assert.assertEquals(expected, actual); + assertThat(actual).isEqualTo(expected); } - // test number of valid passports of test data - @Test - public void test_getNumberValidPassports() { - Day04 day04 = new Day04("day04_testdata.txt"); - String expected = "Number of valid passports: " + 2; - String actual = day04.firstPart(); - Assert.assertEquals(expected, actual); - } - - // test number of valid passports of input data + // puzzle 4.1 test number of valid passports of input data @Test public void test_getNumberValidPassports1() { - Day04 day04 = new Day04("input_day04.txt"); - String expected = "Number of valid passports: " + 250; + when(dataLoader.getDataDay04(anyString(), anyString())).thenReturn(batchFilePart1); + Day04 day04 = new Day04("input_day04.txt", dataLoader); + String expected = "Number of valid passports: " + 2; String actual = day04.firstPart(); - Assert.assertEquals(expected, actual); + assertThat(actual).isEqualTo(expected); } - // puzzle 2 test number of valid passports of input data (stricter rules) + // puzzle 4.2 test number of valid passports of input data (stricter rules) @Test public void test_getRestrictedNumberValidPassports() { - Day04 day04 = new Day04("input_day04.txt"); - String expected = "Number of valid passports: " + 158; + when(dataLoader.getDataDay04(anyString(), anyString())).thenReturn(batchFilePart2); + Day04 day04 = new Day04("input_day04.txt", dataLoader); + String expected = "Number of valid passports: " + 4; String actual = day04.secondPart(); - Assert.assertEquals(expected, actual); + assertThat(actual).isEqualTo(expected); } } \ No newline at end of file diff --git a/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java b/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java index a3d392c3..0410a841 100644 --- a/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java @@ -1,31 +1,48 @@ package org.haffson.adventofcode.days.day05; -import org.junit.Assert; -import org.junit.Test; +import org.haffson.adventofcode.utils.DataLoader; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + public class Day05Test { - // puzzle 5.1 real data: - // test method firstPart() + DataLoader dataLoader = new DataLoader(); + List boardingPassesPart1 = new ArrayList<>(Arrays.asList("BFFFBBFRRR", "FFFBBBFRRR", "BBFFBBFRLL")); + List boardingPassesPart2 = new DataLoader().getDataDay05("/day05/input_day05.txt", "\n"); + + @BeforeEach + void setup() { + dataLoader = mock(DataLoader.class); + } + + // puzzle 5.1 test method firstPart() @Test public void test_firstPart() { - Day05 day05 = new Day05("input_day05.txt"); - String expected = "The highest seatID is: " + 930; + when(dataLoader.getDataDay05(anyString(), anyString())).thenReturn(boardingPassesPart1); + Day05 day05 = new Day05("input_day05.txt", dataLoader); + String expected = "The highest seatID is: " + 820; String actual = day05.firstPart(); - Assert.assertEquals(expected, actual); + assertThat(actual).isEqualTo(expected); } - // puzzle 5.2 real data: - // test method secondPart() + // @Daniel, @Matthias I tried to avoid to instantiate a DataLoader Object but for this method I only have a + // huge dataset and no test data set (designing test data was too time consuming), so I decided to do testing with DataLoader Object + // puzzle 5.2 test method secondPart() @Test public void test_secondPart() { - Day05 day05 = new Day05("input_day05.txt"); + when(dataLoader.getDataDay05(anyString(), anyString())).thenReturn(boardingPassesPart2); + Day05 day05 = new Day05("input_day05.txt", dataLoader); String expected = "My seatID is: " + 515; String actual = day05.secondPart(); - Assert.assertEquals(expected, actual); + assertThat(actual).isEqualTo(expected); } } \ No newline at end of file From 30be56393257d7fd35d97f8ad19aa57af535550e Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 22 Sep 2021 16:52:19 +0200 Subject: [PATCH 33/36] Test script CheckStringIsEmpty.java. Test boundary condition, i.e. (String is null, empty, existing...) --- .../org/haffson/adventofcode/utils/CheckStringIsEmpty.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java b/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java index c39d9963..5b12ae00 100644 --- a/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java +++ b/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java @@ -5,13 +5,12 @@ public class CheckStringIsEmpty { private CheckStringIsEmpty() { - } public static String requireNonNullAndNonEmpty(String string) { if (StringUtils.isEmpty(string)) { - throw new IllegalArgumentException("The string is null or empty"); + throw new IllegalArgumentException("The string is null or empty: " + string); } return string; } -} +} \ No newline at end of file From e826aea925e514abfe7eb3faa8664cb26b8be6b6 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 22 Sep 2021 17:04:23 +0200 Subject: [PATCH 34/36] Added Documentation to CheckStringIsEmpty.java --- .../org/haffson/adventofcode/utils/CheckStringIsEmpty.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java b/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java index 5b12ae00..b5d0c248 100644 --- a/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java +++ b/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java @@ -7,6 +7,11 @@ public class CheckStringIsEmpty { private CheckStringIsEmpty() { } + /* + requireNonNullAndNonEmpty() checks if strings are null or empty + and if true throws IllegalArgumentException. + It helps crashing code "fail-fast" before code has already performed some side effects. + */ public static String requireNonNullAndNonEmpty(String string) { if (StringUtils.isEmpty(string)) { throw new IllegalArgumentException("The string is null or empty: " + string); From 341718bd65e42fd911fae638cb05ca2bce01a3ca Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Wed, 22 Sep 2021 17:25:20 +0200 Subject: [PATCH 35/36] Split: test data is only used in Test scripts and input Data only for the application. -> day's constructors do not need "String filename" as argument anymore, as data is loaded in DataLoader from now on. --- .../adventofcode/days/day01/Day01.java | 11 +++++---- .../adventofcode/days/day02/Day02.java | 5 ++-- .../adventofcode/days/day03/Day03.java | 9 ++++--- .../adventofcode/days/day04/Day04.java | 6 ++--- .../adventofcode/days/day05/Day05.java | 5 ++-- .../adventofcode/utils/DataLoader.java | 24 +++++++++---------- .../adventofcode/utils/ProblemStatus.java | 1 - .../adventofcode/days/day01/Day01Test.java | 24 +++++++++---------- .../adventofcode/days/day02/Day02Test.java | 13 +++++----- .../adventofcode/days/day03/Day03Test.java | 17 +++++++------ .../adventofcode/days/day04/Day04Test.java | 15 ++++++------ .../adventofcode/days/day05/Day05Test.java | 11 ++++----- 12 files changed, 65 insertions(+), 76 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index 2f2307bf..9e9a87f7 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -1,13 +1,14 @@ package org.haffson.adventofcode.days.day01; -import org.haffson.adventofcode.utils.DataLoader; import org.haffson.adventofcode.ProblemStatusEnum; import org.haffson.adventofcode.days.Days; +import org.haffson.adventofcode.utils.DataLoader; import org.haffson.adventofcode.utils.ProblemStatus; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; @@ -20,9 +21,9 @@ public class Day01 implements Days { private final Map problemStatus; private final List numbers; - public Day01(@Value("filename") String filename, DataLoader dataLoader) { + public Day01(DataLoader dataLoader) { // get data - this.numbers = dataLoader.getDataDay01("/day01/" + filename, "\n"); + this.numbers = dataLoader.getDataDay01(); // set ProblemStatus this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); diff --git a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java index 21ca2956..c6547d0d 100644 --- a/src/main/java/org/haffson/adventofcode/days/day02/Day02.java +++ b/src/main/java/org/haffson/adventofcode/days/day02/Day02.java @@ -5,7 +5,6 @@ import org.haffson.adventofcode.utils.CheckStringIsEmpty; import org.haffson.adventofcode.utils.DataLoader; import org.haffson.adventofcode.utils.ProblemStatus; -import org.springframework.beans.factory.annotation.Value; import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; @@ -23,9 +22,9 @@ public class Day02 implements Days { private final Map problemStatus; private final List passwordDatabase; - Day02(@Value("filename") String filename, DataLoader dataLoader) { + Day02(DataLoader dataLoader) { //get data - this.passwordDatabase = dataLoader.getDataDay02("/day02/" + filename, "\n"); + this.passwordDatabase = dataLoader.getDataDay02(); // set problemstatus this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); diff --git a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java index d003ef49..a31c8194 100644 --- a/src/main/java/org/haffson/adventofcode/days/day03/Day03.java +++ b/src/main/java/org/haffson/adventofcode/days/day03/Day03.java @@ -4,11 +4,10 @@ import org.haffson.adventofcode.days.Days; import org.haffson.adventofcode.utils.DataLoader; import org.haffson.adventofcode.utils.ProblemStatus; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.springframework.lang.NonNull; -import java.util.*; +import java.util.List; +import java.util.Map; /** * Implementation for Day 1: chronal Calibration. @@ -19,9 +18,9 @@ public class Day03 implements Days { private final Map problemStatus; private final List grid; - Day03(@Value("filename") String filename, DataLoader dataLoader) { + Day03(DataLoader dataLoader) { //get data - this.grid = dataLoader.getDataDay03("/day03/" + filename, "\n"); + this.grid = dataLoader.getDataDay03(); // set problemstatus this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); diff --git a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java index 62d24db2..7f150e1b 100644 --- a/src/main/java/org/haffson/adventofcode/days/day04/Day04.java +++ b/src/main/java/org/haffson/adventofcode/days/day04/Day04.java @@ -4,9 +4,7 @@ import org.haffson.adventofcode.days.Days; import org.haffson.adventofcode.utils.DataLoader; import org.haffson.adventofcode.utils.ProblemStatus; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.springframework.lang.NonNull; import java.util.*; @@ -19,9 +17,9 @@ public class Day04 implements Days { private final Map problemStatus; private final List batchFile; - Day04(@Value("filename") String filename, DataLoader dataLoader) { + Day04(DataLoader dataLoader) { //get data - this.batchFile = dataLoader.getDataDay04("/day04/" + filename, "\n\n"); + this.batchFile = dataLoader.getDataDay04(); // set problemstatus this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); diff --git a/src/main/java/org/haffson/adventofcode/days/day05/Day05.java b/src/main/java/org/haffson/adventofcode/days/day05/Day05.java index 85901485..c991dd26 100644 --- a/src/main/java/org/haffson/adventofcode/days/day05/Day05.java +++ b/src/main/java/org/haffson/adventofcode/days/day05/Day05.java @@ -5,7 +5,6 @@ import org.haffson.adventofcode.utils.CheckStringIsEmpty; import org.haffson.adventofcode.utils.DataLoader; import org.haffson.adventofcode.utils.ProblemStatus; -import org.springframework.beans.factory.annotation.Value; import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; @@ -20,9 +19,9 @@ public class Day05 implements Days { private final Map problemStatus; private final List boardingPasses; - Day05(@Value("filename") String filename, DataLoader dataLoader) { + Day05(DataLoader dataLoader) { //get data - this.boardingPasses = dataLoader.getDataDay05("/day05/" + filename, "\n"); + this.boardingPasses = dataLoader.getDataDay05(); // set problemstatus this.problemStatus = ProblemStatus.getProblemStatusMap(1, 2, ProblemStatusEnum.SOLVED, ProblemStatusEnum.SOLVED); diff --git a/src/main/java/org/haffson/adventofcode/utils/DataLoader.java b/src/main/java/org/haffson/adventofcode/utils/DataLoader.java index 488e7eb6..e85be5fd 100644 --- a/src/main/java/org/haffson/adventofcode/utils/DataLoader.java +++ b/src/main/java/org/haffson/adventofcode/utils/DataLoader.java @@ -28,29 +28,29 @@ private List getRawDataAsList(@NonNull String path, @NonNull String deli return rawData; } - public List getDataDay01(@NonNull String path, @NonNull String delimiter) { - return getRawDataAsList(path, delimiter).stream() + public List getDataDay01() { + return getRawDataAsList("/day01/input_day01.txt", "\n").stream() .map(Integer::parseInt) .collect(Collectors.toList()); } - public List getDataDay02(@NonNull String path, @NonNull String delimiter) { - return getRawDataAsList(path, delimiter); + public List getDataDay02() { + return getRawDataAsList("/day02/input_day02.txt", "\n"); } - public List getDataDay03(@NonNull String path, @NonNull String delimiter) { - return getRawDataAsList(path, delimiter); + public List getDataDay03() { + return getRawDataAsList("/day03/input_day03.txt", "\n"); } - public List getDataDay04(@NonNull String path, @NonNull String delimiter) { - return getRawDataAsList(path, delimiter); + public List getDataDay04() { + return getRawDataAsList("/day04/input_day04.txt", "\n\n"); } - public List getDataDay05(@NonNull String path, @NonNull String delimiter) { - return getRawDataAsList(path, delimiter); + public List getDataDay05() { + return getRawDataAsList("/day05/input_day05.txt", "\n"); } - public List getDataDay06(@NonNull String path, @NonNull String delimiter) { - return getRawDataAsList(path, delimiter); + public List getDataDay06() { + return getRawDataAsList("/day06/input_day06.txt", "\n"); } } \ No newline at end of file diff --git a/src/main/java/org/haffson/adventofcode/utils/ProblemStatus.java b/src/main/java/org/haffson/adventofcode/utils/ProblemStatus.java index c9d7ab51..80823ad0 100644 --- a/src/main/java/org/haffson/adventofcode/utils/ProblemStatus.java +++ b/src/main/java/org/haffson/adventofcode/utils/ProblemStatus.java @@ -8,7 +8,6 @@ public class ProblemStatus { private ProblemStatus() { - } public static Map getProblemStatusMap(int part1, int part2, diff --git a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java index 143362b5..8a66f54f 100644 --- a/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day01/Day01Test.java @@ -8,8 +8,6 @@ import java.util.*; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.*; @@ -26,8 +24,8 @@ void setup() { @Test public void test_getProblemStatus() { - when(dataLoader.getDataDay01(anyString(), eq("\n"))).thenReturn(testNumbers); - Day01 day01 = new Day01("input_day01.txt", dataLoader); + when(dataLoader.getDataDay01()).thenReturn(testNumbers); + Day01 day01 = new Day01(dataLoader); Map expectedResult = new HashMap() {{ put(1, ProblemStatusEnum.SOLVED); put(2, ProblemStatusEnum.SOLVED); @@ -38,8 +36,8 @@ public void test_getProblemStatus() { @Test public void testGetDay() { - when(dataLoader.getDataDay01(anyString(), eq("\n"))).thenReturn(testNumbers); - Day01 day01 = new Day01("input_day01.txt", dataLoader); + when(dataLoader.getDataDay01()).thenReturn(testNumbers); + Day01 day01 = new Day01(dataLoader); int expectedResult = 1; int actualResult = day01.getDay(); assertThat(actualResult).isEqualTo(expectedResult); @@ -48,21 +46,21 @@ public void testGetDay() { @Test public void test_rawDataNotEmpty() { //arrange - when(dataLoader.getDataDay01(anyString(), eq("\n"))).thenReturn(testNumbers); - Day01 day01 = new Day01("input_day01.txt", dataLoader); + when(dataLoader.getDataDay01()).thenReturn(testNumbers); + Day01 day01 = new Day01(dataLoader); int expectedSize = 6; //act List actual = day01.getNumbers(); //assert - verify(dataLoader, times(1)).getDataDay01(anyString(), anyString()); + verify(dataLoader, times(1)).getDataDay01(); assertThat(actual).hasSize(expectedSize); } @Test public void test_firstPart_returnsExpectedResult() { //arrange - when(dataLoader.getDataDay01(anyString(), eq("\n"))).thenReturn(testNumbers); - Day01 day01 = new Day01("input_day01.txt", dataLoader); + when(dataLoader.getDataDay01()).thenReturn(testNumbers); + Day01 day01 = new Day01(dataLoader); String expectedResult = "Product 1: " + 514579; //act String actualResult = day01.firstPart(); @@ -73,8 +71,8 @@ public void test_firstPart_returnsExpectedResult() { @Test public void test_secondPart_returnsExpectedResult() { //arrange - when(dataLoader.getDataDay01(anyString(), eq("\n"))).thenReturn(testNumbers); - Day01 day01 = new Day01("input_day01.txt", dataLoader); + when(dataLoader.getDataDay01()).thenReturn(testNumbers); + Day01 day01 = new Day01(dataLoader); String expectedResult = "Product 2: " + 241861950; //act String actualResult = day01.secondPart(); diff --git a/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java b/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java index 07af324a..62449e84 100644 --- a/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day02/Day02Test.java @@ -9,7 +9,6 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -25,8 +24,8 @@ void setup() { @Test public void testGetDay() { - when(dataLoader.getDataDay02(anyString(), anyString())).thenReturn(passwordDatabase); - Day02 day02 = new Day02("input_day02.txt", dataLoader); + when(dataLoader.getDataDay02()).thenReturn(passwordDatabase); + Day02 day02 = new Day02(dataLoader); int expectedResult = 2; int actualResult = day02.getDay(); assertThat(actualResult).isEqualTo(expectedResult); @@ -36,8 +35,8 @@ public void testGetDay() { @Test public void test_firstPart_returnsExpectedResult() { //arrange - when(dataLoader.getDataDay02(anyString(), anyString())).thenReturn(passwordDatabase); - Day02 day02 = new Day02("input_day02.txt", dataLoader); + when(dataLoader.getDataDay02()).thenReturn(passwordDatabase); + Day02 day02 = new Day02(dataLoader); String expectedResult = "Part 1 answer: " + 2; //act String actualResult = day02.firstPart(); @@ -49,8 +48,8 @@ public void test_firstPart_returnsExpectedResult() { @Test public void test_secondPart_returnsExpectedResult() { //arrange - when(dataLoader.getDataDay02(anyString(), anyString())).thenReturn(passwordDatabase); - Day02 day02 = new Day02("input_day02.txt", dataLoader); + when(dataLoader.getDataDay02()).thenReturn(passwordDatabase); + Day02 day02 = new Day02(dataLoader); String expectedResult = "Part 2 answer: " + 1; //act String actualResult = day02.secondPart(); diff --git a/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java b/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java index c9254549..e6ca41a4 100644 --- a/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day03/Day03Test.java @@ -9,7 +9,6 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -29,8 +28,8 @@ void setup() { // Test getDay() @Test public void testGetDay() { - when(dataLoader.getDataDay03(anyString(), anyString())).thenReturn(grid); - Day03 day03 = new Day03("input_day03.txt", dataLoader); + when(dataLoader.getDataDay03()).thenReturn(grid); + Day03 day03 = new Day03(dataLoader); int expectedDay = 3; int actualDay = day03.getDay(); assertEquals(expectedDay, actualDay); @@ -39,8 +38,8 @@ public void testGetDay() { // Test getTestData() @Test public void testGetTestData() { - when(dataLoader.getDataDay03(anyString(), anyString())).thenReturn(grid); - Day03 day03 = new Day03("day03_testdata.txt", dataLoader); + when(dataLoader.getDataDay03()).thenReturn(grid); + Day03 day03 = new Day03(dataLoader); List grid = day03.getGrid(); String expectedSquare = "."; String actualSquare = Character.toString(grid.get(0).charAt(0)); @@ -50,8 +49,8 @@ public void testGetTestData() { // puzzle day03 part 1 Test getNumberTrees() @Test public void testGetNumberTreesRealData() { - when(dataLoader.getDataDay03(anyString(), anyString())).thenReturn(grid); - Day03 day03 = new Day03("input_day03.txt", dataLoader); + when(dataLoader.getDataDay03()).thenReturn(grid); + Day03 day03 = new Day03(dataLoader); String expectedTrees = "Trees encountered: " + 7; String actualTrees = day03.firstPart(); assertEquals(expectedTrees, actualTrees); @@ -60,8 +59,8 @@ public void testGetNumberTreesRealData() { // puzzle day03 part 2 Test getProduct() @Test public void testGetProduct_realData() { - when(dataLoader.getDataDay03(anyString(), anyString())).thenReturn(grid); - Day03 day03 = new Day03("input_day03.txt", dataLoader); + when(dataLoader.getDataDay03()).thenReturn(grid); + Day03 day03 = new Day03(dataLoader); String expectedTrees = "Product of all slopes: " + "336"; String actualTrees = day03.secondPart(); assertEquals(expectedTrees, actualTrees); diff --git a/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java b/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java index acb787a8..e2f95735 100644 --- a/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day04/Day04Test.java @@ -9,14 +9,13 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class Day04Test { DataLoader dataLoader = new DataLoader(); + //@Matthias: """ multiline is also not available in java 8 List batchFilePart1 = new ArrayList<>(Arrays .asList("ecl:gry pid:860033327 eyr:2020 hcl:#fffffd\n" + "byr:1937 iyr:2017 cid:147 hgt:183cm\n" + @@ -68,8 +67,8 @@ void setup() { // test length of output of method @Test public void test_getRawDataArray2() { - when(dataLoader.getDataDay04(anyString(), eq("\n\n"))).thenReturn(batchFilePart1); - Day04 day04 = new Day04("day04_testdata.txt", dataLoader); + when(dataLoader.getDataDay04()).thenReturn(batchFilePart1); + Day04 day04 = new Day04(dataLoader); Integer expected = 4; Integer actual = day04.getBatchFile().size(); assertThat(actual).isEqualTo(expected); @@ -78,8 +77,8 @@ public void test_getRawDataArray2() { // puzzle 4.1 test number of valid passports of input data @Test public void test_getNumberValidPassports1() { - when(dataLoader.getDataDay04(anyString(), anyString())).thenReturn(batchFilePart1); - Day04 day04 = new Day04("input_day04.txt", dataLoader); + when(dataLoader.getDataDay04()).thenReturn(batchFilePart1); + Day04 day04 = new Day04(dataLoader); String expected = "Number of valid passports: " + 2; String actual = day04.firstPart(); assertThat(actual).isEqualTo(expected); @@ -88,8 +87,8 @@ public void test_getNumberValidPassports1() { // puzzle 4.2 test number of valid passports of input data (stricter rules) @Test public void test_getRestrictedNumberValidPassports() { - when(dataLoader.getDataDay04(anyString(), anyString())).thenReturn(batchFilePart2); - Day04 day04 = new Day04("input_day04.txt", dataLoader); + when(dataLoader.getDataDay04()).thenReturn(batchFilePart2); + Day04 day04 = new Day04(dataLoader); String expected = "Number of valid passports: " + 4; String actual = day04.secondPart(); assertThat(actual).isEqualTo(expected); diff --git a/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java b/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java index 0410a841..3e2501cf 100644 --- a/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java +++ b/src/test/java/org/haffson/adventofcode/days/day05/Day05Test.java @@ -9,7 +9,6 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -17,7 +16,7 @@ public class Day05Test { DataLoader dataLoader = new DataLoader(); List boardingPassesPart1 = new ArrayList<>(Arrays.asList("BFFFBBFRRR", "FFFBBBFRRR", "BBFFBBFRLL")); - List boardingPassesPart2 = new DataLoader().getDataDay05("/day05/input_day05.txt", "\n"); + List boardingPassesPart2 = new DataLoader().getDataDay05(); @BeforeEach void setup() { @@ -27,8 +26,8 @@ void setup() { // puzzle 5.1 test method firstPart() @Test public void test_firstPart() { - when(dataLoader.getDataDay05(anyString(), anyString())).thenReturn(boardingPassesPart1); - Day05 day05 = new Day05("input_day05.txt", dataLoader); + when(dataLoader.getDataDay05()).thenReturn(boardingPassesPart1); + Day05 day05 = new Day05(dataLoader); String expected = "The highest seatID is: " + 820; String actual = day05.firstPart(); assertThat(actual).isEqualTo(expected); @@ -39,8 +38,8 @@ public void test_firstPart() { // puzzle 5.2 test method secondPart() @Test public void test_secondPart() { - when(dataLoader.getDataDay05(anyString(), anyString())).thenReturn(boardingPassesPart2); - Day05 day05 = new Day05("input_day05.txt", dataLoader); + when(dataLoader.getDataDay05()).thenReturn(boardingPassesPart2); + Day05 day05 = new Day05(dataLoader); String expected = "My seatID is: " + 515; String actual = day05.secondPart(); assertThat(actual).isEqualTo(expected); From c2e70bfc65ddf80f40597c90f370777afebc2285 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Fri, 24 Sep 2021 09:11:53 +0200 Subject: [PATCH 36/36] Last changes --- .../org/haffson/adventofcode/days/day01/Day01.java | 11 ++++++----- .../adventofcode/utils/CheckStringIsEmpty.java | 10 +++++----- .../org/haffson/adventofcode/utils/DataLoader.java | 8 +++++--- .../org/haffson/adventofcode/utils/ProblemStatus.java | 8 ++++++-- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java index 9e9a87f7..2d0832a9 100644 --- a/src/main/java/org/haffson/adventofcode/days/day01/Day01.java +++ b/src/main/java/org/haffson/adventofcode/days/day01/Day01.java @@ -53,9 +53,10 @@ public String secondPart() { return "Product 2: " + calculateProduct_Part2(numbers); } - - // utility method: subtract numbers by 2020 - private List getSubtractedBy2020(List numbers) { + /** + * utility method: subtract numbers from 2020 + */ + private List getSubtractedFrom2020(List numbers) { return numbers.stream() .map(value -> 2020 - value) .collect(Collectors.toList()); @@ -69,7 +70,7 @@ private List getSubtractedBy2020(List numbers) { */ private int calculateProduct_Part1(final List numbers) { // check for intersection of two lists - numbers.retainAll(getSubtractedBy2020(numbers)); + numbers.retainAll(getSubtractedFrom2020(numbers)); // product of "intersected" values is the puzzle's answer! return numbers.get(0) * numbers.get(1); } @@ -81,7 +82,7 @@ private int calculateProduct_Part1(final List numbers) { * @return the product */ private int calculateProduct_Part2(final List numbers) { - List numbersSubtractedBy2020 = getSubtractedBy2020(numbers); + List numbersSubtractedBy2020 = getSubtractedFrom2020(numbers); List tempData = new ArrayList<>(); for (int k = 0; k < numbers.size(); k++) { diff --git a/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java b/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java index b5d0c248..99fd567b 100644 --- a/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java +++ b/src/main/java/org/haffson/adventofcode/utils/CheckStringIsEmpty.java @@ -7,14 +7,14 @@ public class CheckStringIsEmpty { private CheckStringIsEmpty() { } - /* - requireNonNullAndNonEmpty() checks if strings are null or empty - and if true throws IllegalArgumentException. - It helps crashing code "fail-fast" before code has already performed some side effects. + /** + * requireNonNullAndNonEmpty() checks if strings are null or empty + * and if true throws IllegalArgumentException. + * It helps crashing code "fail-fast" before code has already performed some side effects. */ public static String requireNonNullAndNonEmpty(String string) { if (StringUtils.isEmpty(string)) { - throw new IllegalArgumentException("The string is null or empty: " + string); + throw new IllegalArgumentException("The string is null or empty."); } return string; } diff --git a/src/main/java/org/haffson/adventofcode/utils/DataLoader.java b/src/main/java/org/haffson/adventofcode/utils/DataLoader.java index e85be5fd..e01a2063 100644 --- a/src/main/java/org/haffson/adventofcode/utils/DataLoader.java +++ b/src/main/java/org/haffson/adventofcode/utils/DataLoader.java @@ -14,14 +14,16 @@ public DataLoader() { } private List getRawDataAsList(@NonNull String path, @NonNull String delimiter) { - InputStream dataIn = Objects.requireNonNull(DataLoader.class.getResourceAsStream("/data" - + CheckStringIsEmpty.requireNonNullAndNonEmpty(path)), + CheckStringIsEmpty.requireNonNullAndNonEmpty(path); + CheckStringIsEmpty.requireNonNullAndNonEmpty(delimiter); + + InputStream dataIn = Objects.requireNonNull(DataLoader.class.getResourceAsStream("/data" + path), "Data InputStream must not be null: " + path); List rawData; try (Scanner scan = new Scanner(dataIn)) { rawData = new ArrayList<>(); while (scan.hasNext()) { - scan.useDelimiter(CheckStringIsEmpty.requireNonNullAndNonEmpty(delimiter)); + scan.useDelimiter(delimiter); rawData.add(scan.next()); } } diff --git a/src/main/java/org/haffson/adventofcode/utils/ProblemStatus.java b/src/main/java/org/haffson/adventofcode/utils/ProblemStatus.java index 80823ad0..cf60eb7a 100644 --- a/src/main/java/org/haffson/adventofcode/utils/ProblemStatus.java +++ b/src/main/java/org/haffson/adventofcode/utils/ProblemStatus.java @@ -10,8 +10,12 @@ public class ProblemStatus { private ProblemStatus() { } - public static Map getProblemStatusMap(int part1, int part2, - ProblemStatusEnum status1, ProblemStatusEnum status2) { + public static Map getProblemStatusMap( + int part1, + int part2, + ProblemStatusEnum status1, + ProblemStatusEnum status2 + ) { final Map problemStatus = new HashMap<>(); problemStatus.put(part1, status1);