From 0797cff212f4bac93e3ee928b906c2e66b19fb61 Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Wed, 10 Oct 2018 13:19:43 -0700 Subject: [PATCH 001/145] Set up CI with Azure Pipelines --- azure-pipelines.yml | 51 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 azure-pipelines.yml diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 00000000..7b9e69bf --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,51 @@ +# Python package +# Create and test a Python package on multiple Python versions. +# Add steps that analyze code, save the dist with the build record, publish to a PyPI-compatible index, and more: +# https://docs.microsoft.com/azure/devops/pipelines/languages/python + +jobs: + +- job: 'Test' + pool: + vmImage: 'Ubuntu 16.04' + strategy: + matrix: + Python35: + python.version: '3.5' + Python36: + python.version: '3.6' + Python37: + python.version: '3.7' + maxParallel: 4 + + steps: + - task: UsePythonVersion@0 + inputs: + versionSpec: '$(python.version)' + architecture: 'x64' + + - script: python -m pip install --upgrade pip && pip install -r requirements.txt + displayName: 'Install dependencies' + + - script: python -m unittest discover --start-directory ./cli/src/ + displayName: 'test' + + - task: PublishTestResults@2 + inputs: + testResultsFiles: '**/test-results.xml' + testRunTitle: 'Python $(python.version)' + condition: succeededOrFailed() + +- job: 'Publish' + dependsOn: 'Test' + pool: + vmImage: 'Ubuntu 16.04' + + steps: + - task: UsePythonVersion@0 + inputs: + versionSpec: '3.x' + architecture: 'x64' + + - script: python setup.py sdist + displayName: 'Build sdist' From 3bda8a0724dad1d25ea76e2033e0f4cd693734ea Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Wed, 10 Oct 2018 14:13:59 -0700 Subject: [PATCH 002/145] Fixing azure pipeline --- azure-pipelines.yml | 6 ++++-- requirements.txt | 0 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 requirements.txt diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7b9e69bf..1105ba00 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -27,8 +27,10 @@ jobs: - script: python -m pip install --upgrade pip && pip install -r requirements.txt displayName: 'Install dependencies' - - script: python -m unittest discover --start-directory ./cli/src/ - displayName: 'test' + - script: | + pip install pytest + pytest tests --doctest-modules --junitxml=junit/test-results.xml + displayName: 'pytest' - task: PublishTestResults@2 inputs: diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..e69de29b From 9ba643f2043505a7ce7781c4e407c7e3d64b2135 Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Wed, 10 Oct 2018 14:19:38 -0700 Subject: [PATCH 003/145] Fixing test directory --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 1105ba00..15d38db8 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -29,7 +29,7 @@ jobs: - script: | pip install pytest - pytest tests --doctest-modules --junitxml=junit/test-results.xml + pytest cli/src --doctest-modules --junitxml=junit/test-results.xml displayName: 'pytest' - task: PublishTestResults@2 From 707d356403b12de8f49ec64f672117bc878ee1b1 Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Wed, 10 Oct 2018 14:30:36 -0700 Subject: [PATCH 004/145] Removing source distribution job --- azure-pipelines.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 15d38db8..1188310d 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -37,17 +37,3 @@ jobs: testResultsFiles: '**/test-results.xml' testRunTitle: 'Python $(python.version)' condition: succeededOrFailed() - -- job: 'Publish' - dependsOn: 'Test' - pool: - vmImage: 'Ubuntu 16.04' - - steps: - - task: UsePythonVersion@0 - inputs: - versionSpec: '3.x' - architecture: 'x64' - - - script: python setup.py sdist - displayName: 'Build sdist' From 6d5c1588270437b1d2cdca6b3009f4201807bd70 Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Tue, 16 Oct 2018 16:17:01 -0700 Subject: [PATCH 005/145] Remove abandon init (#4) * Removing abandon and init * Fixing tests --- cli/src/cli.py | 29 ++++------ cli/src/operations.py | 104 +++++++++++++++++++++++++++++++--- cli/src/test_operations.py | 112 ++++++++++++++++++++++++++++--------- requirements.txt | 2 + 4 files changed, 194 insertions(+), 53 deletions(-) diff --git a/cli/src/cli.py b/cli/src/cli.py index e1b56cc4..8087d3c2 100644 --- a/cli/src/cli.py +++ b/cli/src/cli.py @@ -1,41 +1,34 @@ import argparse from operations import ( - init, download, upload, - abandon, LOWER_LIMIT, - UPPER_LIMIT + UPPER_LIMIT, + read_config, + CONFIG_PATH ) if __name__ == "__main__": # how i want to use the tool: - # python3 cli.py init --config /path/to/config.ini - # python3 cli.py download --num-images 40 - # python3 cli.py upload - # python3 cli.py abandon + # cli.py download --num-images 40 + # cli.py upload parser = argparse.ArgumentParser() parser.add_argument( 'operation', - choices=['init', 'download', 'upload', 'abandon'] + choices=['download', 'upload'] ) parser.add_argument('-n', '--num-images', type=int) - - parser.add_argument('-c', '--config') - args = parser.parse_args() operation = args.operation - if operation == 'init': - init(args.config) - elif operation == 'download': - download(args.num_images) - elif operation == 'upload': - upload() + config = read_config(CONFIG_PATH) + + if operation == 'download': + download(config, args.num_images) else: - abandon() + upload(config) diff --git a/cli/src/operations.py b/cli/src/operations.py index f3f22f5b..22ae6092 100644 --- a/cli/src/operations.py +++ b/cli/src/operations.py @@ -1,7 +1,26 @@ +import configparser +import requests +import time +from azure.storage.blob import BlockBlobService + +FUNCTIONS_SECTION = 'FUNCTIONS' +FUNCTIONS_KEY = 'FUNCTIONS_KEY' +FUNCTIONS_URL = 'FUNCTIONS_URL' + +STORAGE_SECTION = 'STORAGE' +STORAGE_KEY = 'STORAGE_KEY' +STORAGE_ACCOUNT = 'STORAGE_ACCOUNT' +STORAGE_CONTAINER = 'STORAGE_CONTAINER' + + DEFAULT_NUM_IMAGES = 40 LOWER_LIMIT = 0 UPPER_LIMIT = 100 +CONFIG_PATH = "./config.ini" + +azure_storage_client = None + class MissingConfigException(Exception): pass @@ -11,14 +30,28 @@ class ImageLimitException(Exception): pass -def init(config): - if (config is None): - raise MissingConfigException() +def get_azure_storage_client(config): + global azure_storage_client + + if azure_storage_client is not None: + return azure_storage_client - raise NotImplementedError + azure_storage_client = BlockBlobService( + config.get("storage_account"), + account_key=config.get("storage_key") + ) + return azure_storage_client -def download(num_images): + +def build_url(config): + code = config.get("key") + url = config.get("url") + + return url + "?code=" + code + + +def _download_bounds(num_images): images_to_download = num_images if num_images is None: @@ -30,9 +63,62 @@ def download(num_images): return images_to_download -def upload(): - raise NotImplementedError() +def download(config, num_images): + images_to_download = _download_bounds(num_images) + functions_url = config.get("url") + + response = requests.get(functions_url + "?imageCount=" + str(num_images)) + print(response.text) + return images_to_download + + +def upload(config): + storage_container = config.get("storage_container") + storage_client = get_azure_storage_client(config) + print("Uploading… VOTT json file") + + storage_client.create_blob_from_path( + storage_container, + "vott", + "./images/vott.json" + ) + + print("Done!") + + +def read_config(config_path): + parser = configparser.ConfigParser() + parser.read(config_path) + return read_config_with_parsed_config(parser) + + +def read_config_with_parsed_config(parser): + sections = parser.sections() + + if FUNCTIONS_SECTION not in sections or STORAGE_SECTION not in sections: + raise MissingConfigException() + + functions_config_section = parser[FUNCTIONS_SECTION] + storage_config_section = parser[STORAGE_SECTION] + + functions_key_value = functions_config_section.get(FUNCTIONS_KEY) + functions_url_value = functions_config_section.get(FUNCTIONS_URL) + + storage_account_value = storage_config_section.get(STORAGE_ACCOUNT) + storage_key_value = storage_config_section.get(STORAGE_KEY) + storage_container_value = storage_config_section.get(STORAGE_CONTAINER) + + if not functions_key_value or not functions_url_value: + raise MissingConfigException() + + if not storage_account_value or not storage_key_value or not storage_container_value: + raise MissingConfigException() -def abandon(): - raise NotImplementedError() + return { + "key": functions_key_value, + "url": functions_url_value, + "storage_account": storage_account_value, + "storage_key": storage_key_value, + "storage_container": STORAGE_CONTAINER + } diff --git a/cli/src/test_operations.py b/cli/src/test_operations.py index e5564c31..c5ee0350 100644 --- a/cli/src/test_operations.py +++ b/cli/src/test_operations.py @@ -1,49 +1,109 @@ import unittest +from unittest.mock import Mock + from operations import ( - init, - download, + _download_bounds, upload, - abandon, + read_config_with_parsed_config, MissingConfigException, ImageLimitException, DEFAULT_NUM_IMAGES, LOWER_LIMIT, - UPPER_LIMIT + UPPER_LIMIT, + FUNCTIONS_SECTION, + FUNCTIONS_KEY, + FUNCTIONS_URL, + STORAGE_SECTION, + STORAGE_KEY, + STORAGE_ACCOUNT, + STORAGE_CONTAINER ) class TestCLIOperations(unittest.TestCase): - def test_init(self): - with self.assertRaises(NotImplementedError): - init("fakeconfig") - - def test_init_missing_config(self): - with self.assertRaises(MissingConfigException): - init(None) - - def test_download_under_limit(self): + def test_download_bounds_under_limit(self): with self.assertRaises(ImageLimitException): - download(LOWER_LIMIT) + _download_bounds(LOWER_LIMIT) - def test_download_over_limit(self): + def test_download_bounds_over_limit(self): with self.assertRaises(ImageLimitException): - download(UPPER_LIMIT + 1) + _download_bounds(UPPER_LIMIT + 1) - def test_download_missing_image_count(self): - downloaded_image_count = download(None) + def test_download_bounds_missing_image_count(self): + downloaded_image_count = _download_bounds(None) self.assertEqual(DEFAULT_NUM_IMAGES, downloaded_image_count) - def test_download_with_image_count(self): - downloaded_image_count = download(10) + def test_download_bounds_with_image_count(self): + downloaded_image_count = _download_bounds(10) self.assertEqual(10, downloaded_image_count) - def test_upload(self): - with self.assertRaises(NotImplementedError): - upload() - def test_abandon(self): - with self.assertRaises(NotImplementedError): - abandon() +class TestConfig(unittest.TestCase): + def _mock_sections(self, sections, data): + def sections_function(): + return sections + + def data_function(self, name): + return data.get(name, None) + + test = Mock() + test.sections = sections_function + test.__getitem__ = data_function + + return test + + def test_missing_storage_section(self): + with self.assertRaises(MissingConfigException): + read_config_with_parsed_config( + self._mock_sections([FUNCTIONS_SECTION], {}) + ) + + def test_missing_functions_section(self): + with self.assertRaises(MissingConfigException): + read_config_with_parsed_config( + self._mock_sections([STORAGE_SECTION], {}) + ) + + def test_missing_functions_config_values(self): + with self.assertRaises(MissingConfigException): + mock_data = self._mock_sections( + [FUNCTIONS_SECTION], + {} + ) + + read_config_with_parsed_config( + mock_data + ) + + def test_missing_storage_config_values(self): + with self.assertRaises(MissingConfigException): + mock_data = self._mock_sections( + [STORAGE_SECTION], + {} + ) + + read_config_with_parsed_config( + mock_data + ) + + def test_acceptable_config(self): + mock_data = self._mock_sections( + [STORAGE_SECTION, FUNCTIONS_SECTION], + { + STORAGE_SECTION: { + STORAGE_KEY: "test", + STORAGE_ACCOUNT: "test", + STORAGE_CONTAINER: "test", + }, + FUNCTIONS_SECTION: { + FUNCTIONS_KEY: "test", + FUNCTIONS_URL: "test" + } + } + ) + + read_config_with_parsed_config(mock_data) + if __name__ == '__main__': unittest.main() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index e69de29b..92324a07 100644 --- a/requirements.txt +++ b/requirements.txt @@ -0,0 +1,2 @@ +requests +azure-storage \ No newline at end of file From 24b246b3b7e5c46c8870c25597f6deda8ac5180c Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 22 Oct 2018 17:46:15 -0700 Subject: [PATCH 006/145] Adding some initial postgres scripts --- db/SeedData.sql | 14 +++++++++++ db/TableSchemas.sql | 61 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 db/SeedData.sql create mode 100644 db/TableSchemas.sql diff --git a/db/SeedData.sql b/db/SeedData.sql new file mode 100644 index 00000000..3927a53b --- /dev/null +++ b/db/SeedData.sql @@ -0,0 +1,14 @@ +-- Set up the states +INSERT INTO "TagState" VALUES (0, 'Untagged') +INSERT INTO "TagState" VALUES (1, 'Tag in progress') +INSERT INTO "TagState" VALUES (2, 'Tagged') +INSERT INTO "TagState" VALUES (3, 'Abandoned') + +-- Create fake image entries +INSERT INTO "Image_Info" ("ImageName","Folder","Height","Width") VALUES ('MyTestImage.jpg', 'SomeFolder', 40,40) +INSERT INTO "Image_Info" ("ImageName","Folder","Height","Width") VALUES ('AnotherImage.jpg', 'Folder2', 60, 80) + +-- Create "untagged" states for the 2 fake images. Assumes the Image Ids are 1 and 2 +INSERT INTO "Image_Tagging" ("ImageId","TagStateId") VALUES (1, 0) +INSERT INTO "Image_Tagging" ("ImageId","TagStateId") VALUES (2, 0) + diff --git a/db/TableSchemas.sql b/db/TableSchemas.sql new file mode 100644 index 00000000..d9cff030 --- /dev/null +++ b/db/TableSchemas.sql @@ -0,0 +1,61 @@ +-- Set up table +CREATE TABLE "TagState" ( + "TagStateId" integer NOT NULL, + "TagStateName" text NOT NULL +); +-- Set up table +CREATE TABLE "Image_Tags" ( + "TaggingId" integer NOT NULL, + "Class" text NOT NULL, + "Confidence" double precision NOT NULL, + "XMin" integer NOT NULL, + "XMax" integer NOT NULL, + "YMin" integer NOT NULL, + "YMax" integer NOT NULL +); + +-- Set up table and autoincrementing primary key +CREATE TABLE "Image_Tagging" ( + "TaggingId" integer NOT NULL, + "ImageId" integer NOT NULL, + "TagStateId" integer NOT NULL, + "CreatedDtim" date NOT NULL default current_timestamp, + "Valid" boolean +); + +CREATE SEQUENCE "Image_Tagging_id_seq" + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE "Image_Tagging_id_seq" OWNED BY "Image_Tagging"."TaggingId"; + +ALTER TABLE ONLY "Image_Tagging" ALTER COLUMN "TaggingId" SET DEFAULT nextval('"Image_Tagging_id_seq"'::regclass); + +ALTER TABLE ONLY "Image_Tagging" + ADD CONSTRAINT "Image_Tagging_pkey" PRIMARY KEY ("TaggingId"); + +-- Set up table and autoincrementing primary key +CREATE TABLE "Image_Info" ( + "ImageId" integer NOT NULL, + "ImageName" text NOT NULL, + "Folder" text NOT NULL, + "Height" integer NOT NULL, + "Width" integer NOT NULL +); + +CREATE SEQUENCE "ImgInfo_id_seq" + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE "ImgInfo_id_seq" OWNED BY "Image_Info"."ImageId"; + +ALTER TABLE ONLY "Image_Info" ALTER COLUMN "ImageId" SET DEFAULT nextval('"ImgInfo_id_seq"'::regclass); + +ALTER TABLE ONLY "Image_Info" + ADD CONSTRAINT "ImgInfo_pkey" PRIMARY KEY ("ImageId"); \ No newline at end of file From 863e8bd4174b2747191ec1c4c54ac9168390c395 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 22 Oct 2018 18:20:53 -0700 Subject: [PATCH 007/145] Removed double quotations --- db/SeedData.sql | 18 ++++++------- db/TableSchemas.sql | 66 ++++++++++++++++++++++----------------------- 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/db/SeedData.sql b/db/SeedData.sql index 3927a53b..4a5697d4 100644 --- a/db/SeedData.sql +++ b/db/SeedData.sql @@ -1,14 +1,14 @@ -- Set up the states -INSERT INTO "TagState" VALUES (0, 'Untagged') -INSERT INTO "TagState" VALUES (1, 'Tag in progress') -INSERT INTO "TagState" VALUES (2, 'Tagged') -INSERT INTO "TagState" VALUES (3, 'Abandoned') +INSERT INTO TagState VALUES (0, 'Untagged') +INSERT INTO TagState VALUES (1, 'Tag in progress') +INSERT INTO TagState VALUES (2, 'Tagged') +INSERT INTO TagState VALUES (3, 'Abandoned') -- Create fake image entries -INSERT INTO "Image_Info" ("ImageName","Folder","Height","Width") VALUES ('MyTestImage.jpg', 'SomeFolder', 40,40) -INSERT INTO "Image_Info" ("ImageName","Folder","Height","Width") VALUES ('AnotherImage.jpg', 'Folder2', 60, 80) +INSERT INTO Image_Info (ImageName,Folder,Height,Width) VALUES ('MyTestImage.jpg', 'SomeFolder', 40,40) +INSERT INTO Image_Info (ImageName,Folder,Height,Width) VALUES ('AnotherImage.jpg', 'Folder2', 60, 80) --- Create "untagged" states for the 2 fake images. Assumes the Image Ids are 1 and 2 -INSERT INTO "Image_Tagging" ("ImageId","TagStateId") VALUES (1, 0) -INSERT INTO "Image_Tagging" ("ImageId","TagStateId") VALUES (2, 0) +-- Create untagged states for the 2 fake images. Assumes the Image Ids are 1 and 2 +INSERT INTO Image_Tagging (ImageId,TagStateId) VALUES (1, 0) +INSERT INTO Image_Tagging (ImageId,TagStateId) VALUES (2, 0) diff --git a/db/TableSchemas.sql b/db/TableSchemas.sql index d9cff030..6ef7885d 100644 --- a/db/TableSchemas.sql +++ b/db/TableSchemas.sql @@ -1,61 +1,61 @@ -- Set up table -CREATE TABLE "TagState" ( - "TagStateId" integer NOT NULL, - "TagStateName" text NOT NULL +CREATE TABLE TagState ( + TagStateId integer NOT NULL, + TagStateName text NOT NULL ); -- Set up table -CREATE TABLE "Image_Tags" ( - "TaggingId" integer NOT NULL, - "Class" text NOT NULL, - "Confidence" double precision NOT NULL, - "XMin" integer NOT NULL, - "XMax" integer NOT NULL, - "YMin" integer NOT NULL, - "YMax" integer NOT NULL +CREATE TABLE Image_Tags ( + TaggingId integer NOT NULL, + Class text NOT NULL, + Confidence double precision NOT NULL, + X_Min integer NOT NULL, + X_Max integer NOT NULL, + Y_Min integer NOT NULL, + Y_Max integer NOT NULL ); -- Set up table and autoincrementing primary key -CREATE TABLE "Image_Tagging" ( - "TaggingId" integer NOT NULL, - "ImageId" integer NOT NULL, - "TagStateId" integer NOT NULL, - "CreatedDtim" date NOT NULL default current_timestamp, - "Valid" boolean +CREATE TABLE Image_Tagging ( + TaggingId integer NOT NULL, + ImageId integer NOT NULL, + TagStateId integer NOT NULL, + CreatedDtim date NOT NULL default current_timestamp, + Valid boolean ); -CREATE SEQUENCE "Image_Tagging_id_seq" +CREATE SEQUENCE Image_Tagging_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -ALTER SEQUENCE "Image_Tagging_id_seq" OWNED BY "Image_Tagging"."TaggingId"; +ALTER SEQUENCE Image_Tagging_id_seq OWNED BY Image_Tagging.TaggingId; -ALTER TABLE ONLY "Image_Tagging" ALTER COLUMN "TaggingId" SET DEFAULT nextval('"Image_Tagging_id_seq"'::regclass); +ALTER TABLE ONLY Image_Tagging ALTER COLUMN TaggingId SET DEFAULT nextval('Image_Tagging_id_seq'::regclass); -ALTER TABLE ONLY "Image_Tagging" - ADD CONSTRAINT "Image_Tagging_pkey" PRIMARY KEY ("TaggingId"); +ALTER TABLE ONLY Image_Tagging + ADD CONSTRAINT Image_Tagging_pkey PRIMARY KEY (TaggingId); -- Set up table and autoincrementing primary key -CREATE TABLE "Image_Info" ( - "ImageId" integer NOT NULL, - "ImageName" text NOT NULL, - "Folder" text NOT NULL, - "Height" integer NOT NULL, - "Width" integer NOT NULL +CREATE TABLE Image_Info ( + ImageId integer NOT NULL, + ImageName text NOT NULL, + Folder text NOT NULL, + Height integer NOT NULL, + Width integer NOT NULL ); -CREATE SEQUENCE "ImgInfo_id_seq" +CREATE SEQUENCE ImgInfo_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -ALTER SEQUENCE "ImgInfo_id_seq" OWNED BY "Image_Info"."ImageId"; +ALTER SEQUENCE ImgInfo_id_seq OWNED BY Image_Info.ImageId; -ALTER TABLE ONLY "Image_Info" ALTER COLUMN "ImageId" SET DEFAULT nextval('"ImgInfo_id_seq"'::regclass); +ALTER TABLE ONLY Image_Info ALTER COLUMN ImageId SET DEFAULT nextval('ImgInfo_id_seq'::regclass); -ALTER TABLE ONLY "Image_Info" - ADD CONSTRAINT "ImgInfo_pkey" PRIMARY KEY ("ImageId"); \ No newline at end of file +ALTER TABLE ONLY Image_Info + ADD CONSTRAINT ImgInfo_pkey PRIMARY KEY (ImageId); \ No newline at end of file From 17976a8baa75769b22620401de3bbbeebfab9b64 Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Tue, 23 Oct 2018 08:55:58 -0700 Subject: [PATCH 008/145] Add tagging location (#5) * Adding tagging config and tests * Adding tagging location * Using pathlib --- cli/src/operations.py | 135 +++++++++++++++++++++++++++++-------- cli/src/test_operations.py | 36 +++++----- 2 files changed, 127 insertions(+), 44 deletions(-) diff --git a/cli/src/operations.py b/cli/src/operations.py index 22ae6092..2347aec9 100644 --- a/cli/src/operations.py +++ b/cli/src/operations.py @@ -1,6 +1,10 @@ import configparser import requests import time +import os +import uuid +import shutil +import pathlib from azure.storage.blob import BlockBlobService FUNCTIONS_SECTION = 'FUNCTIONS' @@ -12,6 +16,9 @@ STORAGE_ACCOUNT = 'STORAGE_ACCOUNT' STORAGE_CONTAINER = 'STORAGE_CONTAINER' +TAGGING_SECTION = 'TAGGING' +TAGGING_LOCATION_KEY = 'TAGGING_LOCATION' + DEFAULT_NUM_IMAGES = 40 LOWER_LIMIT = 0 @@ -44,13 +51,6 @@ def get_azure_storage_client(config): return azure_storage_client -def build_url(config): - code = config.get("key") - url = config.get("url") - - return url + "?code=" + code - - def _download_bounds(num_images): images_to_download = num_images @@ -63,25 +63,73 @@ def _download_bounds(num_images): return images_to_download -def download(config, num_images): - images_to_download = _download_bounds(num_images) +def download(config, num_images, strategy=None): functions_url = config.get("url") + images_to_download = _download_bounds(num_images) + query = { + "imageCount": images_to_download + } + + response = requests.get(functions_url, params=query) + response.raise_for_status() + + json_resp = response.json() + + print("Received " + str(json_resp["count"]) + " files.") + + file_tree = pathlib.Path(os.path.expanduser(config.get("tagging_location"))) + if file_tree.exists(): + print("Removing existing tag data directory: " + str(file_tree)) + + shutil.rmtree(str(file_tree), ignore_errors=True) + + data_dir = pathlib.Path(file_tree / "data") + data_dir.mkdir( + parents=True, + exist_ok=True + ) - response = requests.get(functions_url + "?imageCount=" + str(num_images)) - print(response.text) + download_images(data_dir, json_resp['urls']) + print("Downloaded files. Ready to tag!") return images_to_download +def download_images(image_dir, urls): + print("Downloading files to " + str(image_dir)) + dummy = urls[0] + + for index in range(len(urls)): + url = urls[index] + + # file will look something like + # https://csehackstorage.blob.core.windows.net/image-to-tag/image4.jpeg + # need to massage it to get the last portion. + + file_name = url.split('/')[-1] + + # todo: change this when we get actual data. + response = requests.get(dummy) + file_path = pathlib.Path(image_dir / file_name) + + with open(str(file_path), "wb") as file: + for chunk in response.iter_content(chunk_size=128): + file.write(chunk) + file.close() + + def upload(config): storage_container = config.get("storage_container") + tagging_location = pathlib.Path(config.get("tagging_location")) storage_client = get_azure_storage_client(config) - print("Uploading… VOTT json file") + print("Uploading VOTT json file…") + + vott_json = pathlib.Path(tagging_location / "data.json") storage_client.create_blob_from_path( storage_container, - "vott", - "./images/vott.json" + str(uuid.uuid4()) + "_vott.json", + str(vott_json) ) print("Done!") @@ -93,32 +141,63 @@ def read_config(config_path): return read_config_with_parsed_config(parser) -def read_config_with_parsed_config(parser): - sections = parser.sections() +def functions_config_section(functions_config_section): + functions_key_value = functions_config_section.get(FUNCTIONS_KEY) + functions_url_value = functions_config_section.get(FUNCTIONS_URL) - if FUNCTIONS_SECTION not in sections or STORAGE_SECTION not in sections: + if not functions_key_value or not functions_url_value: raise MissingConfigException() - functions_config_section = parser[FUNCTIONS_SECTION] - storage_config_section = parser[STORAGE_SECTION] + return functions_key_value, functions_url_value - functions_key_value = functions_config_section.get(FUNCTIONS_KEY) - functions_url_value = functions_config_section.get(FUNCTIONS_URL) +def storage_config_section(storage_config_section): storage_account_value = storage_config_section.get(STORAGE_ACCOUNT) storage_key_value = storage_config_section.get(STORAGE_KEY) storage_container_value = storage_config_section.get(STORAGE_CONTAINER) - if not functions_key_value or not functions_url_value: + if not storage_account_value or not storage_key_value or not storage_container_value: raise MissingConfigException() - if not storage_account_value or not storage_key_value or not storage_container_value: + return storage_account_value, storage_key_value, storage_container_value + + +def tagging_config_section(tagging_config_section): + tagging_location_value = tagging_config_section.get(TAGGING_LOCATION_KEY) + + if not tagging_location_value: raise MissingConfigException() + return tagging_location_value + + +def read_config_with_parsed_config(parser): + sections = parser.sections() + + if FUNCTIONS_SECTION not in sections: + raise MissingConfigException() + + if STORAGE_SECTION not in sections: + raise MissingConfigException() + + if TAGGING_SECTION not in sections: + raise MissingConfigException() + + functions_key, functions_url = functions_config_section( + parser[FUNCTIONS_SECTION] + ) + + storage_account, storage_key, storage_container = storage_config_section( + parser[STORAGE_SECTION] + ) + + tagging_location = tagging_config_section(parser[TAGGING_SECTION]) + return { - "key": functions_key_value, - "url": functions_url_value, - "storage_account": storage_account_value, - "storage_key": storage_key_value, - "storage_container": STORAGE_CONTAINER + "key": functions_key, + "url": functions_url, + "storage_account": storage_account, + "storage_key": storage_key, + "storage_container": storage_container, + "tagging_location": tagging_location } diff --git a/cli/src/test_operations.py b/cli/src/test_operations.py index c5ee0350..2ff3cd45 100644 --- a/cli/src/test_operations.py +++ b/cli/src/test_operations.py @@ -16,7 +16,12 @@ STORAGE_SECTION, STORAGE_KEY, STORAGE_ACCOUNT, - STORAGE_CONTAINER + STORAGE_CONTAINER, + TAGGING_SECTION, + TAGGING_LOCATION_KEY, + functions_config_section, + storage_config_section, + tagging_config_section ) @@ -64,31 +69,27 @@ def test_missing_functions_section(self): self._mock_sections([STORAGE_SECTION], {}) ) - def test_missing_functions_config_values(self): + def test_missing_tagging_section(self): with self.assertRaises(MissingConfigException): - mock_data = self._mock_sections( - [FUNCTIONS_SECTION], - {} - ) - read_config_with_parsed_config( - mock_data + self._mock_sections([FUNCTIONS_SECTION, STORAGE_SECTION], {}) ) + def test_missing_functions_config_values(self): + with self.assertRaises(MissingConfigException): + functions_config_section({}) + def test_missing_storage_config_values(self): with self.assertRaises(MissingConfigException): - mock_data = self._mock_sections( - [STORAGE_SECTION], - {} - ) + storage_config_section({}) - read_config_with_parsed_config( - mock_data - ) + def test_missing_tagging_config_values(self): + with self.assertRaises(MissingConfigException): + tagging_config_section({}) def test_acceptable_config(self): mock_data = self._mock_sections( - [STORAGE_SECTION, FUNCTIONS_SECTION], + [STORAGE_SECTION, FUNCTIONS_SECTION, TAGGING_SECTION], { STORAGE_SECTION: { STORAGE_KEY: "test", @@ -98,6 +99,9 @@ def test_acceptable_config(self): FUNCTIONS_SECTION: { FUNCTIONS_KEY: "test", FUNCTIONS_URL: "test" + }, + TAGGING_SECTION: { + TAGGING_LOCATION_KEY: "test" } } ) From 279277fb182c259e3f9435a19e1f3dc490a47491 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Tue, 23 Oct 2018 23:18:17 -0700 Subject: [PATCH 009/145] Removed "folder" column. Renamed image name column in Image info table --- db/TableSchemas.sql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/db/TableSchemas.sql b/db/TableSchemas.sql index 6ef7885d..25b90f03 100644 --- a/db/TableSchemas.sql +++ b/db/TableSchemas.sql @@ -40,8 +40,7 @@ ALTER TABLE ONLY Image_Tagging -- Set up table and autoincrementing primary key CREATE TABLE Image_Info ( ImageId integer NOT NULL, - ImageName text NOT NULL, - Folder text NOT NULL, + OriginalImageName text NOT NULL, Height integer NOT NULL, Width integer NOT NULL ); From 51a80140082a66129a7ad0604eb33a5c1b4e7844 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Thu, 25 Oct 2018 11:12:39 -0700 Subject: [PATCH 010/145] Changed the way to define autoincrementing columns. Added new version --- db/TableSchemas.sql | 40 ++++++---------------------------------- db/TableSchemasV2.sql | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 34 deletions(-) create mode 100644 db/TableSchemasV2.sql diff --git a/db/TableSchemas.sql b/db/TableSchemas.sql index 25b90f03..e86dda52 100644 --- a/db/TableSchemas.sql +++ b/db/TableSchemas.sql @@ -6,8 +6,8 @@ CREATE TABLE TagState ( -- Set up table CREATE TABLE Image_Tags ( TaggingId integer NOT NULL, - Class text NOT NULL, - Confidence double precision NOT NULL, + Class text NOT NULL, --Needed? + Confidence double precision NOT NULL, --Needed? X_Min integer NOT NULL, X_Max integer NOT NULL, Y_Min integer NOT NULL, @@ -16,45 +16,17 @@ CREATE TABLE Image_Tags ( -- Set up table and autoincrementing primary key CREATE TABLE Image_Tagging ( - TaggingId integer NOT NULL, + TaggingId SERIAL PRIMARY KEY, ImageId integer NOT NULL, TagStateId integer NOT NULL, CreatedDtim date NOT NULL default current_timestamp, - Valid boolean + Valid boolean --Needed? ); -CREATE SEQUENCE Image_Tagging_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - -ALTER SEQUENCE Image_Tagging_id_seq OWNED BY Image_Tagging.TaggingId; - -ALTER TABLE ONLY Image_Tagging ALTER COLUMN TaggingId SET DEFAULT nextval('Image_Tagging_id_seq'::regclass); - -ALTER TABLE ONLY Image_Tagging - ADD CONSTRAINT Image_Tagging_pkey PRIMARY KEY (TaggingId); - -- Set up table and autoincrementing primary key CREATE TABLE Image_Info ( - ImageId integer NOT NULL, + ImageId SERIAL PRIMARY KEY, OriginalImageName text NOT NULL, Height integer NOT NULL, Width integer NOT NULL -); - -CREATE SEQUENCE ImgInfo_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - -ALTER SEQUENCE ImgInfo_id_seq OWNED BY Image_Info.ImageId; - -ALTER TABLE ONLY Image_Info ALTER COLUMN ImageId SET DEFAULT nextval('ImgInfo_id_seq'::regclass); - -ALTER TABLE ONLY Image_Info - ADD CONSTRAINT ImgInfo_pkey PRIMARY KEY (ImageId); \ No newline at end of file +); \ No newline at end of file diff --git a/db/TableSchemasV2.sql b/db/TableSchemasV2.sql new file mode 100644 index 00000000..0dc7f027 --- /dev/null +++ b/db/TableSchemasV2.sql @@ -0,0 +1,39 @@ +-- Set up table and autoincrementing primary key +CREATE TABLE Image_Info ( + ImageId SERIAL PRIMARY KEY, + OriginalImageName text NOT NULL, + ImageLocation text, + Height integer NOT NULL, + Width integer NOT NULL +); + +-- Set up table and autoincrementing primary key +CREATE TABLE Image_Tagging_State ( + ImageTaggingId SERIAL PRIMARY KEY, --Needed? + ImageId integer NOT NULL, + TagStateId integer NOT NULL, + CreatedDtim date NOT NULL default current_timestamp, + Valid boolean --Needed? +); + +-- Set up table +CREATE TABLE TagState ( + TagStateId integer NOT NULL, + TagStateName text NOT NULL +); + +-- Set up table +CREATE TABLE Image_Tags ( + ImageTagId integer NOT NULL, + ImageId integer REFERENCES Image_Info(ImageId) ON DELETE RESTRICT, + Class text NOT NULL, --Needed? + Confidence double precision NOT NULL, --Needed? + X_Min integer NOT NULL, + X_Max integer NOT NULL, + Y_Min integer NOT NULL, + Y_Max integer NOT NULL, + PRIMARY KEY (ImageTagId,ImageId) +); + + + From ebcd40108940eb6fda6b9713393f2c22e2fb3892 Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 25 Oct 2018 13:48:38 -0700 Subject: [PATCH 011/145] Added insert and update triggers on Image tagging state table --- db/TableSchemasV2.sql | 69 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 9 deletions(-) diff --git a/db/TableSchemasV2.sql b/db/TableSchemasV2.sql index 0dc7f027..7428892b 100644 --- a/db/TableSchemasV2.sql +++ b/db/TableSchemasV2.sql @@ -7,15 +7,6 @@ CREATE TABLE Image_Info ( Width integer NOT NULL ); --- Set up table and autoincrementing primary key -CREATE TABLE Image_Tagging_State ( - ImageTaggingId SERIAL PRIMARY KEY, --Needed? - ImageId integer NOT NULL, - TagStateId integer NOT NULL, - CreatedDtim date NOT NULL default current_timestamp, - Valid boolean --Needed? -); - -- Set up table CREATE TABLE TagState ( TagStateId integer NOT NULL, @@ -35,5 +26,65 @@ CREATE TABLE Image_Tags ( PRIMARY KEY (ImageTagId,ImageId) ); +-- Set up table and autoincrementing primary key +CREATE TABLE Image_Tagging_State ( + ImageId integer REFERENCES Image_Info(ImageId), + TagStateId integer NOT NULL, + ModifiedDtim timestamp NOT NULL default current_timestamp, + CreatedDtim timestamp NOT NULL default current_timestamp +); + +CREATE TABLE Image_Tagging_State_Audit ( + RowId serial primary key, + ImageId integer NOT NULL, + TagStateId integer NOT NULL, + ModifiedDtim timestamp NOT NULL, + ArchiveDtim timestamp NOT NULL, + ActionFlag integer NOT NULL +) + + +-- ActionFlag: 1 = insert, 2 = update, 3 = delete +CREATE OR REPLACE FUNCTION log_image_tagging_state_insert() + RETURNS trigger AS + $BODY$ + BEGIN + INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedDtim,ArchiveDtim,ActionFlag) + VALUES(NEW.ImageId,NEW.TagStateId,NEW.ModifiedDtim,current_timestamp,1); + + RETURN NEW; + END; + $BODY$ + LANGUAGE plpgsql + +CREATE TRIGGER image_tagging_state_insert + AFTER INSERT ON Image_Tagging_State + FOR EACH ROW + EXECUTE PROCEDURE log_image_tagging_state_insert(); + + +CREATE OR REPLACE FUNCTION log_image_tagging_state_changes() + RETURNS trigger AS + $BODY$ + BEGIN + IF NEW.TagStateId <> OLD.TagStateId THEN + INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedDtim,ArchiveDtim,ActionFlag) + VALUES(OLD.ImageId,OLD.TagStateId,OLD.ModifiedDtim,current_timestamp,2); + END IF; + + RETURN NEW; + END; + $BODY$ + LANGUAGE plpgsql + + +CREATE TRIGGER image_tagging_state_changes + BEFORE UPDATE ON Image_Tagging_State + FOR EACH ROW + EXECUTE PROCEDURE log_image_tagging_state_changes(); + + + + From 3277a4fc098b76ad4a6b26394b9abcda364483af Mon Sep 17 00:00:00 2001 From: Andre Date: Thu, 25 Oct 2018 14:10:53 -0700 Subject: [PATCH 012/145] Updated seed data. Fixed trigger behavior --- db/SeedData.sql | 10 ++++++---- db/TableSchemasV2.sql | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/db/SeedData.sql b/db/SeedData.sql index 4a5697d4..7a8d551c 100644 --- a/db/SeedData.sql +++ b/db/SeedData.sql @@ -5,10 +5,12 @@ INSERT INTO TagState VALUES (2, 'Tagged') INSERT INTO TagState VALUES (3, 'Abandoned') -- Create fake image entries -INSERT INTO Image_Info (ImageName,Folder,Height,Width) VALUES ('MyTestImage.jpg', 'SomeFolder', 40,40) -INSERT INTO Image_Info (ImageName,Folder,Height,Width) VALUES ('AnotherImage.jpg', 'Folder2', 60, 80) +INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) +VALUES ('MyTestImage.jpg', 'https://csehackstorage.blob.core.windows.net/image-to-tag/1.jpg', 40,40) +INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) +VALUES ('AnotherImage.jpg', 'https://csehackstorage.blob.core.windows.net/image-to-tag/2.jpg', 60, 80) -- Create untagged states for the 2 fake images. Assumes the Image Ids are 1 and 2 -INSERT INTO Image_Tagging (ImageId,TagStateId) VALUES (1, 0) -INSERT INTO Image_Tagging (ImageId,TagStateId) VALUES (2, 0) +INSERT INTO Image_Tagging_State (ImageId,TagStateId) VALUES (1, 0) +INSERT INTO Image_Tagging_State (ImageId,TagStateId) VALUES (2, 0) diff --git a/db/TableSchemasV2.sql b/db/TableSchemasV2.sql index 7428892b..5abaa934 100644 --- a/db/TableSchemasV2.sql +++ b/db/TableSchemasV2.sql @@ -69,7 +69,7 @@ CREATE OR REPLACE FUNCTION log_image_tagging_state_changes() BEGIN IF NEW.TagStateId <> OLD.TagStateId THEN INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedDtim,ArchiveDtim,ActionFlag) - VALUES(OLD.ImageId,OLD.TagStateId,OLD.ModifiedDtim,current_timestamp,2); + VALUES(NEW.ImageId,NEW.TagStateId,NEW.ModifiedDtim,current_timestamp,2); END IF; RETURN NEW; From f7c2e95e96524d1adb9f612004bd1d8dd9df7973 Mon Sep 17 00:00:00 2001 From: Samiya Date: Thu, 25 Oct 2018 16:07:14 -0700 Subject: [PATCH 013/145] Stats dashboard with mock data (#6) * Stats dashboard first pass * Remove test code --- dashboard/.gitignore | 3 + dashboard/server/server.py | 25 + dashboard/static/package-lock.json | 7809 +++++++++++++++++ dashboard/static/package.json | 39 + dashboard/static/readme.md | 13 + .../static/src/activelearningstatistics.css | 10 + .../static/src/activelearningstatistics.tsx | 53 + dashboard/static/src/dataviz.tsx | 25 + dashboard/static/src/index.html | 15 + dashboard/static/src/index.tsx | 9 + dashboard/static/tsconfig.json | 17 + dashboard/static/webpack.config.js | 65 + 12 files changed, 8083 insertions(+) create mode 100644 dashboard/.gitignore create mode 100644 dashboard/server/server.py create mode 100644 dashboard/static/package-lock.json create mode 100644 dashboard/static/package.json create mode 100644 dashboard/static/readme.md create mode 100644 dashboard/static/src/activelearningstatistics.css create mode 100644 dashboard/static/src/activelearningstatistics.tsx create mode 100644 dashboard/static/src/dataviz.tsx create mode 100644 dashboard/static/src/index.html create mode 100644 dashboard/static/src/index.tsx create mode 100644 dashboard/static/tsconfig.json create mode 100644 dashboard/static/webpack.config.js diff --git a/dashboard/.gitignore b/dashboard/.gitignore new file mode 100644 index 00000000..b9ba630e --- /dev/null +++ b/dashboard/.gitignore @@ -0,0 +1,3 @@ +static/dist/ +static/node_modules/ +server/venv/ \ No newline at end of file diff --git a/dashboard/server/server.py b/dashboard/server/server.py new file mode 100644 index 00000000..7d7726f8 --- /dev/null +++ b/dashboard/server/server.py @@ -0,0 +1,25 @@ +# server.py +from flask import Flask, render_template +import json + +app = Flask(__name__, static_folder="../static/dist", template_folder="../static/src") +statistics = {} +# todo: bring this data from db +statistics['count'] = 100 +statistics['totag'] = 20 +statistics['tagging'] = 50 +statistics['tagged'] = 30 + +@app.route("/") +def index(): + return render_template("index.html") + +@app.route("/stats") +def stats(): + if statistics['tagging'] > 0: + statistics['tagging'] -= 1 + statistics['tagged'] += 1 + return json.dumps(statistics) + +if __name__ == "__main__": + app.run() \ No newline at end of file diff --git a/dashboard/static/package-lock.json b/dashboard/static/package-lock.json new file mode 100644 index 00000000..314c3d4f --- /dev/null +++ b/dashboard/static/package-lock.json @@ -0,0 +1,7809 @@ +{ + "name": "active-learning-detect", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@microsoft/load-themed-styles": { + "version": "1.8.24", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.8.24.tgz", + "integrity": "sha512-Rzsg84Y65jCQ1uwVRTJpTFf0txjYRnxJStW5WTd0XbMxcYTaeUIcTd7FTfMMBtyqv01Fff/ESmNkeCFBlsP2SQ==", + "dev": true + }, + "@types/d3-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-1.2.1.tgz", + "integrity": "sha512-YBaAfimGdWE4nDuoGVKsH89/dkz2hWZ0i8qC+xxqmqi+XJ/aXiRF0jPtzXmN7VdkpVjy1xuDmM5/m1FNuB6VWA==", + "dev": true + }, + "@types/d3-axis": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-1.0.10.tgz", + "integrity": "sha512-5YF0wfdQMPKw01VAAupLIlg/T4pn5M3/vL9u0KZjiemnVnnKBEWE24na4X1iW+TfZiYJ8j+BgK2KFYnAAT54Ug==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-path": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-1.0.7.tgz", + "integrity": "sha512-U8dFRG+8WhkLJr2sxZ9Cw/5WeRgBnNqMxGdA1+Z0+ZG6tK0s75OQ4OXnxeyfKuh6E4wQPY8OAKr1+iNDx01BEQ==", + "dev": true + }, + "@types/d3-scale": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/@types/d3-scale/-/d3-scale-2.0.0.tgz", + "integrity": "sha512-fFLSdP3p9qQQ3W6ouO3GBI4Qg94CSykTWVc61U8SI1V62dfBWtOigBj5voxDcOniwh9MjKzTHldMSsGJ5qAFpA==", + "dev": true, + "requires": { + "@types/d3-time": "*" + } + }, + "@types/d3-selection": { + "version": "1.3.0", + "resolved": "http://registry.npmjs.org/@types/d3-selection/-/d3-selection-1.3.0.tgz", + "integrity": "sha512-1SJhi3kTk/SHHIE6XkHuHU2REYkbSOjkQuo3HT71FOTs8/tjeGcvtXMsX4N3kU1UE1nVG+A5pg7TSjuJ4zUN3A==", + "dev": true + }, + "@types/d3-shape": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.2.4.tgz", + "integrity": "sha512-X4Xq2mpChPIMDMAXwLfxHKLbqv+sowkJ94bENeSMqqhQJ5v4oXuoyLo0vnIkydVbuQ52ZwPplk219K0m2HJODg==", + "dev": true, + "requires": { + "@types/d3-path": "*" + } + }, + "@types/d3-time": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.0.9.tgz", + "integrity": "sha512-m+D4NbQdDlTVaO7QgXAnatR3IDxQYDMBtRhgSCi5rs9R1LPq1y7/2aqa1FJ2IWjFm1mOV63swDxonnCDlHgHMA==", + "dev": true + }, + "@types/d3-time-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.1.0.tgz", + "integrity": "sha512-/myT3I7EwlukNOX2xVdMzb8FRgNzRMpsZddwst9Ld/VFe6LyJyRp0s32l/V9XoUzk+Gqu56F/oGk6507+8BxrA==", + "dev": true + }, + "@types/node": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.2.tgz", + "integrity": "sha512-bjk1RIeZBCe/WukrFToIVegOf91Pebr8cXYBwLBIsfiGWVQ+ifwWsT59H3RxrWzWrzd1l/Amk1/ioY5Fq3/bpA==", + "dev": true + }, + "@types/react": { + "version": "16.3.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.3.14.tgz", + "integrity": "sha512-wNUGm49fPl7eE2fnYdF0v5vSOrUMdKMQD/4NwtQRnb6mnPwtkhabmuFz37eq90+hhyfz0pWd38jkZHOcaZ6LGw==", + "dev": true, + "requires": { + "csstype": "^2.2.0" + } + }, + "@types/react-dom": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.0.5.tgz", + "integrity": "sha512-ony2hEYlGXCLWNAWWgbsHR7qVvDbeMRFc5b43+7dhj3n+zXzxz81HV9Yjpc3JD8vLCiwYoSLqFCI6bD0+0zG2Q==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/react": "*" + } + }, + "@uifabric/charting": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@uifabric/charting/-/charting-0.25.2.tgz", + "integrity": "sha512-igKNEB2npOWADqk/Ih288KrvLjCA5SRDYxU7kkPHcQinAEUXzJ6YXLLHnMEP5fcmbYPP4PIXP+k+pEo8f65KFw==", + "dev": true, + "requires": { + "@microsoft/load-themed-styles": "^1.7.13", + "@types/d3-array": "1.2.1", + "@types/d3-axis": "1.0.10", + "@types/d3-scale": "2.0.0", + "@types/d3-selection": "1.3.0", + "@types/d3-shape": "^1.2.3", + "@types/d3-time-format": "^2.1.0", + "@uifabric/icons": ">=6.1.2 <7.0.0", + "@uifabric/set-version": ">=1.1.3 <2.0.0", + "d3-array": "1.2.1", + "d3-axis": "1.0.8", + "d3-scale": "2.0.0", + "d3-selection": "1.3.0", + "d3-shape": "^1.2.0", + "d3-time-format": "^2.1.3", + "office-ui-fabric-react": ">=6.91.0 <7.0.0", + "prop-types": "^15.5.10", + "tslib": "^1.7.1" + } + }, + "@uifabric/icons": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@uifabric/icons/-/icons-6.1.2.tgz", + "integrity": "sha512-G2fMLUqSpQXoODu1B4823dRW6e/Lu6D++AJzEfg2+mkyDYwH++nS7bwvvE56w0tGH85oqiiiJqR6I4+8E83uTw==", + "dev": true, + "requires": { + "@uifabric/set-version": ">=1.1.2 <2.0.0", + "@uifabric/styling": ">=6.29.2 <7.0.0", + "tslib": "^1.7.1" + } + }, + "@uifabric/merge-styles": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-6.10.4.tgz", + "integrity": "sha512-s4pXzTU+s0gPOZ9RkunS7t8jxGGPOUXLVSJ7I1DHvs4SpcDQLGZh6X7p5MpJa4BpZbE4yWDi2agRoC3V8+Df9Q==", + "dev": true, + "requires": { + "@uifabric/set-version": ">=1.1.3 <2.0.0", + "tslib": "^1.7.1" + } + }, + "@uifabric/set-version": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-1.1.3.tgz", + "integrity": "sha512-IYpwVIuN7MJOeiWzZzr9AmFSvA5zc6gJn4fNHtEFIQnNB8WVWIcYrvx8Tbf7wWj9MvhdHYp70F054zZlHbL/Ag==", + "dev": true, + "requires": { + "tslib": "^1.7.1" + } + }, + "@uifabric/styling": { + "version": "6.32.2", + "resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-6.32.2.tgz", + "integrity": "sha512-QLtqMPC2vLjM5B/gJFmYMVToYu1FHfa6h62T9ZeGNDpaQue+MLgX7aw+9OPbf2BjoUhdA+hyFYisVbCOX9NnCA==", + "dev": true, + "requires": { + "@microsoft/load-themed-styles": "^1.7.13", + "@uifabric/merge-styles": ">=6.10.4 <7.0.0", + "@uifabric/set-version": ">=1.1.3 <2.0.0", + "@uifabric/utilities": ">=6.23.1 <7.0.0", + "tslib": "^1.7.1" + } + }, + "@uifabric/utilities": { + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-6.23.1.tgz", + "integrity": "sha512-In/J78i27Ku85YgNDTG144KziyA1W4X3srINRXpGQ1bpLLCWyOYLMWjDWTm8DMu6VM1hXGPY9kFf7Plnifirug==", + "dev": true, + "requires": { + "@uifabric/merge-styles": ">=6.10.2 <7.0.0", + "@uifabric/set-version": ">=1.1.3 <2.0.0", + "prop-types": "^15.5.10", + "tslib": "^1.7.1" + } + }, + "@webassemblyjs/ast": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.3.1.tgz", + "integrity": "sha512-WJKy500MK6cM5LNcOjKlLHnYtTU5PcmL06iXErYriA90GLn7W/EzIyknZRx0Bj3W6FjYKTPkHADdE3GM0ZJk1Q==", + "dev": true, + "requires": { + "@webassemblyjs/helper-wasm-bytecode": "1.3.1", + "@webassemblyjs/wast-parser": "1.3.1", + "webassemblyjs": "1.3.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.3.1.tgz", + "integrity": "sha512-8kCRyt0bQSnZD67UQfDTONO0jD7HCxmNUUJfT9OnVok0RWYs/AnpS83kfHtQjHucRMyx2d+YlsJWkdhXdLobqA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.3.1.tgz", + "integrity": "sha512-xIcxcfkBrrivLauyXJ57i/ArPy+kFgZjMDrxm4pSUBG2VtwwYKjOZAyjf4qsM4JbP5vRuRzMD2gp+a9WMyC3PA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.3.1.tgz", + "integrity": "sha512-X305tLl7qeTixYz0/Y0Xu+bcNizJLfHUZ1iTiVtorDkh5mLrIZ8hLkkM2oYNSq/oaoW6gpHDrHRfYZItExTeeQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.3.1" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.3.1.tgz", + "integrity": "sha512-Be1G8ZDTP1T+vXaVMraXY8+SoJnOVNarRkByrM83PHjW+vqUwubwYPpA4U2NBTz4WG19vYpfsUccCZwOPiyK+Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.3.1.tgz", + "integrity": "sha512-rOIjy/Cmd+hspim9B/c7dUqhW8AyKsRceVcQtWljIvFSitx9rsL5m73NGaGFUVAEaMDvvEzYczehjwbrHPz4KA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.3.1.tgz", + "integrity": "sha512-mDBlDsrsl1Y7LGEdmlTzdDwr/SCe2l9ZsQZ1GYXird71jlU/0djs5ZXfxyufd1G3wO+yuxW997m50Patk4s1fA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.3.1", + "@webassemblyjs/helper-buffer": "1.3.1", + "@webassemblyjs/helper-wasm-bytecode": "1.3.1", + "@webassemblyjs/wasm-gen": "1.3.1" + } + }, + "@webassemblyjs/leb128": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.3.1.tgz", + "integrity": "sha512-CgkWUXRINTGs/+Swp8COvwOk5Ci4spv1MKDdGfRecyFiLGs7wYm/p4fgRQWzBEFaotEP/ftPa9O6BFykrwghzw==", + "dev": true, + "requires": { + "leb": "^0.3.0" + } + }, + "@webassemblyjs/validation": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/validation/-/validation-1.3.1.tgz", + "integrity": "sha512-afp32tgDVwW53lQc58PtIBifyZf3qGzRpl9r+8SNHzPOe6lBamjK1RWEA83YHwvu7qk6uBV7IAeUC7BgdxPtsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.3.1" + } + }, + "@webassemblyjs/wasm-edit": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.3.1.tgz", + "integrity": "sha512-0T75tHKR0dIDiO3oqBZmo+2McJy5FkgSL2AIP3rJvqrDFaJ19jCrC5KLqGbqo3ZicdY9x9Xdc9zaY2A1TCkAiw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.3.1", + "@webassemblyjs/helper-buffer": "1.3.1", + "@webassemblyjs/helper-wasm-bytecode": "1.3.1", + "@webassemblyjs/helper-wasm-section": "1.3.1", + "@webassemblyjs/wasm-gen": "1.3.1", + "@webassemblyjs/wasm-opt": "1.3.1", + "@webassemblyjs/wasm-parser": "1.3.1", + "@webassemblyjs/wast-printer": "1.3.1", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.3.1.tgz", + "integrity": "sha512-iYgQ3UJpsKiJnXerHulT//JpJAHuLavqMPEtUiRnSh0r/WvZh8pNtYBaN2v64+d9yTtu9aMlJmlKi6uz1j5FFg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.3.1", + "@webassemblyjs/helper-wasm-bytecode": "1.3.1", + "@webassemblyjs/leb128": "1.3.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.3.1.tgz", + "integrity": "sha512-Eqi1he5VuGxMYKGhrBU+UxUhIwTDlnuvJmwrad3k4dD2UQpqu3HedRndGdJTQ68xj2GqDCdE6QiLzjytSN4KVQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.3.1", + "@webassemblyjs/helper-buffer": "1.3.1", + "@webassemblyjs/wasm-gen": "1.3.1", + "@webassemblyjs/wasm-parser": "1.3.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.3.1.tgz", + "integrity": "sha512-euRnqP/bky9DGbXf5Nqvtmc5soOM7xkvwI2H+LSP88NAFkcGMPEnrAP4UbsFAH+ESnS4kAW6wL5UyzjWBiiTbA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.3.1", + "@webassemblyjs/helper-wasm-bytecode": "1.3.1", + "@webassemblyjs/leb128": "1.3.1", + "@webassemblyjs/wasm-parser": "1.3.1", + "webassemblyjs": "1.3.1" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.3.1.tgz", + "integrity": "sha512-lM7Kwsp1mqqL3jq1kXKeoT8Z/cXvPQ2kWBNg19nZXbL1eLgr+4qRi83WvQU45+5+uIovigtBw/WU0nLLev7LGA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.3.1", + "@webassemblyjs/floating-point-hex-parser": "1.3.1", + "@webassemblyjs/helper-code-frame": "1.3.1", + "@webassemblyjs/helper-fsm": "1.3.1", + "long": "^3.2.0", + "webassemblyjs": "1.3.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.3.1.tgz", + "integrity": "sha512-V2SMByzsrTT2wGQOjm/3ctCiy8mdYOSLDk+EkOpNHVZWB9ISJc+gZWzniTgihih03UWqqNa1S/0XpyVz7ZEYSQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.3.1", + "@webassemblyjs/wast-parser": "1.3.1", + "long": "^3.2.0" + } + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "ajv": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^4.2.1" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "atob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "dev": true + }, + "awesome-typescript-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-5.0.0.tgz", + "integrity": "sha512-/80vlBnWp5IlERQ0sxRDQfz5voqht02MRNgUdbn90rKHrope6eh0PYr0qepD2TpYYnCSvq0DzdWc8udHM0KefA==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.1.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.3" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", + "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "axios": { + "version": "0.18.0", + "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "dev": true, + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "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" + } + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "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", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + }, + "dependencies": { + "browserslist": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.7.tgz", + "integrity": "sha512-oYVLxFVqpX9uMhOIQBLtZL+CX4uY8ZpWcjNTaxyWl5rO8yA9SSNikFnAfvk8J3P/7z3BZwNmEqFKaJoYltj3MQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000835", + "electron-to-chromium": "^1.3.45" + } + } + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + } + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "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" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "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" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "bootstrap": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.1.tgz", + "integrity": "sha512-SpiDSOcbg4J/PjVSt4ny5eY6j74VbVSjROY4Fb/WIUXBV9cnb5luyR4KnPvNoXuGnBK1T+nJIWqRsvU3yP8Mcg==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "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=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", + "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-lite": { + "version": "1.0.30000839", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000839.tgz", + "integrity": "sha512-gJZIfmkuy84agOeAZc7WJOexZhisZaBSFk96gkGM6TkH7+1mBfr/MSPnXC8lO0g7guh/ucbswYjruvDbzc6i0g==", + "dev": true + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.1.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.0" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "chrome-trace-event": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", + "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", + "dev": true, + "requires": { + "source-map": "0.5.x" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "compressible": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", + "dev": true, + "requires": { + "mime-db": ">= 1.33.0 < 2" + } + }, + "compression": { + "version": "1.7.2", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "bytes": "3.0.0", + "compressible": "~2.0.13", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.1", + "vary": "~1.1.2" + }, + "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" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", + "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.0.tgz", + "integrity": "sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash.camelcase": "^4.3.0", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + } + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "csstype": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.2.tgz", + "integrity": "sha512-epoHrKPywwUhFTXadQNA5PPx4GChtkM03SkBeFZTaFtJcn6QfXpBkX2IAc4J9Oe18nha5NrTOo2OMOge+qH1mw==", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "^0.10.9" + } + }, + "d3-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", + "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==", + "dev": true + }, + "d3-axis": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz", + "integrity": "sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo=", + "dev": true + }, + "d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==", + "dev": true + }, + "d3-color": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.3.tgz", + "integrity": "sha512-x37qq3ChOTLd26hnps36lexMRhNXEtVxZ4B25rL0DVdDsGQIJGB18S7y9XDwlDD6MD/ZBzITCf4JjGMM10TZkw==", + "dev": true + }, + "d3-format": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.3.2.tgz", + "integrity": "sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ==", + "dev": true + }, + "d3-interpolate": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz", + "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==", + "dev": true, + "requires": { + "d3-color": "1" + } + }, + "d3-path": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.7.tgz", + "integrity": "sha512-q0cW1RpvA5c5ma2rch62mX8AYaiLX0+bdaSM2wxSU9tXjU4DNvkx9qiUvjkuWCj3p22UO/hlPivujqMiR9PDzA==", + "dev": true + }, + "d3-scale": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.0.0.tgz", + "integrity": "sha512-Sa2Ny6CoJT7x6dozxPnvUQT61epGWsgppFvnNl8eJEzfJBG0iDBBTJAtz2JKem7Mb+NevnaZiDiIDHsuWkv6vg==", + "dev": true, + "requires": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "d3-selection": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.3.0.tgz", + "integrity": "sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA==", + "dev": true + }, + "d3-shape": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.2.tgz", + "integrity": "sha512-hUGEozlKecFZ2bOSNt7ENex+4Tk9uc/m0TtTEHBvitCBxUNjhzm5hS2GrrVRD/ae4IylSmxGeqX5tWC2rASMlQ==", + "dev": true, + "requires": { + "d3-path": "1" + } + }, + "d3-time": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.10.tgz", + "integrity": "sha512-hF+NTLCaJHF/JqHN5hE8HVGAXPStEq6/omumPE/SxyHVrR7/qQxusFDo0t0c/44+sCGHthC7yNGFZIEgju0P8g==", + "dev": true + }, + "d3-time-format": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.3.tgz", + "integrity": "sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA==", + "dev": true, + "requires": { + "d3-time": "1" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "requires": { + "utila": "~0.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.45", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz", + "integrity": "sha1-RYrBscXHYM6IEaFtK/vZfsMLr7g=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "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" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", + "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", + "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" + } + }, + "es5-ext": { + "version": "0.10.42", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", + "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "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=", + "dev": true + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": ">=0.0.5" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "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" + }, + "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=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.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" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.3", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "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" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fbjs": { + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "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.9" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + } + } + }, + "file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "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=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + }, + "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" + } + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "follow-redirects": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", + "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", + "dev": true, + "requires": { + "debug": "^3.1.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", + "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.9.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.9.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "global-modules-path": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz", + "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "^1.0.2" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.15.tgz", + "integrity": "sha512-OZa4rfb6tZOZ3Z8Xf0jKxXkiDcFWldQePGYFDcgKqES2sXeWaEv9y6QQvWUtX3ySI3feApQi5uCsHLINQ6NoAw==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.1.x", + "commander": "2.15.x", + "he": "1.1.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.3.x" + }, + "dependencies": { + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.3.24", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.24.tgz", + "integrity": "sha512-hS7+TDiqIqvWScCcKRybCQzmMnEzJ4ryl9ErRmW4GFyG48p0/dKZiy/5mVLbsFzU8CCnCgQdxMiJzZythvLzCg==", + "dev": true, + "requires": { + "commander": "~2.15.0", + "source-map": "~0.6.1" + } + } + } + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.1", + "domutils": "1.1", + "readable-stream": "1.0" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-parser-js": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz", + "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "dev": true, + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "ieee754": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", + "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "^3.3.0" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "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=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", + "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "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=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "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=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "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=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "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" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "leb": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz", + "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=", + "dev": true + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "loglevelnext": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", + "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", + "dev": true, + "requires": { + "es6-symbol": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "^3.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz", + "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "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", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.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=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "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" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.0.tgz", + "integrity": "sha512-2Zik6PhUZ/MbiboG6SDS9UTPL4XXy4qnyGjSdCIWRrr8xb6PwLtHE+AYOjkXJWdF0OG8vo/yrJ8CgS5WbMpzIg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "webpack-sources": "^1.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" + } + } + }, + "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" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", + "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "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" + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "office-ui-fabric-react": { + "version": "6.92.0", + "resolved": "https://registry.npmjs.org/office-ui-fabric-react/-/office-ui-fabric-react-6.92.0.tgz", + "integrity": "sha512-+Lw1EjT/DkXOyZeARfbFrwtcLMNjF7KXSPJy+MQyj/fj768t+tPeuc9g41gD0YnaTJ6U+Sh0CtS0TTuMqqvgrA==", + "dev": true, + "requires": { + "@microsoft/load-themed-styles": "^1.7.13", + "@uifabric/icons": ">=6.1.2 <7.0.0", + "@uifabric/merge-styles": ">=6.10.4 <7.0.0", + "@uifabric/set-version": ">=1.1.3 <2.0.0", + "@uifabric/styling": ">=6.32.2 <7.0.0", + "@uifabric/utilities": ">=6.23.1 <7.0.0", + "prop-types": "^15.5.10", + "tslib": "^1.7.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "dev": true, + "requires": { + "url-parse": "1.0.x" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "dev": true, + "requires": { + "querystringify": "0.0.x", + "requires-port": "1.0.x" + } + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "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=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + }, + "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" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prop-types": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", + "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", + "requires": { + "fbjs": "^0.8.16", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, + "proxy-addr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", + "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.6.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.0.tgz", + "integrity": "sha512-UWi0klDoq8xtVzlMRgENV9F7iCTZExaJQSQL187UXsxpk9NnrKGqTqqUNYAKGOzucSOxs2+jUnRNI+rLviPhJg==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } + } + }, + "react": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/react/-/react-16.3.2.tgz", + "integrity": "sha512-o5GPdkhciQ3cEph6qgvYB7LTOHw/GB0qRI6ZFNugj49qJCFfgHwVNjZ5u+b7nif4vOeMIOuYj3CeYe2IBD74lg==", + "requires": { + "fbjs": "^0.8.16", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.0" + } + }, + "react-dom": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.3.2.tgz", + "integrity": "sha512-MMPko3zYncNrz/7gG17wJWUREZDvskZHXOwbttzl0F0L3wDmToyuETuo/r8Y5yvDejwYcRyWI1lvVBjLJWFwKA==", + "requires": { + "fbjs": "^0.8.16", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "~0.1", + "htmlparser2": "~3.3.0", + "strip-ansi": "^3.0.0", + "utila": "~0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass-loader": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.0" + } + }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", + "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "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" + } + } + } + }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "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" + } + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^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=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "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" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "dev": true, + "requires": { + "debug": "^2.6.6", + "eventsource": "0.1.6", + "faye-websocket": "~0.11.0", + "inherits": "^2.0.1", + "json3": "^3.3.2", + "url-parse": "^1.1.8" + }, + "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" + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "^2.6.8", + "handle-thing": "^1.2.5", + "http-deceiver": "^1.2.7", + "safe-buffer": "^5.0.1", + "select-hose": "^2.0.0", + "spdy-transport": "^2.0.18" + }, + "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" + } + } + } + }, + "spdy-transport": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", + "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "dev": true, + "requires": { + "debug": "^2.6.8", + "detect-node": "^2.0.3", + "hpack.js": "^2.1.6", + "obuf": "^1.1.1", + "readable-stream": "^2.2.9", + "safe-buffer": "^5.0.1", + "wbuf": "^1.7.2" + }, + "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" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "style-loader": { + "version": "0.22.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.22.1.tgz", + "integrity": "sha512-WXUrLeinPIR1Oat3PfCDro7qTniwNTJqGqv1KcQiL3JR5PzrVLTyNsd9wTsPXG/qNCJ7lzR2NY/QDjFsP7nuSQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^0.4.5" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tapable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "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=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.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=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.3.tgz", + "integrity": "sha512-+81MUSyX+BaSo+u2RbozuQk/UWx6hfG0a5gHu4ANEM4sU96XbuIyAB+rWBW1u70c6a5QuZfuYICn3s2UjuHUpA==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.18", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.18.tgz", + "integrity": "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA==" + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz", + "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.5.tgz", + "integrity": "sha512-qbKn90aDQ0YEwvXoLqj0oiuUYroLX2lVHZ+b+xwjozFasAOC4GneDq5+OaIG5Zj+jFmbz/uO+f7a9qxjktJQww==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz", + "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", + "dev": true + }, + "url-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.0.1.tgz", + "integrity": "sha512-rAonpHy7231fmweBKUFe0bYnlGDty77E+fm53NZdij7j/YOpyGzc7ttqG1nAXl3aRs0k41o0PC3TvGXQiw2Zvw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^0.4.3" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", + "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", + "dev": true, + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", + "dev": true + } + } + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", + "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webassemblyjs": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/webassemblyjs/-/webassemblyjs-1.3.1.tgz", + "integrity": "sha512-jaqGpR+MLye6fzxKTiv0/TPEm6ma7ypef76JlQVk9E1z5M2N6EXNrsMOuh7P6aXUVFHJSioRp4N9QOFpcWfIVA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.3.1", + "@webassemblyjs/validation": "1.3.1", + "@webassemblyjs/wasm-parser": "1.3.1", + "@webassemblyjs/wast-parser": "1.3.1", + "long": "^3.2.0" + } + }, + "webpack": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.8.1.tgz", + "integrity": "sha512-xkxthzaVR298HmvmrjBCjiCmgzWnBnvBlgPzuvqmxWSh8QImrPvCCmr482YIx7ixWkTtQj1aMRz+cjoNPUsGEQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.3.1", + "@webassemblyjs/wasm-edit": "1.3.1", + "@webassemblyjs/wasm-parser": "1.3.1", + "acorn": "^5.0.0", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^0.1.1", + "enhanced-resolve": "^4.0.0", + "eslint-scope": "^3.7.1", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.0.1" + } + }, + "webpack-cli": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz", + "integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.0", + "global-modules-path": "^2.3.0", + "import-local": "^2.0.0", + "interpret": "^1.1.0", + "loader-utils": "^1.1.0", + "supports-color": "^5.5.0", + "v8-compile-cache": "^2.0.2", + "yargs": "^12.0.2" + }, + "dependencies": { + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.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==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^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==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.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==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz", + "integrity": "sha512-I6Mmy/QjWU/kXwCSFGaiOoL5YEQIVmbb0o45xMoCyQAg/mClqZVTcsX327sPfekDyJWpCxb+04whNyLOIxpJdQ==", + "dev": true, + "requires": { + "loud-rejection": "^1.6.0", + "memory-fs": "~0.4.1", + "mime": "^2.1.0", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "url-join": "^4.0.0", + "webpack-log": "^1.0.1" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz", + "integrity": "sha512-itcIUDFkHuj1/QQxzUFOEXXmxOj5bku2ScLEsOFPapnq2JRTm58gPdtnBphBJOKL2+M3p6+xygL64bI+3eyzzw==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "^3.0.3", + "bonjour": "^3.5.0", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "~0.18.0", + "import-local": "^1.0.0", + "internal-ip": "1.2.0", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "selfsigned": "^1.9.1", + "serve-index": "^1.7.2", + "sockjs": "0.3.19", + "sockjs-client": "1.1.4", + "spdy": "^3.4.1", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", + "webpack-dev-middleware": "3.1.3", + "webpack-log": "^1.1.2", + "yargs": "11.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.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", + "yargs-parser": "^9.0.2" + } + } + } + }, + "webpack-log": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", + "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "loglevelnext": "^1.0.1", + "uuid": "^3.1.0" + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "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==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.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": "^10.1.0" + }, + "dependencies": { + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "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" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "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==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "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==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, + "os-locale": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", + "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.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==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } +} diff --git a/dashboard/static/package.json b/dashboard/static/package.json new file mode 100644 index 00000000..fb3fb167 --- /dev/null +++ b/dashboard/static/package.json @@ -0,0 +1,39 @@ +{ + "name": "active-learning-detect", + "version": "1.0.0", + "description": "Display a stats dashboard for active learning pipeline", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "webpack-dev-server --mode development --inline --hot --open", + "build": "webpack --mode development" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "@types/react": "^16.3.14", + "@types/react-dom": "^16.0.5", + "@uifabric/charting": "^0.25.2", + "awesome-typescript-loader": "^5.0.0", + "axios": "^0.18.0", + "babel-core": "^6.26.3", + "babel-preset-env": "^1.7.0", + "css-loader": "^1.0.0", + "file-loader": "^1.1.11", + "html-webpack-plugin": "^3.2.0", + "mini-css-extract-plugin": "^0.4.0", + "office-ui-fabric-react": "^6.92.0", + "style-loader": "^0.22.1", + "typescript": "^3.0.1", + "url-loader": "^1.0.1", + "webpack": "^4.8.1", + "webpack-cli": "^3.1.0", + "webpack-dev-server": "^3.1.4" + }, + "dependencies": { + "bootstrap": "^4.1.1", + "react": "^16.3.2", + "react-dom": "^16.3.2", + "sass-loader": "^7.1.0" + } +} diff --git a/dashboard/static/readme.md b/dashboard/static/readme.md new file mode 100644 index 00000000..4c2915d0 --- /dev/null +++ b/dashboard/static/readme.md @@ -0,0 +1,13 @@ +## Prerequisites + +Install [Node.js and npm](https://nodejs.org/en/) (v8.9.4 or higher) if they are not already installed on your computer. + +> Verify that you are running at least node v8.x.x and npm 5.x.x by running `node -v` and `npm -v` +in a terminal/console window. Older versions may produce errors. + +## Steps to build it + +1. cd into the static folder and run `npm install`, then `npm run build` +2. cd .. +3. cd into the server folder and initialize a new virtualenv +4. `python server.py` \ No newline at end of file diff --git a/dashboard/static/src/activelearningstatistics.css b/dashboard/static/src/activelearningstatistics.css new file mode 100644 index 00000000..9268791a --- /dev/null +++ b/dashboard/static/src/activelearningstatistics.css @@ -0,0 +1,10 @@ +.title { + padding: 10px 10px 0px 20px; + font-family: 'Helvetica' +} + +.chart { + width: 500px; + padding: 30px 10px 30px 20px; + height: 400px; +} \ No newline at end of file diff --git a/dashboard/static/src/activelearningstatistics.tsx b/dashboard/static/src/activelearningstatistics.tsx new file mode 100644 index 00000000..bc305174 --- /dev/null +++ b/dashboard/static/src/activelearningstatistics.tsx @@ -0,0 +1,53 @@ +import * as React from 'react'; +import { DataViz } from './dataviz'; +import axios from 'axios'; +import './activelearningstatistics.css'; + +export interface IActiveLearningStatisticsState { + totag: number; + tagging: number; + count: number; + tagged: number; +} + +export class ActiveLearningStatistics extends React.Component<{}, IActiveLearningStatisticsState> { + constructor(props: {}) { + super(props); + this.state = { + totag: 0, + tagging: 0, + tagged: 0, + count: 0 + } + } + refreshData = () => { + axios.get('/stats').then(response => { + console.log(response.data); + this.setState({ + totag: response.data.totag, + tagging: response.data.tagging, + tagged: response.data.tagged, + count: response.data.count + }) + }); + } + + componentDidMount() { + this.refreshData(); + window.setInterval(this.refreshData, 10000); + } + public render() { + return ( +
+

Active learning detect statistics

+
Total images uploaded: {this.state.count}
+
Images to tag: {this.state.totag}
+
Tagging images: {this.state.tagging}
+
Tagged images: {this.state.tagged}
+
+ +
+
); + } +} + diff --git a/dashboard/static/src/dataviz.tsx b/dashboard/static/src/dataviz.tsx new file mode 100644 index 00000000..c3e9b184 --- /dev/null +++ b/dashboard/static/src/dataviz.tsx @@ -0,0 +1,25 @@ +import * as React from 'react'; +import { DonutChart, IDonutChartProps, IChartProps, IChartDataPoint } from '@uifabric/charting'; +import { DefaultPalette } from 'office-ui-fabric-react/lib/Styling'; + +export interface IDataVizProps { + totag: number; + tagged: number; + tagging: number; +} + +export class DataViz extends React.Component { + public render() { + const points: IChartDataPoint[] = [ + { legend: 'To tag', data: this.props.totag, color: DefaultPalette.orangeLighter }, + { legend: 'Tagging', data: this.props.tagging, color: DefaultPalette.purpleLight }, + { legend: 'Tagged', data: this.props.tagged, color: DefaultPalette.greenLight } + ]; + + const data: IChartProps = { + chartData: points + }; + return ; + } +} + diff --git a/dashboard/static/src/index.html b/dashboard/static/src/index.html new file mode 100644 index 00000000..bde9a852 --- /dev/null +++ b/dashboard/static/src/index.html @@ -0,0 +1,15 @@ + + + + + + + + +
+ +
+
+ + + \ No newline at end of file diff --git a/dashboard/static/src/index.tsx b/dashboard/static/src/index.tsx new file mode 100644 index 00000000..102396d6 --- /dev/null +++ b/dashboard/static/src/index.tsx @@ -0,0 +1,9 @@ +import * as React from 'react'; +import * as ReactDOM from 'react-dom'; + +import { ActiveLearningStatistics } from './activelearningstatistics'; + + ReactDOM.render( + , + document.getElementById('root') + ); \ No newline at end of file diff --git a/dashboard/static/tsconfig.json b/dashboard/static/tsconfig.json new file mode 100644 index 00000000..8d8e19e6 --- /dev/null +++ b/dashboard/static/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "es6", + "moduleResolution": "node", + "declaration": false, + "noImplicitAny": false, + "sourceMap": true, + "jsx": "react", + "noLib": false, + "suppressImplicitAnyIndexErrors": true + }, + "compileOnSave": false, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/dashboard/static/webpack.config.js b/dashboard/static/webpack.config.js new file mode 100644 index 00000000..480aee53 --- /dev/null +++ b/dashboard/static/webpack.config.js @@ -0,0 +1,65 @@ +let path = require('path'); +let HtmlWebpackPlugin = require('html-webpack-plugin'); +let MiniCssExtractPlugin = require('mini-css-extract-plugin'); +let webpack = require('webpack'); + +var basePath = __dirname; + +module.exports = { + context: path.join(basePath, 'src'), + resolve: { + extensions: ['.js', '.ts', '.tsx'] + }, + entry: { + app: './index.tsx', + vendorStyles: [ + '../node_modules/bootstrap/dist/css/bootstrap.css', + ], + }, + output: { + // path: path.join(basePath, 'dist'), + path: __dirname + '/dist', + filename: '[name].js', + }, + module: { + rules: [ + { + test: /\.tsx$/, + exclude: /node_modules/, + loader: 'awesome-typescript-loader', + options: { + useBabel: true, + }, + }, + { + test: /\.css$/, + use: [MiniCssExtractPlugin.loader, "css-loader"], + }, + { + test: /\.(png|jpg|gif|svg)$/, + loader: 'file-loader', + options: { + name: 'assets/img/[name].[ext]?[hash]' + } + }, + ], + }, + // For development https://webpack.js.org/configuration/devtool/#for-development + devtool: 'inline-source-map', + devServer: { + port: 8080, + noInfo: true, + }, + plugins: [ + //Generate index.html in /dist => https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: 'index.html', //Name of file in ./dist/ + template: 'index.html', //Name of template in ./src + hash: true, + }), + new MiniCssExtractPlugin({ + filename: "[name].css", + chunkFilename: "[id].css" + }), + ], +}; \ No newline at end of file From ed7428c875c9a38e0d440696e9adae459c9d5ae1 Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Thu, 25 Oct 2018 16:42:51 -0700 Subject: [PATCH 014/145] Adding data file stub (#7) --- cli/src/operations.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/cli/src/operations.py b/cli/src/operations.py index 2347aec9..a134d6c8 100644 --- a/cli/src/operations.py +++ b/cli/src/operations.py @@ -80,7 +80,6 @@ def download(config, num_images, strategy=None): file_tree = pathlib.Path(os.path.expanduser(config.get("tagging_location"))) if file_tree.exists(): print("Removing existing tag data directory: " + str(file_tree)) - shutil.rmtree(str(file_tree), ignore_errors=True) data_dir = pathlib.Path(file_tree / "data") @@ -89,13 +88,22 @@ def download(config, num_images, strategy=None): exist_ok=True ) - download_images(data_dir, json_resp['urls']) + download_images(data_dir, json_resp) print("Downloaded files. Ready to tag!") return images_to_download -def download_images(image_dir, urls): +def download_images(image_dir, json_resp): print("Downloading files to " + str(image_dir)) + + # dummy json file for vott. + data_file = pathlib.Path(image_dir / "data.json") + + with open(str(data_file), "wb") as file: + file.writelines(json_resp.get("vott", "no json")) + file.close() + + urls = json_resp['urls'] dummy = urls[0] for index in range(len(urls)): From 9f46e8030e1275e30c5642ca17c75ca60a058190 Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Thu, 25 Oct 2018 16:48:35 -0700 Subject: [PATCH 015/145] Rebase upstream (#8) * pip install updates * str for paths * itinitial chnages for 'ideal_class_balance' settings * initial tests setup * initial tests setup * fix tests in master * Revert "Merge branch 'olgalidev' into master" This reverts commit 1d351800e1653da40383218e6390220168f49c3c, reversing changes made to 9b65da1faab9d302327e0355ddbe6633f16aaa3f. * update test, fix case with multiple classes per image * download_vott_json refactoring: simplifing "user_folder" flow, adding more test * fix tests in master * adding support for NULL detection class to "ideal class balance" * adding support for NULL detection class to "ideal class balance" * Yash's feeback on PR * Test for prediction flow minor code clean up on-demand model download for testing * Set up CI with Azure Pipelines * Fixing azure pipeline * Fixing test directory * Removing source distribution job * Remove abandon init (#4) * Removing abandon and init * Fixing tests * Add tagging location (#5) * Adding tagging config and tests * Adding tagging location * Using pathlib * Stats dashboard with mock data (#6) * Stats dashboard first pass * Remove test code --- .gitignore | 5 +- cli/src/operations.py | 2 + config.ini | 8 +- config_description.md | 9 + tag/download_vott_json.py | 135 ++++++-- test/Images_source.json | 1 + test/all_predictions.npy | Bin 0 -> 1335 bytes test/board_images_png/st1026.png | Bin 0 -> 358051 bytes test/board_images_png/st1194.png | Bin 0 -> 209007 bytes test/board_images_png/st1578.png | Bin 0 -> 370035 bytes test/board_images_png/st1611.png | Bin 0 -> 367171 bytes test/board_images_png/st1840.png | Bin 0 -> 377937 bytes test/test_create_predictions.py | 49 +++ test/test_download_vott_json.py | 215 ++++++++++++ test/test_tf_detector.py | 57 ++++ test/totag_source.csv | 564 +++++++++++++++++++++++++++++++ test/totag_source2.csv | 11 + test/untagged_source.csv | 11 + train/create_predictions.py | 37 +- train/tf_detector.py | 4 +- utils/config.py | 12 +- 21 files changed, 1074 insertions(+), 46 deletions(-) create mode 100644 test/Images_source.json create mode 100644 test/all_predictions.npy create mode 100644 test/board_images_png/st1026.png create mode 100644 test/board_images_png/st1194.png create mode 100644 test/board_images_png/st1578.png create mode 100644 test/board_images_png/st1611.png create mode 100644 test/board_images_png/st1840.png create mode 100644 test/test_create_predictions.py create mode 100644 test/test_download_vott_json.py create mode 100644 test/test_tf_detector.py create mode 100644 test/totag_source.csv create mode 100644 test/totag_source2.csv create mode 100644 test/untagged_source.csv diff --git a/.gitignore b/.gitignore index 8db6aabd..8592b634 100644 --- a/.gitignore +++ b/.gitignore @@ -114,4 +114,7 @@ weights/*.h5 models/*.h5 # csv files -*.csv +tag/*.csv + +# TF exported graph files +.pb diff --git a/cli/src/operations.py b/cli/src/operations.py index a134d6c8..d47443a7 100644 --- a/cli/src/operations.py +++ b/cli/src/operations.py @@ -80,6 +80,7 @@ def download(config, num_images, strategy=None): file_tree = pathlib.Path(os.path.expanduser(config.get("tagging_location"))) if file_tree.exists(): print("Removing existing tag data directory: " + str(file_tree)) + shutil.rmtree(str(file_tree), ignore_errors=True) data_dir = pathlib.Path(file_tree / "data") @@ -93,6 +94,7 @@ def download(config, num_images, strategy=None): return images_to_download + def download_images(image_dir, json_resp): print("Downloading files to " + str(image_dir)) diff --git a/config.ini b/config.ini index 4c6a0ef0..3c45ee01 100644 --- a/config.ini +++ b/config.ini @@ -5,7 +5,13 @@ image_container_name=activelearningimages label_container_name=activelearninglabels # IMAGE INFORMATION user_folders=True -classes=knots,date +classes=knots,defect +# Provide preferred distribution of images-review ratio. +# Last value corresponds to images were no object were detected. +# In the example below: 60% of images that use will be reviewing have at least one bbox with objct class1 (knot), +# 30% images that have bboxes for class (defects) +# and 10% of images get class "NULL" -- were neither knots nor defects were detected by the model +ideal_class_balance=0.6,0.3,0.1 filetype=*.png # TAGGING MACHINE tagging_location=C:\Users\t-yapand\Desktop\NewTag diff --git a/config_description.md b/config_description.md index 4112da73..030c4fd4 100644 --- a/config_description.md +++ b/config_description.md @@ -16,6 +16,15 @@ Certain information about the images is required before the tagging and training This determines whether or not the images in blob storage are within separate folders (e.g. by date or by weather condition). Set to True if they are, False if not. - classes: This is a comma separated list of all classes that are being tagged. Please ensure that there are no spaces in the list and only commas are used to separate names. +- ideal_class_balance +This is a comma separated list of requested classes distribution in images being reviewed by human expert. +Example (for 2-class scenario): +`ideal_class_balance=0.6,0.3,0.1` +In this example: + 60% of images that use will be reviewing will have at least one bbox with object class1, + 30% images that have bboxes for class (defects), + 10% of images get class "NULL" -- were neither knots nor defects were detected by the model. + - filetype: This is the type of image file used. The format is a glob pattern, so *.jpg for a .jpg file or *.png for a .png file. Note that only JPEG or PNG filetypes can be used with tensorflow. ## Tagging Machine diff --git a/tag/download_vott_json.py b/tag/download_vott_json.py index 77cbf164..77ec18bd 100644 --- a/tag/download_vott_json.py +++ b/tag/download_vott_json.py @@ -8,6 +8,9 @@ import random import colorsys import numpy as np +from io import StringIO +from math import isclose + CONFIDENCE_LOCATION = -1 TAG_CONFIDENCE_LOCATION = -2 @@ -29,6 +32,7 @@ def make_vott_output(all_predictions, output_location, user_folders, image_loc, output_location = Path(output_location)/folder_name else: output_location = Path(output_location)/"Images" + output_location.mkdir(parents=True, exist_ok=True) using_blob_storage = blob_credentials is not None if using_blob_storage: @@ -106,35 +110,95 @@ def make_vott_output(all_predictions, output_location, user_folders, image_loc, dirjson["visitedFrames"] = list(range(len(all_predictions))) dirjson["tag_colors"] = tag_colors with open(str(output_location)+".json","w") as json_out: - json.dump(dirjson, json_out) + json.dump(dirjson, json_out, sort_keys = True) + + +def select_rows(arr_image_data, num_rows, is_largest): + if is_largest: + top = nlargest(num_rows, arr_image_data, + key=lambda x: float(x[0][CONFIDENCE_LOCATION])) + else: + top = nsmallest(num_rows, arr_image_data, + key=lambda x: float(x[0][CONFIDENCE_LOCATION])) + + return top + +def prepare_per_class_dict(all_files_per_folder, class_balances_cnt, tag_names): + #result = {} + result = defaultdict(list) + for k, v in all_files_per_folder.items(): + v_arr = np.array(v) + classes = v_arr[:, TAG_LOCATION] + for i in range(class_balances_cnt): + class_i = tag_names[i] + if class_i in classes: + result[class_i].append(v) + + return result + + +def parse_class_balance_setting(config_value, expected_cnt): + print("Ideal class balance (from config):", config_value) + if config_value is None: + return None + arr_np = np.genfromtxt(StringIO(config_value), dtype=float, delimiter=',', loose=True) + # check f there were non valid numbers + if np.isnan(arr_np.any()): + print("Found NaNs in ideal balance settings:", config_value) + return None + else: + if (arr_np.size != expected_cnt): + print("Size of ideal balance settings {0} is {1}. Expected {2}".format(arr_np.size, arr_np, expected_cnt)) + return None + + s = np.sum(arr_np) + if isclose(s, 1, abs_tol=0.01): + return arr_np + else: + print("Sum of balance settings {0} should add up to 1: {1}".format(config_value, s) ) + + +def get_top_rows(file_location, num_rows, user_folders, pick_max, tag_names, config_class_balance): + #Add class for background + if "NULL" not in tag_names: + tag_names = tag_names + ["NULL"] + ideal_class_balance = parse_class_balance_setting(config_class_balance, len(tag_names)) -def get_top_rows(file_location, num_rows, user_folders, pick_max): with (file_location/"totag.csv").open(mode='r') as file: reader = csv.reader(file) header = next(reader) csv_list = list(reader) - if user_folders: - all_files = defaultdict(lambda: defaultdict(list)) - for row in csv_list: - all_files[row[FOLDER_LOCATION]][row[0]].append(row) - all_lists = [] - if pick_max: - for folder_name in all_files: - all_lists.append(nlargest(num_rows, all_files[folder_name].values(), key=lambda x:float(x[0][CONFIDENCE_LOCATION]))) - top_rows = max(all_lists,key=lambda x:sum(float(row[0][CONFIDENCE_LOCATION]) for row in x)) - else: - for folder_name in all_files: - all_lists.append(nsmallest(num_rows, all_files[folder_name].values(), key=lambda x:float(x[0][CONFIDENCE_LOCATION]))) - top_rows = min(all_lists,key=lambda x:sum(float(row[0][CONFIDENCE_LOCATION]) for row in x)) - else: - all_files = defaultdict(list) - for row in csv_list: - all_files[row[0]].append(row) - if pick_max: - top_rows = nlargest(num_rows, all_files.values(), key=lambda x:float(x[0][CONFIDENCE_LOCATION])) + + all_files = defaultdict(lambda: defaultdict(list)) + for row in csv_list: + all_files[row[FOLDER_LOCATION]][row[0]].append(row) + all_lists = [] + class_balances_cnt = 1 + if ideal_class_balance is not None: + class_balances_cnt = len(ideal_class_balance) + + + for folder_name in all_files: + if ideal_class_balance is not None: + all_files_per_class = prepare_per_class_dict(all_files[folder_name], class_balances_cnt, tag_names) + for i in range(class_balances_cnt): + num_rows_i = round(num_rows * float(ideal_class_balance[i])) + class_i = tag_names[i] + top = select_rows(all_files_per_class[class_i], num_rows_i, is_largest = pick_max) + + # drop values we selected from the dict + # the same image may have object from diff classes + for j in range(class_balances_cnt): + class_j = tag_names[j] + all_files_per_class[class_j] = [v for v in all_files_per_class[class_j] + if v not in top] + all_lists = all_lists + top else: - top_rows = nsmallest(num_rows, all_files.values(), key=lambda x:float(x[0][CONFIDENCE_LOCATION])) - tagging_files = {row[0][0] for row in top_rows} + top = select_rows(all_files[folder_name].values(), num_rows, is_largest = pick_max) + + all_lists = all_lists + top + + tagging_files = {row[0][0] for row in all_lists } file_exists = (file_location/"tagging.csv").is_file() with (file_location/"totag.csv").open(mode='w', newline='') as untagged, (file_location/"tagging.csv").open(mode='a', newline='') as tagging: untagged_writer, tagging_writer = csv.writer(untagged), csv.writer(tagging) @@ -143,15 +207,19 @@ def get_top_rows(file_location, num_rows, user_folders, pick_max): tagging_writer.writerow(header) for row in csv_list: (tagging_writer if row[0] in tagging_files else untagged_writer).writerow(row) - return top_rows + return all_lists -def create_vott_json(file_location, num_rows, user_folders, pick_max, image_loc, output_location, blob_credentials=None, tag_names = ["stamp"], max_tags_per_pixel=None): - all_files = get_top_rows(file_location, num_rows, user_folders, pick_max) +def create_vott_json(file_location, num_rows, user_folders, pick_max, image_loc, output_location, blob_credentials=None, + tag_names = ["stamp"], max_tags_per_pixel=None, config_class_balance=None, colors = None): + all_rows = get_top_rows(file_location, num_rows, user_folders, pick_max, tag_names, config_class_balance) # The tag_colors list generates random colors for each tag. To ensure that these colors stand out / are easy to see on a picture, the colors are generated # in the hls format, with the random numbers biased towards a high luminosity (>=.8) and saturation (>=.75). - make_vott_output(all_files, output_location, user_folders, image_loc, blob_credentials=blob_credentials, tag_names=tag_names, - tag_colors=['#%02x%02x%02x' % (int(256*r), int(256*g), int(256*b)) for - r,g,b in [colorsys.hls_to_rgb(random.random(),0.8 + random.random()/5.0, 0.75 + random.random()/4.0) for _ in tag_names]], max_tags_per_pixel=max_tags_per_pixel) + if colors is None: + colors = ['#%02x%02x%02x' % (int(256*r), int(256*g), int(256*b)) for + r,g,b in [colorsys.hls_to_rgb(random.random(),0.8 + random.random()/5.0, 0.75 + random.random()/4.0) for _ in tag_names]] + + make_vott_output(all_rows, output_location, user_folders, image_loc, blob_credentials=blob_credentials, + tag_names=tag_names, tag_colors=colors, max_tags_per_pixel=max_tags_per_pixel) if __name__ == "__main__": #create_vott_json(r"C:\Users\t-yapand\Desktop\GAUCC1_1533070087147.csv",20, True, r"C:\Users\t-yapand\Desktop\GAUCC", r"C:\Users\t-yapand\Desktop\Output\GAUCC") @@ -172,15 +240,20 @@ def create_vott_json(file_location, num_rows, user_folders, pick_max, image_loc, container_name = config_file["label_container_name"] shutil.rmtree(config_file["tagging_location"], ignore_errors=True) csv_file_loc = Path(config_file["tagging_location"]) + #csv_file_loc = #Path("test_totag.csv") csv_file_loc.mkdir(parents=True, exist_ok=True) file_date = [(blob.name, blob.properties.last_modified) for blob in block_blob_service.list_blobs(container_name) if re.match(r'totag_(.*).csv', blob.name)] block_blob_service.get_blob_to_path(container_name, max(file_date, key=lambda x:x[1])[0], str(csv_file_loc/"totag.csv")) container_name = config_file["image_container_name"] file_date = [(blob.name, blob.properties.last_modified) for blob in block_blob_service.list_blobs(container_name) if re.match(r'tagging_(.*).csv', blob.name)] + ideal_class_balance = config_file["ideal_class_balance"].split(",") if file_date: block_blob_service.get_blob_to_path(container_name, max(file_date, key=lambda x:x[1])[0], str(csv_file_loc/"tagging.csv")) - create_vott_json(csv_file_loc, int(sys.argv[1]), config_file["user_folders"]=="True", config_file["pick_max"]=="True", "", config_file["tagging_location"], - blob_credentials=(block_blob_service, container_name), tag_names=config_file["classes"].split(","), max_tags_per_pixel=config_file.get("max_tags_per_pixel",None)) + create_vott_json(csv_file_loc, int(sys.argv[1]), config_file["user_folders"]=="True", config_file["pick_max"]=="True", "", + config_file["tagging_location"], blob_credentials=(block_blob_service, container_name), + tag_names=config_file["classes"].split(","), + max_tags_per_pixel=config_file.get("max_tags_per_pixel"), + config_class_balance =config_file.get("ideal_class_balance")) container_name = config_file["label_container_name"] block_blob_service.create_blob_from_path(container_name, "{}_{}.{}".format("tagging",int(time.time() * 1000),"csv"), str(csv_file_loc/"tagging.csv")) block_blob_service.create_blob_from_path(container_name, "{}_{}.{}".format("totag",int(time.time() * 1000),"csv"), str(csv_file_loc/"totag.csv")) diff --git a/test/Images_source.json b/test/Images_source.json new file mode 100644 index 00000000..c4fdc5ab --- /dev/null +++ b/test/Images_source.json @@ -0,0 +1 @@ +{"framerate": "1", "frames": {"0": [{"height": 512.0, "id": 1, "name": 1, "tags": ["knot"], "type": "Rectangle", "width": 488.0, "x1": 144, "x2": 174, "y1": 205, "y2": 254}, {"height": 512.0, "id": 2, "name": 2, "tags": ["knot"], "type": "Rectangle", "width": 488.0, "x1": 142, "x2": 183, "y1": 213, "y2": 248}, {"height": 512.0, "id": 3, "name": 3, "tags": ["knot"], "type": "Rectangle", "width": 488.0, "x1": 337, "x2": 361, "y1": 172, "y2": 202}], "1": [{"height": 512.0, "id": 1, "name": 1, "tags": ["knot"], "type": "Rectangle", "width": 488.0, "x1": 293, "x2": 330, "y1": 188, "y2": 223}, {"height": 512.0, "id": 2, "name": 2, "tags": ["knot"], "type": "Rectangle", "width": 488.0, "x1": 265, "x2": 293, "y1": 401, "y2": 438}], "2": [{"height": 512.0, "id": 1, "name": 1, "tags": ["knot"], "type": "Rectangle", "width": 488.0, "x1": 317, "x2": 348, "y1": 440, "y2": 494}, {"height": 512.0, "id": 2, "name": 2, "tags": ["knot"], "type": "Rectangle", "width": 488.0, "x1": 37, "x2": 55, "y1": 170, "y2": 189}], "3": [{"height": 512.0, "id": 1, "name": 1, "tags": ["knot"], "type": "Rectangle", "width": 488.0, "x1": 292, "x2": 313, "y1": 134, "y2": 164}, {"height": 512.0, "id": 2, "name": 2, "tags": ["knot"], "type": "Rectangle", "width": 488.0, "x1": 354, "x2": 377, "y1": 319, "y2": 342}, {"height": 512.0, "id": 3, "name": 3, "tags": ["knot"], "type": "Rectangle", "width": 488.0, "x1": 60, "x2": 92, "y1": 392, "y2": 423}]}, "inputTags": "knot,defect", "scd": false, "suggestiontype": "track", "tag_colors": ["#e9f1fe", "#f3e9ff"], "visitedFrames": [0, 1, 2, 3]} \ No newline at end of file diff --git a/test/all_predictions.npy b/test/all_predictions.npy new file mode 100644 index 0000000000000000000000000000000000000000..0f1df59f48a3b98da92001b042606ec2d1c0e671 GIT binary patch literal 1335 zcmbu7*;5li5XKWkgm~Y##xp@oI$Rn5{xS$sm!Z=h+)!cf!ERu2aZ`S@p=l;z@!p@rHCkH zGHmo8!<3z%XvfGl{ne!!iV+g+`ts zL|T|3FO*Oy`w9%4AUl*VLP2(6siA_Co&I(~2pvyR8X{F@4?Ad-N zkKWX@Lt+Hm%VR?_X#uJ??hSaw8aM*;bAzuJxx*yPCY*I`V7EWatj~( z0JTBZIg3v`fOEx}mH4#R$OJX=ENcYlb8&^wGt3Jw1IBOh6SrE4cK(XnDIAAUUH^1zDl8jCPaY2dYWNqG^7H2ow@~5YZ~)6 z#F$Op(uOhe0pDhbcRpVj4oYeay&xH*3~At;50INq8)5Oizd=)C4B7P|ilPKRE>`~n Dr>!C! literal 0 HcmV?d00001 diff --git a/test/board_images_png/st1026.png b/test/board_images_png/st1026.png new file mode 100644 index 0000000000000000000000000000000000000000..a762f1b5ed9fe40f21dc252d14eb0190d039046a GIT binary patch literal 358051 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%0AKBj3~}CStL%D@3X( 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Ð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¬~ZU_@&HnqnEMmv*@y=04`2?Z%Rg+=Kf@54SvK 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
Hq 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%0Ar#LWx_sTS&rgR{LptD$ z^SC*{)XT&H`d>^r$#yF`OLEn1E>dUc3pQ zBM%+l&pqPxw&Ct#v4*zYM|y<*6<(g{`sNBrIBZ^m0$B((C^twW7Hcj7p|2B&W=gUQ z6}AIXXp%Ot7^d1H1PTPl%P#?)$}jA|lgO>{4F@RmW2rpxZh@5xv^Ea+PGL2(+G>L3 zUS4Q4RhF$a0nup*$>rFA16wc|3DayOPrbWHNmk5?+dSrt!AW*SC}i$O4jgsShiEE5 z;1fiS#1s*usuo=1+UTCdc=Z2*m?gAzQn_ytRf!95CwP1rU2IkC$xq4Q8!W7qjv8OhFEH@!z` zuO4+84kD0BXLb8ccmg^mPIm5dl*iK|>U_Xy%!;XR!#8~Fd?aUB{512EQ+AMA0kVl) zB+QAo+@%|B3Rf=Hg!M$m7#{#A(;escRZ2*8+6RUB#EvfRQ4BA&4W81Yb!rcx>6-W! zjzr4&+6q$%Lha9T1?e~q!6%}$pSsKIt}phr!e|ZW#(3^NDj^u98~Q1g@>L( zNYRSzPJa4XK5URpe*Q`JXZ`&2=|f%4FN2xP^zIsrXKAtNMI^dwk}vC#hN??<|jdztb)`s!V2Rpaa^G<$K0k4 zFMAon|AU;g!`{lVvf5r%!u*83QpUiglmt+jXeY*twQFmSZo6y38m63d9>MF=B)Uv+ z?Aq4K9T154d5h5OZeFD$WBryJXX<#V&ZJW#ia%udIzkt@~bzXO&k z?jGdNf4=*8kH>HOuix;RTGHoeIIz|psCq%{y0T64T3m%}xVu6Xx7}wGq|P`;yyE1a z(PRHc@*+%|dW?wDk4gqQ3iT8hx|&u`E4dSOJw~QpNx4?YE}F=ryrKqSMfrscm>wM( z>&_@25py?M&s!X*Sr1pvj6%Eo_ByYl&)-g z`bp@?O8Fy3@~G)Re|M29@N&a$5{{EWM~^u07Px+UT!~mA354gi3)v9hBK{(=_1Hip zS$iw|&^&hj)1w2L6r`<2+F_P~tsb7Fp_5Y)T1QVck2;1WCV;`W4S)<)+5jM@bk=+A zB0E6GEHq+s2(imQrsFh$iq~4y*$ufqQBzH9(r}DlT`WG*oA5mXX+Y%z+_2uI3n^Oq zc1%g6pIqv^zfIG~i|5OckU#N3?Glsx_~|1pJr!Frx*c=#6or)*ZjPB#RSqs~nw4q9 zM)5)OK13#R9ETM8>@p-kYFp7im(W6*nI58S#t3UDaXII~lk(221zrKR4Fc$%UZ|da zVl0bDtmD?BQK(?s038cgE}Pt6_4bPATk47PJ2^pov9r4Bi0nkl)*u*dZ^2^?z0&iX zS{AOdmc**bd#`g}OLR`Nb9#ae&uchHlAdxlYUpo!(^`I}`m(4=z{&#s4qA)rUl43~ zi}NqRX=6p{iUA0z(QW>%<|p*DkIrpu)#RKoeuP+|CH|cnR{&7?@$<(3J&pu4{F8~| zSZNl!5P_h3)pT^VcEI9qVv=4N)9)@oN+*Gtd%-8C1X|#*Vf=(!>^e1Xh($a~=t{PUQzXy?3P*wTz`J;oo$X#Z@xdJK(hT za1PT-Pe$lTQ*X2LukwsF*{yRKDqZWbUbWJ@T=K1?@&~R{C~Zs^U5|6$OH-IIIB%p1 z`SH_7@SaLg2c$bvXBB)?g)04;R4dF}^Yl@=YE2ElQ07LKa4Ii$rEW+isg*dpV-4G_ ztQzSRQr2@K)@x}gAB3EH(K{XBAc~i|caXF-272!Qw35$RM0u6tdx>mIN-zy-O*H0? zLdy>0pvNi6*%OI)nZC;5S}7TJ>x`UIohEw}&eQTHZ6s}b4_toY1s=o&8rMfP&aTm# z(;AHE1<^lza=ePAvRS!%|CPkcf;_Q3y0VPlNYx7Y@$*MNSWXApN)saUNu5=Z#zQ;r zyo~8l@mfH5?*q$|2u`k6h+RV=JIPODC!&ES^gFF^ShYP*irZ98AFHBeuhJ??)pW~{_&C>E~( zrd8Ide})d(iGq6I=9sI>5n)ImlH+~8(B7nZwl=hl^ zJ$=;+=16dBs>)oC=@QT#w-?=ae?^*1s5pR%LSZi$SgV#>Y?@|>wsx{;1}aeR8h8ltAs%a7q-U1g`UI!K2r$xtQ~E9ZlY(Mv46j6Dg~!KvOK zwQ&k`p@^J>I%y=A(Nb8^O1Y_^%$@^S9a@{c7;0FLp`LuTG(@UNTqs2wby&>`=l~r$$Kyo99hf0Z`H!Dfp~@e{f}C+Z@r_MLAoUW z@}zz=Xh&=(mrl_YI~Tlbxls_<3_!~Y9rjRJXH-h^IbKe@N5QG#y3;LaUa7nbCKK%N ziWQeRXz6NN{niQWAMWc03!3Z5R-gbt64UX))3XvktR^;@@$D(=h6OC0oGfs{OZJ(QhvpeB+q7$ z6sm-=D%2dyZdw;{iqqx*&4Y?+(vto?0PK(tiXQ<$6}pWe)VXAUCk-3Dsm6d{VZ-$( zLr3+zq`+|@!WJ_hnhH_d1ZY9-fm9GDlPe*U}o^=uivD1sY%dkGa}TF@bgd9 z{^zZHKGFGzbA+5EQq<;41HYlJPL@;K8pRNrBQtBqb#)UyU63;A1tKfic9X4!0IhIU z_{u**D1pXQ7a(+Bdl@znzV;F%wMt-#wMr)<YPX;f@)qzpSM~`Z-s&hYn{a|caK4sCgERzZNqJEwl7UkSu7E+nAKRx*{k|!11lDg zISn+B?Y~#Z9pxFI3B?% zeP@o3J@V8PnHo8d9*mj-72&f~8Rwu;L^ctd98{xYR%4Y@9?IuZa(|7B^Cb8|=IAZX zK7vmLTfsrK0HQ-)A}Zr0fqg3>vd+h1z;lv6WyvZf+_>YG=nPIc&ljC{(HQ*vjj2zB zPK|_Z)kdm?!-U=?73d5cuCB=1D9Mb0o-3Fb+iOQUvajm~nFJ`5@ejk|E&wlZ5VMSq zcp}ee0AUxt2bC1ok|`QAMIK*UYs8!KV@ja!C}>i8-8}1eY+gdSB(ad*r6mK-To#s0 zrCs0BFN+G=^<7GXAal@)l$id*a*-BkMYl3-0j?L_>`b!5gjAG{+2YvC^10mK-+8x6 zLe;|%C1y8+k~G1($xkZ-(+iVv1+Lbw(Qv)C#>+~fYDFSog?)v`m(+7+fmJ)KD0 zZd@Q_R)_g&tt?|po=_msiA>1M6FmuYG+2)XEng`C%giZ4t&EH$0YbYHM!urShUh1y zX0j70h2s&0ftJ(8i=%U7o%_Lgl~lrej>}aU>(#N2khK&oob?k@Xl}(q-H0s1`6q1!zOI7H zhL;`tzFeWe40_HyPV^IkKibIn19fx_Tw0ozbz{|LNzG9bO-74k-=n+$VG@6ke7VEj zbtD|2M_uo)`fYZh`iIzX_STovtg+{=QBWR3Yd2msVbla)JmfOv-pgp!#2fLD+uA*0 zK6dDo<=EaJljOQ!%Cjv7EWp99`n}Hoi(<3zA75(K&eSSB$fSV8CF0*kkO@s$=9kTZ zRI@x-kQfA&@RU|QD6v-aCet98X~b9hyK_?-)dJCGBX$bt1;~CFN)1 z$K-%xyc~5QTZ8dXjhT5fN@)26KEY+Wpb5tiu(e7&rcTEBAyIsxnix`PLX68U znQU+ogfwupxx2`I!^_Pf^P>H9g=0(?s^X|uA4O;IYQ==B@A*>-$w7`Q|B*sWG*j16 z!%qn)+H%otl}cA!_RtgCcBVAQVd^@bi6rw4Nr=uCVhLRJ`HE#lU=qdjfKWeCzJTP= z($m^4SV7P=F((1Cy)=cf(mbkwJU0n}DxdRy^0ax>9a6F6u@mT`pR~NH7C5%>kZyGe zW>;4<$-j587?EQ&5z!lEFHMclqLy5Zr`Dbhe47ZM`+js^{Y0qnf=-Uu?I&rAvNgGTB`zWTOuIwFIE_TQb+M>3-AN!!iQmLwGSj|*?Ht2*N zU13uCA6~Y_hq|cVhR#Y@big-&wCRc=nNlk4=cmi5_n(7eD{7{EO^jDPkJ>Qxhel09 zO^?e{IU?$sa=I5sJD#b0`TVik5Z_za2wi_7SIbQzkXcBxb?G{{Er!bV+w%5)g|Thh zKH@rUALN|2)?GoM-iFi08v>G$N(X9Hb9Ge#zM+@N;dR3%c)m?ax#POhLak~|>>Rfi{{?<}Vu28rV<_`5KTOg^MoK3UwfXCLf}eTixVKCx zhKQC9@g{4LCePpK9q68ReW_%Ud}X1?Gs(rb>)oL+zx!Wd@Nx zU`i=~oj`&FG%mL3!Ya6alb>ukV7*qMrw!bw$|>cWKrj~Gn{o~*)(yLxU{_#rxCF~~ zSB$j^gH_tw)FNu2aEgxXE{^x~U||z&rB6$Q#}ULpnPj;(&Yt);&p^%*t&AJ~;1!0oflLea zA$&Vi$L|><#Xe)(CD%Ee(qmi=Zx_&ocANqk*Q~x0R8Wcn5fLE|sUlEL7VQnw*=rqY zYOWEL0|DmirXz4mpfzqGSVc4oAgjwBn~-?-wgiU7=r!WFZ>~w!_GL7}6XII8dXxxr z!OLXWC><-u>F{wN_Y*B?^E{iXeVMsiRI5RrW{8vd<|2#lm7QGTLX|1aiSLxOGMRlYrM3f(};I6y+(_mJr?``QV zPg*tvg&T^B1@*gJ^*sbw;GSscbnSqP41r7RiNfZT(-43>35XxAq3=>gLHJ#_5lV{$ z7e>PX1>|6>Sd*~iR7f(ndqYNhVlcrxdql4>X!;Mc2`@ z3ZQ@FnlN-h{=Wiqp@Ngj6>w16b=q14h*;RMyUqpa%72J*r6V%dw*3VYvbQ12<vj$No;g zO~1Nl&cq{DzHnpPxSL(C8bhQ!8)9@B@0FYFnYX41SyqBeNmXVy2vLCL#-wEH0xZiX z(IvqTVkAB-Ca0irFt;Rlf-oh*dN>Lkxb3T$Lt9&GB?lD4McI+Du{t8ypl5SZO!?p{ z5Xg(VNpz_5)AX(wKo(*H$A3l{3L4w_#mr zTGQ(9J3idYpFZQ|1ur*Tx3`XhJK#z9Fs?meQG}@7!D9cD2w{DVid#&UN=6lcN2^XY zNl%6U36vKKG)AnpW@Gd8r?JGnK-l)ggcf*_fwwZ){!C;?Ik*C4O>@v*@j96hH8dF| zA#R9QNS$By`W0(h$ZIQ12x1+q>zycc-vN=tV{74FI8_`?C7@nuLGz=bPiBz1Da$K$ zu*U9!xZT;O^^fE8| ziq{xe>EMuh8jj>Y;hXkKN91a;k6pcdkRXo2yA~#tiBX9Q0w_C#PFH2-G2Zb`WHqAz zxc{(yd=S}HA#=~ENUW`{I-eBV7ae1z|BKtElN_8Uc2wLhN{Uh#?%|Uz!G^8ygL+Px z9gsC~lNu(DVwwL;N9bxQX!f;$h{jXzLBoKM?S32rR0 z+$|tq001BWNkl+Mzb*vnM3+`{yDnD==!q_+0Y^~JQQ z%6gxU{KmVMXj*zbm>bS)ogzCaY8K3r0X!y8evv2sR1Vm4^pjjloaouoB9+?nm@0HK zKs&z73j@IL(ch!>Tuh{nRd{lS`^P~G2TNr(b{wNMXHFXHiM#~3Lt8VGj|@~nv95?0 zCfnv%&Q8>mQqtA=;i6A3`ncmVCy@A5mLuf(7OklX+eA{H+Z&+gi+lIxqRiW+vqi~^V5>&&D+OUp~%XkVc$+yT29zkSU1c*K^CY| z_rqcPzGtIMLO&&8JX>}$0BbI>KZB>>bM$5e=@^s)tHj*mECjU%9Yka@ ztJ2n{zzU_}AiG@3v1+E7l%ne&KN{hKCM!aRMF}RwZ^mLZx2s$~;P#}qo5)3MMbOb; z0GDbKel^Ebk%*KiEXY$QxN(4*dYE5wn}TnBZF4(M&X5TyQ#1{-YARi+aBfUDkhax6 z8vJQUt<|h}s>^NI;m`B7S~?A0d@7}cp|xCw>Pj2iSQRJHs)e(-JazW~G3|y_7@AKe^TvY_n=&`C%oWhKc+D&P6v6LnXybd$nwpO{ssX{}!`&S#F&V8fH=@IQSs&Ft{dKO7=T{~Y z{|<2R{g~BszZU|VvZ6RX@4{H!Ulr{n z=AhP%R&zz-qKF9Psew;X?>v%KXOd7ZC=l-MUyg}39?UVPc5T!$W@WaaN|0S|K%U3FgSXGNBYwMBF?QwN)Me#j6#a z6Qjp+z#|Q?o5V#@v%PRPPA4!wxdd~~%o*V_vmB41kCxqbrm;(9Qr80);xtuB#NzHE z_rUiXc3_J$IhPIlj-B|SwSs^zQ9rb&EFaANQQQZ-+{qS*G@%NoNNj?;4XSwdZnmpH za?h&@MC$WN6}YbO`Ve&B;fA)V2}j6h}=~|oyyHX<8U~a7BO1@31))@kY1k9o}l@4}_mb@HlX z`=u{WIqWC89%r;^6*Sx1U6#~&8v2NBG$1zJH^*Godm+p(y6#GVc4R?A-ZQZK#D&xF zV)A>7=NXdkgy$b{ets`d89v>neRf)}MdVujy;lKofPbp~+TT87~tyX z5{`Ow$79c*2U&fO{BMc(Mc7X8{U}`Zns7dS^F;kV8rzJ};4bocio9FxrH`E#tF$R>4z}&CWm^QySPi zOMHq_ONyN-xX8+VeOE=csGecE$+YFA^Y3GIF*DxMbw{mzWWwEM%3XDFh;KW0SNycy zlVflM)vCO<#ux0c(`>KJ&8|aV0Ni~qh#he|lAE?e zvDoI;uFq|oo-XA~7@4OXws1B1nIQRLvG+`l8vo9LJ;Wd_R6PL|XTe7#`Y`A`3eEB%lNP9qS%-?=}ys#MW*!^{2 z+m(B?uFdzAnC(hzIFG>WOSbelIz+q3BgRJrUbgypC*NLlTMy_()pHW@ZiRY*6Yu)F zL1VLycg%lk=XXiRB0S4;1!}GOdDHqEoZr^?mK%SV=LIGU8?<(1SGLW$1NggwbE*MP zQQDPyTg6cpUgv*Ly31kzTL}wn=(&k$YhOw68sr-aoWOq_u5vbp=jTrLOPtOs`w8@z zpJ2sP>o3Q-HgGn|c9#^vWqM?aT+bsk|ExU`M+>%?lbx|@jWE&NpwyI_;css&2_Ryb zVp*nNo)&VxT;*w3r&qL>^HI^5^u{Ki5`mkhulkft3s)aueslw~)?!PaDMp&B6`J@t zCICWaznM>if1*I!KmhX<=SiSEX$ub&Z;C&g(DpL6p4YCccDv32#(afrfDsE#T649K zj+>|^Tig2wZr}Y_$4*<0J~Zx7Q8XMCYt`I#^>R}2lw!*V+at9{H1#$eB zKP|Vx{0Ck6b5Og(BL7G@)nfl}NAEi6pX3>wk?XC5{-nl#9x-gx^oe}^5QBE-__mpm z@bWC`RA$)(eN_vvnX8Ml(-ub+u*A z0OUHO9^1D?xMh(z1$9=-{Bv{Z^M!D3I(S2?*_(>pf zbzb>=OO7{oXq$b>xdRo)90$ld^>T^v(g(8X4xX)TZ{+2&sSR)id_7}v)%JzJE9{mn zV?+KU6KzcXf=~0^YQgu!U$Kk^c5^tbajPb66pLuj6kjr&wiP52Vb8m<_9CKvm-nqa z@L#JPc53BRq}!fjQ*ehHw|S0WWBw72p`h5)_uL`2!({mxTdYo#PD6{5aE)oT>Wh}P z__S?obMC@P64#_1p{@krsGUwJ-?n1kJ4bzXrd8YCxoY^4^nv}t)~>Frq^t14YQBZj zW(Yhd$c|R?w8%7{v!gA4QfpJi3qt2-0QW4nNA+UzYU0klM%mGR)4*p#mJ3`qS9|Wn zE1Dul8G6xP>fY`?b3Yd+kFt#|5%Dfh13Hd~95c6@Sm#Ep3uxzIOO@AV@k%wvSpv5# zwNx>kbJ-n!1k4 zTg>12S!ga4-C*2$c2`BNaVDORaU8-0JD);q9`xa{$Pw_{&~n!%vi&jDcWC4b!P|A| z&kg4b$lP97h;0L}tkkaWepY|W*#EexZIO{JD=a9Tj$N+V?4*hld3lX;%aJcjToLn! z;Vu3@g!U@ioOZ(M^WH=4XT^Pl)%rm@7I~w!+iEYaeQc3C;lEkPcPjO|l0Dj|Nl)0Z z>Eu_@AE@trNFV$Q{u$+M~e!tQ-2<~Yw|Jq^5?5MSCr;| zcuD8?Fi(1KxkQX_%io(y?&5b$c!~eP^d7@CXYK+|^EY~P!?(xoKG>LL z2I{yyyPq+P^zo#Q_C;nJilhjd%PM)fRN zU*un)wfvem-zhq0Xl}bd2}k%d+WUQSyVjqo^|#|7G_-rAn$G;Dd{SV?-Ul+h7=m1Bx|Uae zCag;jpLfBWbS^#TL!1V&7XPE+Kce*d=lk%xp8p~4_cZ&pR(XrSvDA^6izWCSw`N22 zccOQqi(h0t{tR$c+-=H=@pgoJs%^35^^KP2?Y`wy3W+kUilvKa7%<^d>hkJNxH0@Cap5C_4t7zxOlxN1j-}Bm6lOn(>P8h=ne3LgjM? zcw?4-LM`q;m#X7H{p;{d^t0z+{G#mADVq7Of8$LMzH~tDMJ#KDJsod(tLCogvhdJ>=!*$C zq2#K1Vg+)l_nY`De`WoOL%}6+TgCZVpj}&zcJ3J5F&5PJX{M>vqBww=()+sZH~IKL zJnxF!rk#*tq1LGklXwUtPggcP(8K<&LHgG`y^Hw-AhM%a`uJRJH%g|y`+G0vTD5(ZPD4DKuj#JTx(;__Uz z6i0o3Rz=f^SJKuce(Lni}rRxwrRp)#d&*O$p-kmn_f2XDD%?gYzEh) zrtFH!A{E%pLvlv{5QLP4FJIjJb)G=Xm!B*cwoeYW|E)D{cxxri%vfk5Uw10n8!brG zim^72wi4VBecyr8@2BHHM3CF-A!DzjSF-aEv)2+$hyykD+XUt=*l{3M>A4b&76>q3 z5yL}r+b_EeT(V$gMeN~lN)#@Az3z87!*DkKn>x7zyGqR^N^JA&!ig8R;XZ7CuuVQG z^fGWG+4N&IzaO@ZT5#h*-T!bn#O*Nk0Q%zR^!v(4Um4Uj=P9_CUAE*5E|>7f^*dRi zU6H3BnPHa)W4R?v7>F982!p`HhIvCF(E7psS~hqvQ1%v}h!KFur2&wp3- zvn#M_neDsryP$oScNH%5ngwZ%Kel*3ls@qLuKyR9Xnr0ux4;*4gkZoga_{B%l<+fx zr~JSs!;7#*djq0Z-t_5$`7W7zaomp3xiojOn?eMa7l{vj@dm36_v^mE#VD>3BODa{ z8hK9GH(fc$?cAUFbA6zBrT?-SX*=p^!b@$@%qOf>|2XjQak<#3p6BHHBQtoZC2f^DC+V7IMqNw-mZ7c8(37X*9Sd)aR`TlGsc zCrFRTZ(yx;EhK6$_}n3TB_$h>hc^w6f4MJ#(?zW(8rOWfvk(o3ERu1cHUR{mQzb3q zU=L&GHE$rcOnEX)yHGSg?0c^2ZVgWyxQW3m=Q{+BUfD6`qUJMvpAgtycYv8hN%*%r z06Yxfem(ZI4sNk(X%+L0S}|wf#eViMDy&1 zgC^&Xdt#qu3!0dl{d-SYp5Hkk4p^usCH_nRlV`FG9Gx(nF5J)0*Twj=dr(748+;aKde z#HrMui0tyy;k#z<&KXn%uE-J12csH+QrGG!bYNqqq*2mL7d}z)~ctN@AMsJ zjAIk??5)-uu(72_2SJwBu5W5!H>DeEz5IT z$lDIvb_=D4%FmR=v6W{^ZKE{~4cth3rOpM^DFVl- zfDLYEVz;5&g7JJE(lNtk()=h7JK$S^+9G}B;U6)()a)npJaF|h^32sZ;qx8Zr&yg< zffFKMfw`vFb-itl-zZPuImf-=IK|K1*jl0WFS#g-t6HvxNUi_UYKOM$A?cK-m%C0E zFT3I9L*KP9v4MEXA?#&^=05Wv^gd zBp;G4GVHtMcbm4Y{m{WLAjh(k?PazfR6Y0Ip&Z+5U7H;Vi&{F8reP7Hd9J0+_YV;0 zdWd}lzrh5D$kzmV+1W4q=TP6JQahpZ`uAvsPFfxNq*k@OR<-Xjxn4Rvjd<$;IX33x zcf!GCJLZ^i_^q9wSID$9JjLgQ({UQZ{m)CzI?{PF<~SLCtlvlJ-~j<_`-Pk6W8@}W z4A)M;Zt=ei1b%hw6k}b9!b6dxJe_3N?qu3gm>U&w4uJ>C{H6kZp)J_{P+*>b_Dl*SNjLa7VQ5R+9IF z-`)3*Ov|N4|1DzfSzcbg&2$B)`Pek}bnnnPB4-K55!(ytTM&3z<0eF)@Axl&u#^}I zR2kbXRZFEWiL&an17UxT%#N1a)=O;KzBdVb_S+~~&L$<=JX(_Qu{?!Z!%xa9KO&dMtF5!My>Bz)&x@T&Mfk$j5Bj|+rz7{iQ5er>JJk2`c_iKEir%~YH& zR;>9CG~{82)jy%8*{Zdl*w+`%C=N|-ip5rOZ)I##;6>8m`^607aSH17)|%_#?JEku z9TZP964CztA#YBnB7^mC`^u>m+AY~_y5vyl>7v4BWV=uMz3^K_iRTH`<~Y&;$fXfE z$*{}&!tHu(fnGJES$93pb!lc^(q`Z06O5Wo$ESGhP52vd+iD5ma2d$L6hG7vr{OLA z*D&+p+cghP7l8OHgnm~)w)uJZSaCSn!u=E2uVSx2@j`nYVZ6x0n63hzvn)gosNnO) zkMuMw(e!nYC))wHn7wEWPxIhF&@1>aDtdtuaQ@(Io8gR)e=eD?(kBM;gF0Q3j!b-s z#^Ex|ODvZ5{1aOH1?)Z4Ml|Q6o9~C5SK%P%D>wfHChF)KuY}Y|Hgm&Z|FL71Rd4a)*hxx+R$=#oLiR-`F`%V z&IG;cmD8{cYOcqOOoBxC%jKIz;l5sS`C)5XcD&M1J8*F*cny3VY+lTCp99$P=$o+j z2j?yEFYEZJ{yj}Sco^3JuP2UAD{DJ2b_@R-zD*IdU zSCzg{uSq&;4$F_UBZc1Z7 z6$pg!^A~R!e}2ILAv|_-+|7(6WADAZnzmRDkYF<*a$Hba4Z&IDixxE7ykSUWuPjGqt>TC(j35< z;XO-o1$0zBmu+YcK|WRav~%v|e!g9MCZtb?pRw(dW8vv`-LqlS6~}?b001BWNkl54&*gPBwAKY?>_{_;(vhU_Auwgc7`)(r<&$Xkn2@hk2dnE zs#DzBljys=>jzJ=9QWI^jbDF13B|=D+#C{o7U2>3oeyjQ4?K)t1KelbGTl|OZ`6SZ zyYOBua?Kf&7kK6dp2jTyoe!*D;dPRY*WXY4t|9IUuAOj5UA}lQ@;v;vsem}f9kaZ! z96M2bF{QBNyi)7CoN=HSo5(i)^~(4u4rpnAl&bBw5NsY`I|4r??<6j9g4h{q{Hawt z>G$(&r@N9~0OMgs2Md3^#A?4!skw<^Q4nZVTr&VyK&Zd2K11bj=(j~+DmX*iDzU9H z+ZwwKqn|Po8U@#)kc1?xxwmIQ4BK|i5Zbo44O$UqbGET9azW{aZqexB9o@EnFgsC; z8b@ZN?Ui=|1k$^`qDN0xNxw+JiGAE>SHLx8!>he$c*?tsJdzwy!m| zUSZ5E&9=~11#A@D(g_!6FGBLJMQ<}~|J@76p4`p2oXXAQ~a z=Pt}ZXOY-&?|fkkmy1(`Yeh{RJ3d>1w0#t7;%0m6OI3AgfVVuswrkEXSvsO^7r^H^ zptHU{Qyc*H)9GB#c5eFa&3Uz@ig_XZN$N%c%@m%_1?;6@5rhpJv+1=h*v1nggyj50 z;hs|4xW-{TS0{_`x7@xoU`yDo;BLX}j#umy;=*Qa4Q=X@AZ_vi!m;l5a$_agY{$AP za?X>dGIqhfTjWnlJpZ;T-~h6%OMGkqk0(=O@5loo+-4Bi4=X~UUz&)?A|ZkiBa%=1jg$ys2% zc<>n7{KvA#+3nLL&Qt%JY+TIXX2EyN&EcHaSQhP@>^5S>TPpJ zKW=mEP&p*696WdVDJhQqJN^3{I3T88P@+rBj1q8LFLK#Zd#Wj(|7*Ia)z@>@-6Mg! z_OUIvkRWDV*IN9xU`&qS^pGuMp)sesC|V5GK0gv*y>B9#M+8n8bsMv4<7+`|F4bJ6 zq^0~a3|+XZMRjiJvo5xgPxwulL-q5-%yh%0KNl?)Dz$)~Jg`h?uKFW9rbn=1M)>J( zEI3d5%9VcTjXD*E_JYt|DQ;tyAnycBw(&DG?rPa(n6j)0uiU&xX8F4a z=i=a;(&`wlNZMNaI3Rfvxm71T#GKZ(Y-Q#AEW$L_Q2K$3QTuPHIht11)NSj>}EO-I0TRgZEWzw);nq3^vi}#=guYi zjC)UI1d%clpF5(Kl0tM#T@7;|yKhapn7wK7c{YT*(Mqf0R{D! zQrfoj85vLH)+L4cO~r-PaONOvXnKP7c}MSP_w3z6)|R=Kr6=8{O2ZtO;amwV&mvbm zW}b-cK8IahF_$uzlP#D&kv;dTx&XPqlvfhD3 z+Yx6;r{P!}TYh^str66#A=fFKSRg$04o~q}7;MhDUk^LxKUB(@GCXCuCF6WPdZ!6C zA-1}@*=ew}>=d2d+WN9Kdq9{^p9lv>OUUNB%6;*LK5H`8RpV7!=W?6V@EarAvJjWW z{_W6iY5KA?fD_sg^rytHWD-Flg`BV2XMheirk#P!8=I|q*^-A~@PGRCAsd-zluK=9;wIG-K5zB4Vt~+921N4bDIo0~Qn@YqvdlY%fn1$QM8qrn16&9(Dd@^u8cis1}|i-wzlJZ1CjLv&J*OD6@nRrJ~FN*^))(n5GB0 z>;-Ld#-z2<|M~|~&m>5IbQEA59AqZlVg$_K724s}Qxj-G$D<;Ej~*ff#76%f!-1|t zR(R!Dqei&H9RMkCL{i=q1Uw)CNnnBm#iq^vfB0@Tff)QP(iEw%Z-NI^EflrK3;lRf) zYQf+Cj3TTSrGmmfK@_6Q8TXrX#5f=*fDaEZ76^s_f(X(>6aYqpIW!{QL>0qV3>7gA z35i-^6-m$~gv4}noB7l3yCamJH)O$Bqu5*!h=4deFamvtUmtSs`L{7X!~Qrpc!J=aeG&Oz3kw9(Wl09$BLrbBCN!9`RM4>i&5bLLeL-(=rXHNJ2zJ zzyu7aBPm2!J*wmRXdLJa3KZxBA&3GC1Sx^(df>?;nAC~|N(@mc2Pgrq%g#^lYMQN@Hho6KWCbxiMk7WFfma|K9N z#ONXO%AU^qFFi0uOp~Is_IfVtd#iOO4B4nlU|Iq6#-H06@zFri~GbbW^@A22WbOH|HuFMRAENeH2h&sG~n3`RDDP(yfjRg{Tu`jr#Z+!ir`49>@9>o%VX8=kNj#!y^D?C(5uIaORXc zQR~D-a?QC<6txEoYd zlSACy>u8a45{AJOrB<<0Ss#!D6$-@vn>|LC9DRpjL=yeuS1xA%%fHnCa)luplUAy8%O^h0z#FDiVBtiR$P@7h%gJ4@Nf@ODH0JBB}!NgW?>M; zq9Zi2!6gNlqB_Eb1Yit@JAz?`;()+FA^Q$0aPU9=-T&`@w@2Zmd}|;Kf^b5VeMZVK z3kg6G29KC-Mx6$Zs!(N@&?Te}_rws4Bdo#|UB(}GO2}Buk9N!X9IM zeY+W`R01}y3OI5PfM0)yDpCdqT^S5Sot%wdi|_&l-)B9nr6#HyF4sXQeTpXb7D zYfjd8E!u%8FmDvudi~2-VagEC;qv6MFKYT}c-nm#&4aOl&C!5qbUT?YIs>sA^u%mz zCbhl4YN{DK#5RI~^gsT${~0bBqxXSy%M~;akP?hc(TErxW#DK|JYa5-;e?c`5}~3A zNxPI%-!YR?`LJ%RUdK`l5l(f4z&v+)`$(UuR{^AU+6kFR;x=`V@HW=(;(r%tM4xZb z^-0|7PPBCX)=;I{3a2?GVtym9K4JSn5Ks$VcZZNUOn!Q8iJHF%meNrDhfd_9##j<>~Eh; z9WdB;8V7?UNnO|w!HDFBKq@wdsdj%u3RDn1#FgkYC;{9BS-M98{rfgpj2;%#lt6Dv zMMgvo*J@z667`prV)USQ0OVuzDi}bu8i*Q72T>^`;M0&uL_)K}+`dcXTav5^Azsa3 zl&_(o*4jri}~=fCuS>jcB_u;SV&yF_tfczi#GajfD{mk>yo zBujx4j2hvi!bYfxWDydAaI;4Z31lInju8fCG6Et&h=z;7;5=jD;fH{{TLv=s}77PawH6%%O zt+fVAh-C3Bs&dmrKuYEJ_g{bi>-)PJKqW`>Fe()iqUch--vklv5)uq|OJyjj(|pUY zDjuqyB|80;K6*`K{T|KD5Y>|A^y>}?OHq5Um`5(T*GvKto@%Mz!=o5Pqysc3h*~xC z(rHeN8ZMg14w2Jc?spTW@ln41^UpuO$FJ|Gj_AT_6!R(~HE0zE3eX`_Nr);O#jH9N zaKtcFvj}Abqj*GA!U9&pLnth6;~1z2g(|1XiqWFfFlQ-Y6#!F*TKJ!T#^^8-z%3yw zJ`%bVL&azq4deKn#K^)v1BhzRJ96scR|iO{LKz4+0iSG8Oao8{C*>`m>a@9&7V%tM ziRZ+QaNdwkh9f*|*6h;|Kk1}&=^haQqD}*XX52wO=h}U?UeA$R0DyB{(V1`hiI{d* z{a^p*|E>Ufi6D>xvKEH9js=mZf>bKZMrVm4G$J9w0fB(jtbLy<)DoGfR2!>}4>L

    cBA!OY^W5A~UrLpQB;w=A`aybea`dP)*s$~DI&b;T-J-v@V4T@w6}84G z(mPm&LFZblxDFE?bNiF`7ZGSoNDxH_VBKO_&3T%ss_6I@75-;o6WicJz%pgZaX4qeJvt_jdn+u<$6!ScELK?~uVffUcIw zc06d=Gk!(nNu0VoMDCuv`7MJPk8U)A?ymN3BX$4)AOJ~3K~&p=%g}^_qbsiLV3Fo* zxUb4A5`cc>O6np?jyVFQGB!*~bg;qRs3PmWR-ZHoq$R+e6zfL1h=7YAjQEajZNRCSQcH`ewZUBtdQ*25MYt!A!N&l3 zK!(3WZ_3W5S93ElVk_;#_%CMp|NhtiWM)dHUqwHYHb>!dHyUFOo^0IIUFE1%t(Ai| z3XQ4MweP4%CLuBo=PsH=0#FKxbT^C6lcKXXJxL@vP<%j#mJxN2R%-dxh0aq*(^q&J zfM$2^N~m>a_=1ihv-0itu3T29QQW$XEn6AOk&n?R|aseY23w zqgTBCdIy43m`@c5RK-LfHVUN}r&%N`O;d@l?;B`bAu3GbM%xHq({KU4s| zs~v(v(j&I8tXY-SwB+!N^6#2EgOZu98(`ZNo=NN~C+mS)<+mhgOGsJDoLeIOu2`8s zIBcPS+e^N|gow5%-@!1HhLn_wiD-$46U(R{$8m}nkt$$Hm3Vqp_2Xyie44guf0P)~ znanCwbrpRK9X9&29iI`A;qv_G=L7JZ35cAhSd$7yLmr}8sEja6Ia+(19V`!8(`LeF z(}SWwD^k##e6*%bwT)qqvo%#o0PQ^0dgN}_JEg=6sUTPx%?N2;QG}KDy^;;%gUSYB zRcDYUVtur3;t2;8zAAaNhncXccH>S(Z>DONnsi0#7DQ(H%%XY?5mjhO>xVRA&UL@m zCcRlRVYtt#sJU}OZM4Q_qTMQ_oF-)`26L4#RFQZ0$yA`Mn2_p+Jz7KheP!gZw%{S9 zqGdd_Movm~HbjB>Y^tR%VB&{48;Z?z6coZAvxO+DG)gKU8LAOEIjL!xQMIKNYOi#m zHxud2%E`NEs*P4fK|=q-SYb$yd2>mbIUMUMWKtA1jIE!L193|hF-|+0u~dmBRcaw7 zs!Hiq3wx_PwSp_GKh;gVXtD%_x30VJ7?G#OF{-R-*e`&!8H@$0`i`U6Q{wIb{sO0L&C zGWYxS{jYb3v?c^mW(Ffe)DAZ75EM5drII_v!xP_kNS9_U*!fT$+Em5F!F7H4U8cVv z?sXSMUG`KciXJl(1zXs6&b#t z9-i-9H!I*CPIM!-zux=z^kVj5eaKE@!uF|BXh>|ssCXJ$0081jRDyt${ z0RSel5tZBerkG@B#`Y*rE0JvFfCx=RchNHw!2Ssp<}4<(2{ellU^pe1n0NY=D5yy5 z28vPoP^e}GbxE`0BTU>wT*Nf2GQDaUo21PH4#{Z>dJ}rqjtJbRp`oQjiS?i&Rv2uk>Vla=zZ9ash7=z za4+uQEBM;e84>>eFMn1sJdt=N^ly2@dvGWLDHzGcN9fBgFAKmXg~=-sjxJhIH1RIS`%B7xhha31nF zj$sEN?7g+FDh9-Rx@T5pVn$70zV^;dQy|m)`201V|E5RFy!W<1&sv#N)jC9_lrDBr zN$sL2_w=QmV6Q~eWw@gzGIE=-^=6cTX8H4dwu6JF%0AG$Kv-uM0Y_v?<}=N})>^V2vWmbt<`sAgWZJ>p)MnQ4EfKB&izJHxeg%8VHq zJxe1I+)`KEf4yGU<*VTR_|-q2qJl#B21@8Ac33l*WM$qFs9ce6tX%+GGni6|B}g+f zeUeh{ER(^=`1<=bx3`0W8#xoVhfoYwS&U%$mMr-X&y^PHr=V73GgkOa);Nl8+}gYJ zM{k|7V(nT0n>3>m3}rw`6f>HM{WRe!(kF-Y)^({zgkFVFc!&VL!9@Y8Nd_vjnT^xT zl#VEX@$-aoKzyxzPfHOg0h)HeGjl^C+!~f)R%GL{-`&xc|uUMI>#ijsj<%-&hW{S+E+FO^x z2Fmx#OKJZQSC=g5NQIc_XiZfG%FK;msik;f{^b0Sf=KRUnNT5A6>=e+2(Qen+7ps0 zL!^O~yH&MH2Y(Q2p@&f#li&==n1y?1dE`~s?en_*6^ROLpFS^?=9bJF=V5wQm{chx z@(y2>hqZpNsg6=5OGT1Ut4jC1Q6?f?LJA2JT2~QURo}IDZlfO3y5C55HHn}Etr=Sr z5OLRD<&`a}Des8=S{}8g-(R-gT^>QJ+6-IB#FcmyS^kyIxAvaF@*7QduO{We%3BP1 zM^H*Av5-`2AaY%Aq3NAfnJOA!nch{DsD5;qRCdak_>I@!HI)oB6?_&7_V&tsAEI3? z8lT><{JYjIa@cX8GV<+HGFF{JeM(qs2>ROl@o_%?@d^3zH7SiB(y#KJE?W-yFfn-$ z@%8ndv+0>tUzI|ROy|~D)cZBN2@eLgsFgi9)*sqOAJ^CaJ6Al8uBKTK@Quh>+tkjG^6@x^LRg+9@rLRce^&jw9Vy04U>xRqZ7ChSYmkE5DXgARD$91nwt}WJ zrMi817pZ^=<^VuVO6$I6)Tp!VlRm)??sx^L9YjyuFh8<7L z@MJ&!8R}c6idJlhAT8gUW7lIad+oofR6`K%Ip@BF@_1TS`8``ZtE<U%x-%_ zl4?-_aViW34uNYEZx4$7$9z_ep{2B=0k-FFza83)CCtE~X>1{FAk^pdpmVQl#@sBg z^n~D`9Dx;K)W(j4JjVDisi?_3M472oUM$--PSHnO>w-f{_m-_HxwsdsMtf9T;kS~c zNhxKdVCRbXUeTn3f>tH|PDa!@XBn#*5{;agp<4x(osP=;(&Lc*%Zy*Z06(i1%ayH! zxihCyQaLFeF8flGO22Q1iZba_K?fI1TYmzv;>*fRJcw$C6p-8cNvSM}ou$U!P=Z`B zzr%aCF4&$TBJHSH?(YoYTL0>1;~dc4h=wzxhpLK*udHh1&Hdi`s2ds^_K=6=e}(b* z5D~3;6k5g&^{!pDOFP&eh3kW&`keE9zX-H_-=p{bXjRI+x#s5a(LdBO!XYKm2^)4$ ze^veMw-^@jO&{dmZei7~7jp<?Yr;+Job#cKmr zdqv)mzipm@RyqeVc@SxJN2P|L;CrjwWf~!}Tgea7Tcex+dr0?~QPM^`M13z=EQwcl z^B7^#8e7Y#HGKstCHrLwh+SC_`5D3K@^sGx(xEtc~$diE?c*^ZvR|emwttLf39%kAg1| z2>Y<^?NginuF(JEfBhc|g8(Yf6y}vBG4|_wzQ3diEc06Kj?udQI8a1+xckObk#Zzc zOTr7Lr1^3Jq=XO#qf|<4uWiDo1!8W`IZT^9@<%uY&${SHY#|wKC({vogA{b@rdqku zONEE%iSpcc-cer72B_Eiw(~fTKMhtLz=H1u)8jGPA0mcwEu-}|4k?-UYu&F}i_J`1 zZ`#`OoLO2mD{iJKqAFY~d3ku2wZmj|hh5*x-&tC5Aha=-zvI3yk8gEJuRX8*a?u(c z*byEcGv4pKf9JY#anJC%5~l3x3z-37?4L!AP(_ z*^{b@1{m!_tw)Aa*bR1woozgZJ=jL|U#vq!?0B^2Kl||mDrhvV=%Us-q;=RqZD<6` zh0a4-AKhB}#Q3GwbUd^Vm24*cIL*2>Ef{HfoZ22r2`%O+Teg=+L0rMuNcCjpP8!vO zDd9U}?J{8_y1RJc$7)j>9L8}hLVQT0)@4ansOAxqE_59sD(t9lDvpjY_(lV z5x8@4*ifbmdB&diyig?5YgXL|B2m?)PH8=)i2~x8Z$zcH%FwtO9>rAg1>Z?iYMDxg zU$F~KO{iHVRbAMsDs)LJ=qOfUi<#*t^i1(P?iFP++Jjm8P-gT(8nF3fS3C zRVgHONHMBP493!|>J=iKfCddMt(|NJ_HGAzhn(Yhpf}h#`qSEIXK(!k+O@y^uNN`w z>>^o8NlH@2*{xS2PfGD$uP~GW9#PoE%4)%|qJvR^C`cH?lTb(%p)`}Tr-sdoX0oy> z1dpLButGYTO6&zLtx?OIrkY(DSi%c!D4WQqwO%fYCU_T&9PF2bWf>uYs@!qGIPH|Q z2LKHK4Q&x_(u1M*^nG|~ANJ4x^xtPh+_yi6pe3nIheNbWTkAd7PBYpNZ4|pCcGG6Z z=n7zO@a*<{{OO5Z*L{<4sT)6gjl?yluWjpSN7uM5_6qkc{rq?~xvxn4)~ec~$IUt` zpSOKw#=36-sRD&GrXMA{@S9##1DyG)Ja|4no7DbXK9MXGECE@&v0iF-u9ok*U+-+s zeryv~Xze>Y)SirfRC#@6ePt7}4<1d6>3-dAneoA}9g$@9W@rs%vKIxd_1=3_v@O`{ zYwx{}68H{&3*q|NMmN4a3e*NcrSBzS_F)_;^TJ#^$u`dODf!pF?%-j=q>Td8uf19N zBrkAPwa|wR{Ca+c%H!jy;uWcQq-w=V&n00{gNRu(0YmvgJkYBB2DEZ4l}tC)!r6gWzi=@DKcu_6NFF+i=ziXHML(g4}H zOH1>gB6rwd<%jsA8L``r$~FyaZ^c$%d1^%hNhWqkRI(+qB(OCSls;6!wW%ed^#YMn zrNEPc0|<@>#QSVvvwiSAP^Hr5Vwu`2xM52 zDWs0hR))syUN^)bkI1aiT57|iM#KK9?J!k2s8fnsS*;a^&wIV!O0gq5ah_+UlqEWH zx-Jn2Mp#q|f4EK|lXg%|lf~NG62p$+S20iPP%CS-o+H+e9`%eZD$@wXR%MoES!icx z%PrP26`8A0d8i4+z@A!UKeY?=dh5(vyY~KX_0W6%ow=Hw0GZO2X_7%DbLUF2-VA}H zj1L~Ca;*C;*4ax*l&+))O+}9;rFB^psk>{WTCuLBiG)b2iu|^QpvitG|;43 zXDdu+W_jb=&o$#4zw>yW-J|T-IfC-PpD{x5rC3&qtJFl<3U3!1~I{aEC6{3>W zvM5j0sQtR#B}+rXo53>}OONBBt!Fi|_D^-T?sz2|v6#xX=83bTfM z&94P%L4(O4`@Xyac|ny8wPNp{^c9Dq=kMFu{)BK)4$T!^40%BqQ;g+6LE zi$fLQ^hy7Im0#!M-}0gF_iytXb5`E={9}B|{PKvxJFf&kQ~~I(ZVw5Ye0LM$!+D7k zrGbQQ6^j3s5*~`$vDX!EZI5w|%GA~U{eJ!acd!K+@zo%-f$=3(+bcGKiy(2ty1ZiL zQ0aN^!sR8LyXM5Y_w_eS^nCQsX8bc!9sZ+-D5k0Ikj#~+*x_rkb*~-Q-<6DU)IzTJ z)|cup3u}GT*RFqQ`xbVWg>H%_`FrNF8jTf3$l1DzNk#1I3cn?nqS2lrp?Wnm>)kCk zTE@9UmFOy>?!@Mdsg(q6J2H_bRMDV}pBB;^RWQ$A1%I(GhRZL;!{y|E? z6?uDRewm=P&k{;RS(Z8?7CR9}TC<&S>||z*istE68M+0(xW)Z@XPQKR{IWJz-Bm|x zbhKP-M+)~&EiT)YuS}|($eM{_;ks8%9V+>Vlqx7xR)JOrI&0xf zq((^l3lxS@M(+o;txJ3EhM155)xa7fU6)W zhE(KHq11Yu&+AR!?QAAZH?Uuev8s{OZUe&mx{$k!rX@Y$A=7~qO|k;vf~u0dR>fZT zN{rm)mC`Y~vJw@Q$=q3<)tGo)U$j?C!GB!&F#5+l0xu*3c`&K#dDYcF^45<;7CHf8v{zF*d# z7^7?V@-c=$N^DADXo7P@;zU7YSUATr|S5{H#~2-bX}2mZFVKjns{oZ_h>V?IWT+0=kDp%n`SB-QvFaT$oT!Pws*R)6JG`vj$T&V ze-hv~{4iD8k`fV^8N*O_>4)}{mU%ny#7L?l!Ckb5rly^4;TL&{b;X48{r$*%OZ)x4 z1t9Gq^3k*x5;Jiva@Z*@yAx`MtsqP_A!T)z_~x5o=pThmgqSkQ{2gJLWL?18j>JRz zLAkKsqJ7t@$Rqw((eL}Oc)feGf_i14sWxBVXdOS2MkC z-qMa|NYtD&i6%0nqe@DWbAQ#oO#U$Zk@M}5;hu5(LC)&h6sq%k*Eh6T5b)xaix7)0 zjjddeNzUB!zJG&9vjYa|PL}2@dR8zjLnN(sR(+>hZ1JGXm2kISN#>hQ-@7vNotxk5 zY!Wxjk~8);F`)v5J@2@X+jlE&?H0bd-#Hr~CQMG$(fUKV6Irgg@5riBQE^GHuYsmQ z%nD0s?T{gM*!YxIF@0Ysy0j(%q5@WQKAZlZ|J(nRBE^REb>A6|)|ih9NE2hvQjW)H zNBI&AYmZ2(Yb%7W@(uR&*8RGp7}dft{bqUtLrJl1VLyin;h1k5li66`|JPveP6pM zxvOxB^p3Le344~$_xttN@BbR}ZSoWo*5&Vs`L?=pSB88%{PEGGH*4Zo+`0Sb*^Uo1 z>Y;5sihU;ot?Vc?Ijj7s9I<%LEY$@2NmJ*$fSFiS~{}9$)NJ%_$Ad>_JE*N4I39<#MorUB16n~XTNmvW23Bh}?3c=^8azJG{#2^5 zNk8p)wEoZIc=pjsI*NU?F%A=v4oBVZ#h{&sjiK$7#-gM@DJEhW-Gc;2Z)y$%s}~Hl zvSb{;#7&$!g&dvQ>wQs%-cj`$nLIKdKj#qgl{Q^t9fiblo#N0Bv3SkRN_^ zRynjal)v78e`h&Vl8d$=qxK}Tcw`zF_+H>V~fe7KeUi)>qYk_LrtP6+gujIKRBbYaPw~s%b42>NwYkKAepuSP@ zQ@GO#i^SqBxr`FLAtA>{!1unh3g#l(RJ0=#4CrCiP>FJ6(3BB%y%r+2$7}8~C9*Oy zW$%^yq6(UcA~SOXB4Q>iJ0wKeRne`OW)x}Q)kbUQ z=MS5%b<^R+%5DkxCNON!2FxB^Kg6hwO^1zM(t}WFKc4;bum=5!^%E5Yly%Shy(d@% zm>IRaK zG1kF0vU$dL&0W@1p4uuh!BfSDh;sh`03ZNKL_t(aMJ16bcwpSc&C+&&<#Dy00o$c{ z-PuQtabO}}ua*8zxn8i*tY2&G;lm!E^;7?VIZUg=P<>&q+?yIEHq;EPaI9}&c!RzF z-E%}xYqy$xSRWfY%uW?tC867>K)Rj7I{a&|wzp>my4mC4-dPC0@3^Tj$6lZaRUgOW z@of71VC1~tWvl%P#evdLiHkYkz;kQ)`r0n{`n$S|*_uMHUyFfwR z(j9lKZ`_Y|NYnkL8XFS;>of#TG-m)^8Pdna<=Ubd+T^r*<#QX=|b1=qVO z*Ss?zr~CCA4zmuE%oRcEqK)$$$H{$F&Y-L+E*CNIZx&uWyJTN697j0$Slp z+1x4~o24xkIa5kRGbQtE8g!U8efD@K?h>tRLCuwn7yB?2C>l#9!(O`P;qoQ#tH5BzT^HvD724{{`~BcHDAj` zWSqm)_ha5(vWgl7WQjh<<1meM`off|j%G1*=N2GEQVH@O1m&CRZ zMM=r2$sI`K8LtX2j^Aa)pm3pJc2L`T|AqR0MU))58B@^P9`?g8%@D0M-@ade<(?jU zUH4z#zf z#`jv+6)oG4EUfsh(6EpCzI?r}=L=c>UOV1%-H5}8y{9(Sve?`AzEV4Qsqz?q{CXVSSmkpcb#@gUh(fBr@7x}>amjI>_C#Fw{k39@ z)=;72v@*Nr8ns)i^|i0>zu%&25C8stJb%%`?-J4>_x0LyHIphY?NXMxov_&qD9J55 zSDhjv-`9NA43o9@q&6v5Mj|rB_E(`&jb!keyF z@)>z&eeG>=6|E7`Fq1K-320UVM(kBrLE0E#C&M&WcgT0W*ORO0V zMoZrtlX8bYsZYtZ-pNlnq)-b<&7D~)4n%}TxbaKl6D3d~51Y>R4py)@SSv%hscTKI zZEp3t?pj#dM~<^y%G4=mv>0WXy$+dJb zuP13{d%H(u<~fB63DC&Y)wtBuh;C0!0VP#FBHVqO8OilhBWex=2`>Kp{xrnGlJ+c0 zzt3?`!|T7b40i4`=e$48^x>z~^;3JVVxq;6P$|v8!q@9^&ymw6>r5hzT7ug|Tt!rK%7XCv1 z6;i|ftqWDH@G<87Wvc)>_G;?Hhm6dybc3q(y7HwI75QQo2n4gxFWvX80^v$KRf(7| z$SZQ3^X|eGzCa`dsj#G0LyW%huC(&=&#!getQz|lNAE!iKD@9Hqhejqm@INxM1m{l zY{=LVu!Bd~?O?@F*=o|9mx>{S`CY6TC=j{Q5;6@6z?vgAJ|I8JE(S<@&C^O~McvCw z6jfmRZQGO}X0&+@gG3N_!mK%O02ZgDQOaeSxIq_);NuNh(4ELKyY#n8i_aHh3xGKW z0L-t~>$bi>tq6#V}P_n=Oyku(so&5ENgv|5ACPg+*Hy^{ zHv-Mq>n@17X7pM}Qvp*BEY4h5x4ozs2unGE-Oc?f!ynms8n;y1Ncx7A5sTuW zYQbK$6#%u>BUh4-kNI)WuR(purur)NP4_TaV{v|2I#jVR zvvAuzrk|hg6Y4q7CK6kJ>Vv~9v9Ty5EUW^^4by+(7Y=osS27nmaNE*f@%r&$KL|Gr#jPN* zoH7@40h=dDzQF8$jY&TkBBsm!PQ4ZU94}jE=MJJhL34a958$1prLueyh>Z0)zy69@ z(6B6uC5=EgX2E;`g{l@zVG=%A5or*nZV0%0T9#o(uZ9T@983@`obIlLGps-5TYpo; zY<6W?qeI}PsD&F*-$kLkn?8cl&HzK&9{+wjSlw<84#=4fr6$jZWXo7~`D-{zEHRkI z#4Mf9K$t|og0uymm|iQfAgEEU2!LF~1l%A8^H#Z;O@yn`s-2Z-FRu;t`K+9auz@jc zKu>JSs4E$Xsgl?!BkjN6=ca`SN$UwgwF*|i&h4P8rm9;-FyS}hB<5Tj|F&DIPjB^Q zwrq_YU!H4?CUw)}z3DSCR!uxFGi7vt-L?iFOeu+6wc_)&){Wc?65$JwV?|XUh`Iw0 zFJlYGv?6v$ynN1_lTfhrO;+J2S7N4BrVj*wiD9Pf_BrQD2uxIfj0ixg9A(DT%X}6W z=sG_jQ~EK_PjlNJKM)|>q4IE(B$h)J-nUj!V@@sJK$;%U*3jl|AT_@HT8Sewt8{$+ z<1w>HiAyNwT0dX%?OmT+OG@(WMEro5Wf2oh9IG%vfC{CsOD*h`pczfyR_1AA0eCQm z?2T!!oDVE=f(KY(5FDM>!Xlx-bjIMwL_s0jiR03)tj zgrIFjorPN$?6|J<(GqTu09xQe70i{foSA?RZo?|?4_`B(>)Oo&+kn^Zv@u74gALsq zQb$jqQ4^C?6g_*@g^a%VzF#W19dGhT#tx=Fe*(CVBa~ZhNn+Du0gB55s*VjUJ?u^j z0QPq5?QuX*mRNv=I~K=Y03IX5kd#$HyFiim6%;T@(+6P@89Er?Z1JZ30Q^DE7M@zYd8wqHP3rShN?&>W>7h{ z{f)ZhvKV(lLerSO(ixT_IX4ItQfwfy6Jf*vWTqzJk+=qMJ zD8;}7mk=;=C4^VF5d`U$z~FbGA#R*r#I1D?x49S~1&M-zrq{|qF6OSlz`###xq(SR zfffpfMU61CxxUzoWiKIaMG*e=S{@+GDhvcrg-(fugiPr?#}FxPoV+O&5E}HHv&JMW z)vdHgS;a~$CWZn9Lafs+AB+6gJ_f;a+f7w?Yy= zuWP+lBjSB)kKTZN8Hi|?T#%LdtMm_ruo3!-2~5&-ex2*Sm9#ycxVN_Ll{wA<$Uvdg zl<>ZCMIhZpy>X{p%L0jr6VV}g8KzH40}K*@3J*u%B7`+-ffr|-RnhuWnCCD^7gaAJ z4iE-ZLGa83VI=~@+>ijIfWb#3)OKu*x71`J0H&OET??b2OEJJ$_l!*14k1C906Sp; zd^t8`1u9HNv!Eo^3e1>@NhDQ7T$Rg1u#~`y010c&3@oAqUn_+kKoB{bauN_hqdgLU zssLgcB66#?_f4MeW%nRP1hTn6+Fw6O+nbD zEl^QIrTI#$v$qHKcgh()U)M6T#||*Tz9I>fqLwy2NMy+ms87f}9Q-t!=Y5TsP7Jmy zB3FI({$PeMC*Jh2k$@1z99XGM6bdLk5KSy?eEvCc=i|}xM6-|ch5hrf{k~!!b%C;O z+DLY3@9)pvY2MR32-+rZMfVyNy!DNQ%GP_PizF`sCRC2_9ndhB0Sw@5c(7MI zJYwEoKckXb5x`oTRc?6|BhbDP7obN<;PdFQNtUzh;Nx|DM3TVg`ulc$gZ5~{w?=L+ zN+jgeeOs3>Bzm?2Resya9@!r4fx>wF2K%b}{P4O2CH%G;%^A|xT)qmJA*`wzGr<9v z$idpgGZQoZ$!k<_0s+@ApJdHT`jbIxVMSZ9VlKa(LMr;zbTY3Ss9Iwlf`BQ=H!||VvX=oBG6<5sk!~4* zMO+^GAO)=e{f$rvMiXUwi)BPWSQ#wHT6c*H2|>?X_n)uRehN}16gL8PUs=M8NfZh~ zs9au^s~2m)XG97Ssv-#HOeoTwcNJTVKut;*){JB#Df=oQ>XHB;V`KL`!4Esyq@9_O;f`yF1ExTN?oFzOLoAJrDT}lRN0v+aTP0 z5eWidt;y|;x2+;8wBgM51W8UOs4Q1jW?bu=l@8L86#zRoB*wMjyap6hL4z(zUJOnpi5{sNv`wl3pW#Z%6*JdExQfi{ky%tg zazIT`g(ANfN@Mv0DJm`8Gf4E{UI+q&fI$!-y%nK|c`W;R-;*h$JpEvdBD!hCTuP$H z4zvLd8{n5#gUD;1Ux)}?F}d{|FT?-&fBx^XZv=!G_x$t;(zpLX&UaRgz0Ng~z>shdhHyDlR}QA~%Z@SI}-=5`!S z2qQhsBPtMn3FOS_D+7CX>>Wd5Uf5kQ$EcC!1FO0LfSbT==JI&5k&X7>;-Z#QeM*#h>8hVBxhw#n_u&5 zfD{Y6ZF7xWKL8_x5HbzShz{;gY2fJ@NxuSI4xmJW4Y-hmw{HMw_f<4Yp|^c+-wNLV z0ooAi3<#XS4+d=Fl>`MDe%O-{r&sDfBQoi96$mRHH#^yHWJw*BY$am=73n@ z5zfCN;OxJYL>yu4~}vaRo1E)fm$Wn z0+HrPAPFt7um!3Ta!kAKpn@)exK|dyl1(XLj$r`EM^zFh*IsG7H)#*70&yVbU+gC% zRuoWWl3!3{L4YWdSp_MDRvB@fwgM7--k#vhiLkeWc1A_X^i>H2R3e>NaxHX}-mn3c zVHILErX;Zhzi&iV-2-OSgvtwMhL{kQkuf9L(1H1>R5KR!90NNvpjPvqcZ z1NM#`h>HoR2$O+*^$der!@?3eBqNumB6Z>=S%FLx5x!hhWj_)s8vj1ym>KMzjDgRrKLAW6hs&VHGz#=YyNZP1thinKtG=pr< zy{&*T0DI#n!=m^lwMmo+f|M5{vG#NfzgGZcF#-n=wMvW=3f;@82uM-@Y{fkNUO<|# z!Xk5E`GrSuRaUMDKNlhsw)9x(Ys6f!00C{Tie%Xsg=;D#YI78(YFH^AK>(Csf}k-9 z@*Xcc$E$U2BrGJdS6k7dsT7eUA6q#?L?ZO`0*{dEOSpVz?C2b$-HC#-a6JJr4nHBQdJ#Cpvz8^jK~(^BMM7Am-(+5yMHHB2MrFVqtp^&Z z#3jiE-~|mCxbJUoPvlyDMFKk-0`$hjioNQ3`)1 zE(I`cKqLbs0Hhb+#Vssyrt~12)fK7V^Y(NO;DBVRLcf>a7eogDP^`V-ubSS1${+$; z=j+p-UCROs(>(7FundmZE4aHL3+SAe*|e7hf0UgSNqy_vdzY=)ZQYO%_m$I`!9QLg zJ8?yp)$KFD&};#^0D#r_CnDEzoS*{tYkds!{~{sIT>2T8NZb9fB@*XBqHPyI4v7Sx zU+344&kUFf#75XDxiA5E(^icwhLk(+xJ*PMv8rk6T<7ccsf_+q5rr=@AJ=*M%Ng&a zOpq)GpXpVA*ra{?SI+mgZ-uSSuj}XEbKXXgfk>MOWK4zw+ny9186?dUibbjE4l3zP z;EiV9etA+&fQ@=fJz?Vdyzj5Sex18CxYF2GhJ$4aA*9OLD8x0-~JUgXngM2sn=K1dKMzaF#%l0}(is`O0%%)Pas~t^W=Y zZgG#HkCc5Y(*6ApK|IeNvbEmci@l(@9(jFzu2(SHny+(gdl3i{hmCcQ3Il{F7^gAq zdO+U@7y^w060op1*79q`#Qxs5_wq%1APY=7_AO=~F&&ICn*g+*yvPX$mey{) z&Qu3496lmL2`cLgKu9_v6=6Z*d0(|MiRThZ>Es4L!U7zQ<8|Lx>IV6-R=n*;Kb{WY z>ss>_e&h1>1qDIe5x8)aja#?&{Si}ghV(B&LRM&^#7$AwYuulyQc(*S0mD!9-dm4a zWmBYkRoWt4tkmVbh3D&^`^#1mS9JTz^$AccYQD&n^2^{u>W!gR1&BbcvNU1bz7rjw zujTKdn&am@ugePzdTXSCkr<&ks#@M7@w^4jyTd)cPCk`>WvL&MXe^->Dj* zAx0+=h9{(4FIKeWGs0uR@MI~01nG4Upr)+|w-s*x*(rl`-^zVhI-Jio|%p0=w@f3A7tT=7_u$5M|#w!Rwcg&!4PK8R6tKec}?g#{H zW(1&gK#Hsc?VL!=1u0LbJ%f;d$a@B&<($hb?w`AM<~;?$W)Nd1E=uVM(?{B^du!YK zqjv?H_ic^^42?P^Q$u}wP$HBu0FxlZ6kzYQ{OjkEhVZY4_KjKyN!9MbVOQcJ)Ed`i zFSA3D(=mJ@7Cl=f)Tnvg1q+|wftjd-6amD%=l$b+Sw#^-?_CZDlyJG{xcrqPMyhn) zw=IDoWqT?sfh8dpZFD%r0~`P>aG%#gr*?F(6%TXoS}zj9wi8$dDpTgq+eQSjra^`U z7#5_q!Z#*iuck_zHqRUSG3Up;&iXaeBOIO0Em8>>;Iz%cA6-Nx{HkS(n6u!vGl}=( zsmz&0loaN&r$$=YS9yLhZ35Hl&j=EEw^mq)Zg)7bu>Eiw!S9ruH4zc4qAc8qxVODh zK@h+aOZyJoD$TFYBqHjthGT?-Mfm&zL()yUS3+2DrP&PhLS0Tdr+`S4$OM?$Ipa1f<*qWhVlLY0E$TuLcN&Z6{1YerhYviC=e2bYQ^(p+c_=fW0{T2FM)937`_% zcIi+~=b0td9}lc=Orv3~^|kUzx^Z_BP-&S;#jIRu*@Q)q!1D_WIiJ9VN@6twfeY-q z&X;XBDCD}zs(hv!`ekOI-${rg6T;$$d@M@x;o%mb09#2Kx7atNClHd5G=Shaoa>SbAbGrf%PPRe2^kZpJ@p{ky_SL_0P#^N>E#)$ zCeZTy8{T>>bZiYukOo2k z10N`WII|wC#iCFKL`}70>6~)^_5Xg+^t;HJ7$e-&nI_@;=Y-NRq9puAVdhO6R;CR^2yDNC zQ(X8SPL3y9R2|ZqQpm2IpONHcARDWqdad6YFrd}m_fAxZ&URnZZ(vm1%G1~Zsn$Sd z_gG&y=uXdF-KDcU9>?(wBlUfNPb@7}0Chl$zoHd0xulpXBx@S{q!d^V6>8G5)xKE+l~;BHMut;#3XzC zF=B8!11?m=@ar-+iW#djZt{2|lvpp8MzEFLg+?1^e0=aD$920s)_Q-BWr2kWEXVqyGfvOeR$G zmASw^iimdxvly?$63m=)WD?S?Puh>pKoQR5;}h11#7qiEw@Z?ds31@jBg1ci+a?*J z2oZ4>L$T;aFhF75C8sTJ6X zd*-E`cO;u;Uz1dhZ|_)+5Ree@B4y$Zj;bkt@Dd?IQ180obt! z3NjlepdvFK@D|7r$STOcB($_K7s=Q88S{te6Qu(zWkeFBog3>0BoxUI&6CY<*&f@m zQwWkVd(?Ja;||-tJ@xrJr-ctUMLdM5At&X1_3|PDdWdx8S|y!jXL2Cwz0zS7#42S$ zs&GW8s&BwR>R~mnhV6adF~EGG*sRDPY0b=LE{0wDza9@1&hYSnAl!%vvYIq(Zyo?( zM3A9CkW_bWm1yHyUfMbD8w`u~Rf8L0Q>+D#hwWYd`tyfCfVeVqZEN0nO%?_CasK$R z7ThZ{Zhf}5eOJ}QP(T}N%6QuzVC4*g73My?2tt4(TV}~1xtWA6cAri*u9N1`RqpFF zi2fh%|Ni&?w(((pjmz#B%)3Ni=_sYCGtlE%Yw5Oa&yHLe8xc_#jm})CNRkRgDS|!% z3Yb}cLDD_h%jfIk^T*3PL;w*2*7~}ZB{2X-+j^~3}Q@sr4O!0 z*??^My2n3fnveT@z5XAEMs&m&`171!8!-A@5Ee))nl>Tz9IqRj&c-|)ynK#n)Q@Mj z=(}uA5ixgamEdz|-+I?7DteX-g&>sTS~2{_T@u&zkFArpeUq&E>FBnCFCwZil${B` z*0`op&7fMGkgLpG61V-0>x{2q6@)9SCP=~G0C9-Q-mN@rOvh*uWLq$FxJpxG%p42?uz@2QU@n9JA{5w)le>^9y{crop=&KljHbO1%Tsb= z^`caMHaXJngkC~v&`ITBB-~Sg05aEn&+y&@D%XuFg({Im$f}45vGvFd4*E5{3(pKH zDEn9|&ht|GB1XfKM8Qa3_uoi@5vfSJaRfWHexL<5M?nOpVV*_v%0uxC!$P+~{u)Y_Z6S`0_nL|Vf#s>Y-Z6>ToMgAY$4 z2G_^N)CoWzg>_v=cH~A|6z-ong1DnT5+*7)_`S*?V8o~O6d$N{@wH6u%U2ZWjvfN9?zj9gp^i3s6X z=|T!})cW*wGQC&UjG1Xc#T#;@k9)lC>%783P%1{2B@_xuBZzc6!(hE$>ucxMDXNyy z_U+g&|M+ud*5e?Of{kcqj#vm`P|4LbV4mat@fU3nh_$S?@A})mrBn3+q4~MyDogJ4 z*mue@udV_>OPxfI z(=A}FSnJe%eBL)Se*gA6c1o}q2UG!MF`Gy&D|1UqvdHq4up&rt7a<9|V&%s*uG_Br z+@Jk_`To5zOWj11A;Fg=DHJoqW0zJuM$;fTD-pVrMK~03CL^P2bIwAel3lkHi;(Sj z@ViQ->@WgtIOd`)86V}~0R16E?~ISctBDhZXz%Ta2?*%m!9x6R)`1WZzjE?ST!jUJ z)VJy)vI942g;lf=9hy{Osxlz2@lLdoIiVpWA}|T7q~n?wF%q}FAyLwrkVeTu89Xw2 zOqk*P=x_TIpfCW^Z4Id8t&>96@7Ne{EC)bEz=Yxa;`ZL93m1{5-&K&cM>&*ZQ)sLp zWr3uf&q^>s?bMl*6%f%1RE;o;`ujHqUE`*sm`Pb^d!r(NGIwzVqznowQ>SLTE#V#{ z)fyy%8>pg44GbhpMq|#0cP>gI1^~nXgNb`(=oCh zd9T8Pt!-^PHj*ky={+g&-b_9_M~O&HYZh7c*x;C7PlVUH|hch^#Rou z0yA$Y9yDj9yAY@R|17;rk|as8WyfC;RW)<>h{&q`0KGTt4O_w(0}uh-uPZAf!rjbN zMTCDCWN+dU6Vtutu$|@=*%~spk3XcLY6>dvmu1M8T)v=;xVW} ztjH3?Z0!&x;S8&FPHN1-@$)~{nicQ0IW&ThasGRHk|0(BDB2r@7&(F!UO zFDw9#bgIY;w$3T}jQcmai3$X5h)#+7Asay?2xepf2OhwPl!XmScF^0f=R5~>25FWh znN>vF-rl)WWN~Dt#?lEP#e)ROPb5IP7p1}|TV8uc0ZG>zGeH%zR_6uMh(r=o!G`6P z$c+@G5Q73zZ>|)IcHttiu9!0m8p!Q@%hnK*BG#QGt3WNrQ4E zN!Z|j;gI*FXhX@+ zul0y?-S)0;G0*F-|M)%T%<(uMl|@n+_gP!NbEaTagA!J*VqaHTGK>@rU<6#xva?TZLg;I6FA`*tQG&7VyylJY_E_ej5Lt>wjZBk5b7+HR$?uQ~AT{o8;3Z#@}UwJC(KDCP+8x>d6- zytREnyir$_DRECA=8(2A5ziu<7S%u@bMhbnQ58TdLtF$!t#{ql|S2VC$5&{jq<%(NPJA4Cpvs=ksM-#P9_7oO9;o2@v3(Lac|jkGJ=aesglVzAWHG&oS25 z*S{CgxA*s6>spb?5EC#16_GF;3@iv`B5-5@5pTV1+XiMqbIyS->vL4ZxUzkt-sfd= zJZ=7I%anFRE6yaKQ-)nWUlc~jx1;OjTKoO2HAtRbPyn8&{ob^37z1X32;E94p)?#D z0(Ht`_w#(bqFREvEkXq5l70XFaqH--9MKa33(6fm6WQW zxN!h0(BITO^avNlJ9HIb3Ji#-5Fw#fYdPA?bQj7@FRxL%pEi76mtQM@h*(Kb5h=Czetnnq;^%tXcL9yDGSvk>g1kNGbwSYn&Ul(ZX0bcaj*N+t3#!hj z&-!$W$;{|H-R77@wT}m5M`FMnPPisqzo@QlSK;z$Wy>o)&bGb${k^InW)S*?eP_?PmYIkiZG&<(Ts5A7 zt(h`_bhl9SJf3u?qGb zMYk@z_heKQMw)*YdLma6QIl-9x9?hi%Z-+>j_d1ueR_Uad&lma1q-HK3s~CTkVTn^ zix|+ToO`DtsjZD?QB?H|EGmKoi&#l4<$-c*`&&~$4}&b9cs?^==I}M6)cp+qACNKw zAWZgS`~F93=72^7Gguk}fbZ(CE~$DG0yS} zeHbJ`<8=#P%ZExMM*n(*eG-wc0f-3#?ch#vnkBmVJfnQE4n|I*AY|QHdk}(60zmGT zb`6Vb0agLirPd%<#jrWP{{7HxYfVzp z+~E+e#-UUTKnYv;w6TaAQ<9r7*S>8#iD;kAhc(EEUuy~9zGYqZm|JWA`G5Q8TI6ok zpEh3R&OGXTe*O8E9=ik&8{_<9WZgCdu$pU(x|o`|pJa3T8K*au)%Q(!6hSN~=G$A}81hQ@@l3Z8{oC)D1f8|2LZpid zCYL|q^$VQf-k1OU`LEiZ`u@IyC0vnnoL2y^WxxG1%Hc$mhR00{p%Tzdb#zihNDn3@ zN6U~lEB3e7EW5fqwDhRE@CzD8~&{b;v0WsIv7i(~*4=H_#(@flRu zHiaHh9#)l(EKPUh<>?s$9I)Ikd#z9+My=|7W7#sjfC~UIkOAZG=7=Qi#*MA>t@|H|gsep*u2_;-DB6CGjR&Ek3N84}epKCmkJNR1H z^h%qr@QKLMRj5Z&WkJGfK&t+A&GSS`AY$Dy7z(jVM2iT(r;k~Is4S$?fCU(vQY%Jx zbF@qZ=z9O?+qT{N@ojG;90&l()S6&O0U|G3zOKK0N1LxT$7}#a21~0J4#rNa>{lB(G>$++Lg7N!XlVf~+JwG32FQk-q z&v3v55}Om8p}f$USO`Hywhw8Yd#RhxIU*SZ_cz^;{mMijRNV{m>*vq;nj}CDZdQ{0 z_(+EJ`l*p69PS88+H;;h2Z=Un;Xc=cYH;6FTW=q99F+t4D1`CzuQir4r<)`|=Th1l zyMdWQCI+Ga)PiLIMZ_dKZIa<+jJjFQ@+;crMGX}^#(DOQTia}m(Chu7RdgUU!JI5D-Tn2@?S@@_twKdU zh?slA9P6~?LMUmSYA^t6t6a=GwU&U4o4av=N}YaINtX}29V)B zESqkC4v+v0MXaq$VHFhOT3->MtfJLg|MQdO@wgbT$OUk;wuM$=q0s<)J|C^3pqYC$ zNX#)y#A$~rtr$R!nJa@KV6I`Oc7cqGwrvcCHa!dnhJ{^F(zb7V6SSG6eB&937Q3yi zdy)Hm*fYXs#J@5tQz~58>qbavwg8aWYE3VI5&$%Orjw7HW7;6Bg-v>FZ<~qI3=^id z-3S`rGSlXB6-7c-+4MOK!n=7u@&4n#y}uo>iWH@h5HYXw^2hIUyS;t<@lS1(4pxbR zxcw(Nvio%NQfYdVb{2Jom3wH@#OINl=GvarAl%*~r+#`uH^CfX{ql#X3Ed|EL^4ZBMA zZ>plZ;HLIOGO3C9JQnSLRSzq#{+e5}>t)nS4I2t-`252{tQr*+i<8R)wnDS^zO2vgNVWGm|l%D_}lyVn0R z5|&5!iA(tXt8e1J9+y9XRQ5M*l&fql6(Au{EYM7?!l;X4))niEmYsxF$sn7s(Cg>y z4B0UQrM7Jkq;>t~^rE+wZo@swuSeBOlXyr-HSvE&b{11l|go*_qS`HTe-*sJ!FOSz%N4L)rlh+IC;( z`uYlFr)mTcL)+dzK9o5N6N@S`1S^4aE|4AGZhgPs#`E`Mye_8@PToZbsoI7)I|45I za&vtCf@FYDLMDP$7<0rhCq3HjTWf?8(Kk)sSPBIa^LkVo-`@3hZ?hOtFo~0(w)3Vn zCu&>n5%sqwjEBqnB6J@-YDjTi^6J+CfmI2)$wTE^pE}Z1t&7 zOp%o*VoM%?Yu|P%2%IR5WY_{=5emR6<=$1A($-;Rc*)j}I#w6~FqLT6S>n&%rH#2~ ztm#32V|W0f2-gUak`yQcAnLZw3dk!046=9wRz`<-Jz=hnh?rGb>)&IF?%ya~>_t_a z6hu+(ky;2HwUiP9Jj(p~^Lo9IU6hHpjo)*CECJ^q)IlS=opu-EJIfjAMQ=_ai13*(b( zUt^9(021vTf$ch@jA>Kp>2C9xMO~ZK=q%~4~4_-jc75T%8&KcQBZPr`^f zQ5YK;^&rNIWe6Brh9Jp}`dcCDI++;Cz!4M0UBnW2VYW>?j+n7t7claBC#0|^k@o#g zFZc04YE&TQtQ#^x&M4DzqQHGqM7w@YA51EWLJR9j48kc&oe%;+Fv@aOP+wQNeNthW z%`}m=(GFl$&JG@59?TGKgZaJ7QDso6jg-;@1UMse?|Qr)Z#OAOxIBYR0M}JT*;~Qu zs9e$6lI8L=M{V3uDyv$uKv9)!t=*6Nw}N5kdF-5+?iZFo>7}r2aFFP2S#r^SduRO! zOXp-NIzZ{RE0dJ1`Dm!64F@8e#iEy_l{ve7$na%k!<@f6zi|kqe5ly)^)Xc$pW-O>dpe znOHVp=!MwUl@}5DTBn~Qz=K6@+-@8mXghslUp}9g0Ufs+6R$N^oNEqnB59xm?;FY{ zcyQxlCTs{!Qq(`7E`i`8P>K+MyKrK`@(mD>Z#|PslYPylwaZ?p%J?l5@o?>0AyP$X z>u=AGmFzngOr~xSmFF5LQjNf>0Wwba3{U}Oaw{t+C>YaxPPjK}ysaQa140iD1ELpF zhEH+=+E+%I|J`53xx8RSq6!iEib!JyAO5_i9{R1{+Oh9lklz*|>E3xGY!N5K2;VY` zaRl%fxQlGsnTjc#L-{DL!)R@R;p7 z?*>rRP{ZLYv$hnVVGCr?shU}Gjhd%plTE0Y%>gSaz~{Do0-Pun&2X68Dv?{e)3WvZHRB5S5N z0j`mk=Rlto%fdCb3@!gE5)$ML4;j+6Bb9@nSmjV&z4ZodrG;({X@E^3p~=@I+ROI}rG8bN*!sS8X$nce;v?pB8ec11W3V>T8&Hdw0Kgjy zI>vT<|057}ljHr)z_}7@#aImja$zp=1_i8?b-*+YXMH1rG~cSj4kVR@hz&Xlb`qv0 zhy;cR5Egp!BjNRU*z>8%w0Fe4ZE8Enxw9m1AEK?@fYIrd{jMJNItPO7?MP^k|M4e% z|3JkFsi8~^+Xu6EUkxedG)jGYlbz63`ZBTtj9@n{5|9f-MUH)owd#6|=i?WH;2&>{ z0mbg2%-r^NfF|%W*2>TV_bAJofKq znn@#pk@sT(Dy@mHuV(>pfpUvjYhB6!4oR@xCNl)^NQQ=pSSF0 zkN1DR-Hz6yGJ`_;e%D)uXNAX%1ZqF}O(G}32hDgsK6@8^iGwLzbC#L5;pNzHom6Ux~j2O zek+_XzOd8<%^-laqr~%iKE`w4NSkJJBBL##4B9Fy=cokX&e%6g`FcFfhl3$R%#4X8 zlaSutzrTGzUO(1cZfBZH6RFC_YgClvyk2E)NPwiQNCx@z?1h4mA~zxi$AExM4}nSO zFQIhz@M8BtAiQl3z*PG#K(;gH2Gnf#3Tg4h%Htnb^lZO9dt;pdvKdL_%GTi2$L1PI_t2baA zpa96Nv>!rQ0ppy1&j0uEv+Kr$35zNb#I(KX*4qJ9K%vC#e!DNG*LltJ*A&`6K6ceL zRzk`BqxarK%Px110<0=PU>5|z{!ZM-b&f#nyf@x&T7j9x#T&OZeLd%t0Ir&A09aC` zU`gjqHUQFOjH@><59nU{<&uK&b6);o~0ZKoV@+m zdONQnQ8nzz(fXlXwXMvRgN@Nez}JWF``b;b2#KqgMvCHD(vuE`~ce@C4TRE(uF7AsPJ-*2pY>u=v1HhW#K=l={}z;6Hym2-wI zY);u1`Xa*X%wM0sWS7GZa3EO)AwIAaI`eUeZiIg?R(%a;(uk2}AVJ`Hjn{)-99SWM z*?YlO(61Qo7uy$|f*CUwG=_DJuct?5a~2RsPD$uOLXhZH*c8S}Pdeb^({QFI(qi1SE4?RaL4%D=(XzqX1}Y3g73*+1k`8#T2H*%8FrK-yrZj5h#bT%=HG%O)wg8|_xt)NqJRhl8uhMlYQkPDQ7o74t*;m#_DDnl4HTA6DaK$qgB zj@%Hw2S^#TU^EwCCBi*^b6i(pt65_;0wp=#VP`w_q$38I>hVxbm9lC-nvlu^2+u9;RCnioMZU4!km^}O;7qM(tDHUj|a|23XSV}t%;0) zL{Lbb^s}oR-+##7u|@(FQO?tUe@0Ng9aM-R6d|ewm5HwzF^n=Zi>N`ZWrIbe2{wl& zP4CE@g=Ph;(i>^Z>vdjcc>qth=ya22g@MUVfRSc^{N_F)7Kt`FG7ZQQ$9zmdY(AvhnM z_lIm7kpc%Im1Dh59HV4L7T_*OndnJr3yC~Z^kTLnT2P1i^eXV@di)IBggAWy3FYug zw@pB*q@E+{;o)T$q56cvsNf+L4-`;PL8AwXGzI@Kp>|bS}`*+ZW%Amkr+7J~g zN&|PB=1-e1Ss11u)o&XUx%CFBw?;p<_v)a;2VpRQcW7%6HDyM>-3lg%pj$>cE6R_~ z5ZDmHgTSlb{(1i)5HP2E1OcK7x1Eup1{TD!(*W?0&Oji{X^F5icmkk)SJvf=fEv3m z&1B?>{RY%kl~5x)&6oRWnQ`R`W84bV>@)qMCau4zM1jZOq@B>JJwPzb;a3)7v~s@! zVcW_iXEO8Fk`gXpKt#WM{RY>B0!D3jkc!0e8#XDn6qewKgy7|6jw&Ps3kpG$B^pU^ zoa6cX|Bk2{vR;2>URdNt>7QTm0Biue8(wiSns7r5Mj$|{wAbhJ^WS#>Vkn{MFrUn_RpBLH`*W+}jZ@xa@*Of7TiE>d=kIl%zMi)?zJ1)7`+S|tB7q=Q+muKv zgNnTvnju6D&g*>Sd_G>a0(L@lWaHKd2zes_!X(X#;bXy^h01re`SA5f44EDez4`?J z=;GJ(a}~Pb$i)~ygi)C0Ma5h1`fYpH{d-Z~(<3Q78zN-dt{hiRnG8jKfb?j z+l`nfdQh!_bDafO4vfU@{h;1`%v=t=H7!9e4$>~7F(GC|c{_Ige&G8*jt?LI@z>|C zPn*VE=_A$!P~b5iDf03Dox{es9^-O6-G0{AIG7(l{~dEl|Hf2Q3#!Qm{c!K;&&5PZ zh{!?{s#T<|=Zq!1Rp)KFzD~k-knO!*MqJvN)Z?aW@p2;U!pw{eTvgnSUYpW#Z3K zN2%_|#+hq8K3}iXUte6AHZ22MS0(}n2rLMjz`pGb4_bbwVSu#!8F4on%A}VZE9UP1F)-SAOmny z1SQf%;{@wi74vIdXP|RorjO@UD93w4FNDDkz!I4dj6||`UakVLV_g%9@Q-%eKH63` zeiJatar@})*I&Q>O5ShxA2$&a(ZsCfjFA8Ztr!u?USIQco3O5{e;jXrymihbaF>`x zZEO1-%K#>{27m(Cg(0Id+x@+Y3865uv@)2I3&W;!=cHU?zr7!Kjn_j)T0>4}P1P-P zD+DQ<=PV;sq10kapEHOkF(V!AT&ZExm_mpNDKd-ursM$A7sYV9!shk->B}XztSXrT zTf$iDOP?LKF$waVwjNB4P*Kb+ss;!PY*aOm@7wK$pZ|{OD;Ekk?#nWZt*hBNpP%7Y z31YClz3cs0Yh;x;gNtal87p(1M2Q{)eV|d11Fa1A5KEmt&)w>00&6cID@%$R=b^G?mc66&V zX9~aDLAcJyrpHHr%W|K;BHZMCl|A>jO*gLfsOzsxN@HPDi2_F5BqM+SzDQ$@cs&?O z62|qoDy3wNs~9=H2nc}@qHOckn+APv9tpY9Wg>8eoY^TD3wQ~10pa2P+?X)J*0TcVbAkr6FdUN=tk|m>wN7SmO|OwYE4}gwm4pBg zW;+66oo?imgdny&Gf^xTq!DsJO3sar1$eFj35=CBiUrcDCc0vxQQ&f724;YaImIBk z*0?fP>k0(}7)juq)Hm!$gkue=%OF-H%r$1!oa1?|vi_F+{eZajS*<~_M>eTVZP`kw zN_&mzYaz1sO%y&n-cefr{;}^pU(PejNBOjIxhHNngk`5+6Wle=Df&3Nl;Ks zG9%pGOjSg9n~&@p@Yf@zx1z6udQm2~z}EWv-)`T(y*(ZbDGh9n;H1`^%-3RWfZX`j z-yqTb>y-O({Pw6ZA&m__r&VT?#d2h-l7~T3+xr8_-OgGo0gE~rQp-TZ#7Z~Yh!oV5 zx%!a~Mq3@gRfUkr2$Ftz4cH%Wbe_PhVPl?YXRP@rXmFqn&+^vf`Fvt6!Qp{KTYvi& z`?vZ!=k+l>5F=yxbD)q55DLT!|4D%`&xt?B6pRu1dY#00FjHP<)@Kn3x2}5u#QC#* z-VrD=%2Kz!woU<+=@-XbHD0Va!{WNu`X%Si2#C$7fym|mSXU5kKqw6E@%8Z&;&tnH z6j>O+#Hg_VQuNX8?|*O7d<|dI_CzR;WmepjI?7H$N5N*#*T|x+`mN#g0A_YSKmPdV zzlQmK+;qPQa#3JOi!hzvA+ej*4cHPv>z`z*IYRiNsOb;+podT|5`RzT#HWHvTQz=Ezt;sFU+bxK^X zs@3J-?I7SADVzk*mlF{F;5%L`ses1PqR0$yexVH=Bp)3pldM0~zpuaVJ6eO-hY zC<~vMpCX6ZI$uv{H-!Dz7Lq_IW)NYT#r#>B;knA&w)4J4As7QMh^MbX%3QJ>5--Hh zwJZu$5CiE@)(+MzmvZ&e%nj)RTV&z>OxUR3F`gm9`z^*=pMN5gf~E~iN36<#qQ(X6 znLJ!gAA03EqW zi>U2F$(#kPds?jIjks|q0|QJOHWRxDV`W2PlmyszOwQK|z%j@?79l{bwJ0!3tQu8G z!K@QGBV?^aoP|b!03GsHG<`l}S(O&FMq06EisuG&L4~8L(D3^8pTEYM-~O*nROgy# zUob7N=j-}f%P}q1q(Xu@Al5T8JRq2u;9uvjKilm$h-;l^O@}IKO6U~KQjsfd)hbGM z9~P)BBNj~ADT}R=NvrCS=8@oA!W!2f{)J!1W7}>Ubw!DSMZz|we-3v~$S!hMOgxrV zoI|!I8fKr8ZKOC@r)8w887+A61M>$J^F8+>EFRmI$K4GzxcSCusnTg#;P3RFPzB6x`t$QOf0dNf(Kbn}T9c&^TT~IX5@=03 zxAX*Z?VW)YgGh@(^^O2}&9MO3%Rk5KbEa*_zR6bCa=W-6fCbO#=24Z2*SZi=v4W{` zWqq(xxkE$>sua4L2MaXi%7Vf|r^p@mI%K96rXEPbRBsgNb)E|=8{M`Yx3|Lmajyq_ z`*vhVMpZuD=t@KtAdp+_9V@{3ez?EZbX^@6dE- zLP)FvqD0<;8j)!$ZN0YJ^520xGa(FrURnmbn$l`j{>pFd&Nr7!^yf@id5PJbK zhl9m>{`!=k4)W{2|8;GqO(ptqzmpJ#&yesGcv7~an^aZ)x~};e29S19yMODA=hw0X zY8qeD?JEtE4(_+UJ+?!rNdzN@r^NNj4x9o|uh+lE3wOOee*7H;vXXIY(14O5V9Xq4 z1er-bKzV#22@@1%HP|!UzGiU)IV+!GRf_=xkE9Y?9#~q+l)26FCyq7!%jZR;AmZ9$ z-a$7&r$S21^cP|Hc>eLfJi&f^!?xi0YmD^DnlFr0u*|cN5o4Xt%BXn}5^yiKWtR3; z5954FUTyxxd@VxC7Gm^bjmN#+VmE$m3+s0ILjvsO_p;(DG}8u>c*#nH8+kUW=W*wR*O?(8v&{xIyL|wS;YLB&Wl>_*LB!ogYZr_Oj5Tvt6C~a8`6t?_4bGt#y z+gPeN6fN432!LE^gawo$d|e&bgsW!OGHzvAfdYpLzat6?YGW4l<&jIc6SP%vU9Wk5 ztk)+oFz+c-1MsS#LZS+;wbGve0<;Nb!Rux0&kb^+G$_PO;4RV#kvpcv2C#1xW2H?| zCF;^}6RFI<=FK#aRGf1}=S|-tim2Zo1Uk>xuz?1eAiB}6ibM^xH|4emKmjNLRRp4D z1J2RUH6y3&-2093Abza?;L&8)tpR{fA;8A(h(PFR6PWh>{ly`3ewsrLd40Ube4(=S ztdgWGVjdW|ppxp9DPQ4SMob=l-246UEz5(j^`p~{PEo=8AYbcg)7;DLbZl<(T>fG= z0xSq*Mzl2S9Z4Cvu}^bLYSKWJ2pi_AG$16(Bw*T);|3yTfrYqnXHjew7ZM^7qg84S zXxLCU++-JNv~k~f?}E72*BmRXSMgSdGOz@bjeS5U+cvDuemnD_e zmO+A8l?a5HX2!I)jgrj*p^7b05g@Y?535EHNRd*MjEE@Ov@=41LPAxC9`A2_^B?Eu zYn;ERzun*7RJ~9uO3ILA+N9e~x3@a}Rr;MPZg-;+$d2gYllMdd$}IPwbb!pRo8ECv zn}qlK@g_X$nF+*N0*pf!L)+T@{_Xbd-nWL@)|}(>XZgiUHN#1?9~u_V&u4us`vXh( z{vU6Df2fpN*vR#n)4o*Z=qbJagqZEf%X#H4FqFh}PvV zYjr9Y>^}+#04m9BrVsF09R0mRVW8@92vAl65-n(3FUecmGUUsbnKP;O_q}If1@#8% zcatzkjSxBVUOE><86dOpsujF%kJhp^g7pi%C-w>&f+l01vyD2 zD^aQ6{^L%-TUXtvp+$u;5-cttWqQj(tSZz?T|5H&@xv?ubkR5D*rg7lGF%!#pH?zxly`B)EB5flPZ37F;-MxHk_jbI| zjgQ+yftIaU%$~Sqm8w#^+dMPAT3{Ugt#wLFeB0}qt?v815!teXj@&j9>{Vo=$_G-E zHtHpX!>)A=iY>ctz3<0wZ%R^_+x=1IK3~N`+3fT4&yPPWrDBd@CC%)0ou?lAzQ?ci zD>;t6Zw8T}+>cFc2}em~d)#i;GlE)UEol_lA~77?2Wu(-3?^o2)d&lFIIW~2RR9zM zZQHlozTIuvvXkUc;myYk2xvkbD5*ke(XH*R#b0Kas^BTgRGr%QO(TIf5JDHis00DZ zA4I>I&*JNN@8M}{jq?c*K}d3MvgTYIO4|y(LflDPOBKi$j1|~v^j;C`>wKPo z6zQ4h+p~^)fnVdIf39uYI{tTlVrX{@d%d1tf6Orn18QcR5K8ip7KsFMaPPqt>GTr6 zKH%q{2|1{EesL5aV2&zIYKRtV6e^gb2xC@pO(JyIcLc%(#K@Q)(}IK!eV+vmUnHpgfk9XSJ4<@bfd%{aXuaSTLG}82 zogbe_M8rtF-*!|DCl&%$7IJ?j%}mAxfG0sU?Vqo&X1R5Z-Uvq+#pL1%l!6EGt?0te zOw>057D3R2DAVip>%YG$SePQyt{2&JmJ|j85H4EH9Oh22smftX*n zt-ohnc3K2ctJd58_6A;S7-(u^B*L&*oWy-=%sbOO+HcdA`ejfBSt5i(g-g{b&t0?C-aY$Sm7--$^4A zD1@PYyy-t_%$Wgw1aJ4O6l85T*>=ET=T(A~d=8s1cJ1wUJKh>I^R<+s001BWNklp9gob7lg))`6r zjmMX-sXHt7Vw$!Dn5;^2iyZGSqH*^q@KmxPxXr7EcsGP##TL=_N{301cU8x?h!O+MdEBD(YsDlaL_yEXR3z{zV&>?1H4{AHVE% zX_p*^=+lOcgbJu6CtyrHVL48#dcf(8Mu&gWsms+58gL@?A-xKNwljPIZIRkHWBWmz1qF{t#!bH z5Au_3`nWikkJ8)DbWhLBM@>) zf!Yp4*g6&lLcibsiaw%B3WlTE%fR$F8Wv>A?WQ|(I{-F9m&8mL+JF_D`f4Bu4Ka42 zUpAfXDCM9$K)tSt=zQ<{5w&7jqYX4T0$pYll(V2Q5hOEGQ-K3wUz!YmuIDQ-`G5i; zXc~`oJ*A0OBOt-tX-@W)_ktaaC4kWjR5Db0{8- z5O)ZDL;qYE?(_g^NzsHz1mI{pii+f}=-N6T-tLXu~)f(amy&(W{1_%R?9>~4%tYKUxzyF{Aku&bU12baP zbG(3nQgN;2zakfOmi7*HY;XN{`TOv6Dl`}j0uZZ`^(yjI}r^8*-wk%`vwgn8_H1|=A^hU`!g-l`PDtNtrNxZjxX zIWX79-u^n+N%ueg%iQz!hUw3U1llP8Ygi4Lx2k5G0Mi3AGl@tVlVubT^~B8084*EA zg19({W<+5?d7!vk8R-w8pe?*6l5|GrJ&Sp@pr_ z=k@WV_j`MPlW1aF`+QzA5@3xN2=9MY_ugJ8O9S^c4c+)1M!IW-Z`~?7~c4ph?AonNEQUJwk#UKt#H`X4CNOd$_(SC0Hey1lTLK0q7ZSFu>sa*l@h@W0nwbg6 z2vtQ?Pdk5k?)v?9e}CKijY%Lg-BA;E=thy9m|7Fsq<{~67nKZ;T+E{VDB>zX2-GN$ z8cx@_Km=mqczZ9DO*SH;$2}rt%{p#J{unc2 zCl@8Yi->G3K{*{&0sz9W8f*#-T#3dBKyPo4y9>f9v~&=FCPlkKRxBIF+g(%`fefKB zaneF&g|dtndZGu`6(8hRCSOo(WwhT(+V6027?dnlCvHVjF@afV2k?BZz>JJoiRB=U zC>7SUs8rLD%rhYpvI2~%D5-4tD)*$!3IIwZ3_Retkw`!UymDIk;cQV$LMFsY6DNqE zvVxi!xu&{t+!EY!0t*0vE2cuYQ;=Wk8Aw=O>pGn_rhwP^@$>oT%lrHHI%_3iB~FQZXFs{ph;jwZ*lb6g;*!s#bgk{9I#du)g1pt%-$STNl-zn*DB zkE8F66TdEaEqTBFcHbGce!JZnFy`_#Vp(JE2RSTARc*u_)@zO@>c)`a6QW}i=qI;! z+>d#5k7|#%_W4Zw8or@Tpar7fh~R=k4U($218G~9wZ0=dHf@jp(OLsFLW=b!wIF89 zY0{)0B0HjFl_N4PBwS{(sO>j+6lWZIBiv0^t;w@ciU8AF!2~-K?$}xD%N9)n$TEA4 z=OAdJ5p!i>@>nx41+faftQ!MMuflbG&S|`NrHM#V4Z+tOHF*m}1R!@`nM4F!#J~v< z1so&hinW3U*o~V4g+N3826Pb&iGyM!;T75F1->&V)Xa#a;)Ieyg+|{I(rF?H@{S0c zRg|Ex&h_;gNTjxdTUvnbax6%q{d*lauB)C`du)t>1dM?jmA1MJYb&X=h!pr^4Er-V zi3PB!XzvKHLScXWXvYujVDl@lwR~}fK!*goY+YCD#ucnu^<@hXKvgm*i6CFspI@Q8 z@3JfrK@6j&*C;bU?)4^~?q42EBvHwsvbW5uR^`?MJd+%bouFyveuH=rW?{?(3IPf) zA=?U^RQe$`J=2{%!7&N6tDq1U95p_xSCS+UlNJjRH@U6Sq9hvYGtd$?tHee-Zy045 zC7`q;i$|J8AQsVvOuVx`G^--!nh_O*7PeM|Urtmg6ozIC#spA?!d;<;Pvkk>qCPQ(WmFsLL(t+O;BQ`WdIf-VnIa& zkY1FOp4!?*_{(e|l5kHfAd_rPUNBqj;B4#iiYO=_gn%4sO`&prCNx4o{{ubCB`_fa zmlafsTL2f`3!TD!CEw-!+oN?b_qZU;yf9NCtpxV#AszW{b6)4a1}O=w*GJwS_aA?M z+yZDIA6vXq6Lnj;rXIR~Z}%fK<&gkkMcTMa5$tdJgDEH_CysU68YdA8?#FxRdKQy`^@WMu+pE+{1Z#)lGs$_**%HOCl5tpx>G(n1e#28qf_ z8$P0rJ=eAV{Apg&JIBmemBIt7X6gT?s*5YPE=-(&wXq<;fUqjTq8JV}8QE(&PStk+ ztu@juJGd@30!S+gk17^8Ql;#IBHD!XBul`fdIh5`S?kNEE4`Km1A$XkAW~;VimKCX z#w_WyZx57PtknR&-T#lT`kP(s!vLr*XiS2&nAK_3{9C@=f=nY zP{ZmP5Ry^TzGznIfpqyyn`{aU{OzrU?6DROV^JghtBDIOrS&Qp(}{W)$T@5aS6c9muYIahiBNI-ylYd56G@xp{?y;#_>(5aG912e}fgG&KpWHLHK zrDads5Y5d&K|~Xo0F@#e0XWpexCbZHfUMR#i9kkCh+S5$#TaYF^ZMm+UeZBik1TxI zHC`9i`bqNf`Ll1WyQVncFCc0=lPTU7iI0=0@BN^D%a~xp2(ayMwBLxU60Wc7`4!TF z0b94nwil4gO?%L5*!h)k`PCA0Sx~Nmpn2PlN82_AFZqPrs6AK=f|t**IUTGF(u3|o zBoOY1shuxKUoVK^1WK(kp0WOtx{z#IOjd3h2#Rv(9_1O}6o^)($e0|CP)Px?aEN77 zX++@m1tLOCtD+F8a}m@zX$5TrM9jbf@Cx6Vg*lbCrcq-e9ipLrdAtED7$f1VGb=%Ph`IST`kmZWvp3)ij{&w_Mh?sOwQ1U67m~vgG_<0<6kUd*U*m%yh5O7Oi zXu|EFr^4&gDyjFf$eDgV$7M*`^hWD)4(MFw2@biFFx?>oFbMNOYJ{+2B%p3v>Af<& z&J>d7)equU$<($W3@A+7o3^*VZNzS?$_gYzRS>g9P$z-z*{Q`{+8)AzjEqo<13;bo zuS*B@gnrd@EWUXV{LFzgVQDvCY|RT70D{8<(Ad5+g>+x8XZ=7^LL5vgi*nb{eE z>6mX*o;9D3KrDxycM!68{rpV#4KTqI#-&i66HDxN~)hpkF_8! z!_P_hXC`Aclq#q~=^H{^Mpm~6k(ZIfBwETU4CeEC{#noGejKP?Da<#Ng&0wHf&hHw zobEGUg8P!YF`*LDo&@J-lC2wNAxzc1^;;$|BLk%Wq&(C7@)v?OVeY#e1sFLKGBey} zl+3m($ivYQh`f+*=mzJ{Y8xD^_A@VlOld;85vEXJIyH~_%qN0gm5OtOK|u5K0-}8k zUyHhk0IXMDADLbxSOn=vn24|Q!v__ts72StIkPCYO}YnUlFWJed?97fJQq~H?Ceap z-jej`D|}X^)?#MAPWI=W^>B~1CSkE=;vf&oS}>~=omjoe=9i5$Xdqb20OD%4Y(Zr; zhGK|(;kxEpk?rx@K|~pu=}3jhX_bbVizw2(YOyS^E&hsyOJX7dVGsw&HY>lFl}Ny6 z2_eF?bCd~*l;?HLFGgihbRaH9mPT2nPAysiwhlsh+IUvLb(0EjIcsJd5WREZEBfqcNoWrht97*aWJUP)|N%~?=R zw3XgSnx|DZW^$hnnCirIXo~;{K*Y>Lx@zCSvq<6AZ#UN*=Cj6aLrlyx0cuGg-Gy3M zOFn@Ogt1D1QKXQmh(SoR%(4C0VadJ`l20qk@?rLbs+=|^Hr!Zn!h#xAg5x2D^T0tToH-^%aN zUhUmHg%)FXQHa$J>EGXe&~{@kUo$dmi}cQA{K#SeM{KCA6MaVJWX`j1`|*B25c(o=K!Jo3Kx)sA^Mtdt4e3GDL3+Uz08*VOO)lh) zxDgCxOle(_+ljeFJ;I+Yp2RN-h$Ju{elsBRv~c^&_Iy^@RLH#BeiBIrOQds8@D13uL&SY1`g-|T7YvrKWgQEKT@a=3SdsdsNm!UkP)0zURAGI6UOI-cawIUU!Mw3 zOIp0Q!W-{?3y4&ZJiIutx@3(Adc9!FgdXr5@l4q5`tbFM*qD$o3j*x0QRSb6jL;}O zGp&FExDa_~YAliNV|`W{Adbm_wYSE?iJo|G*ix=?Kv8KZSO}a;Apee-=u@N>awP(9 zm4Y2J;yS;GI>Vc2HcF?Sh2a8#qFseTGqQr4KE5Atoj*UrAQ=D|VVS*15aoMd11^M& zILAb!-r6Blwnk=hBKcemTJ zN%J$@rx#?>SYDq*#j*39&~uGIcc=*P8cza(qv=jiN@x}3pILljxdhJYyd5I@^qC#r zx4$9uoFn2^+9H{Fdpy|L&(j0|sW4S#1MQ_Mum&ce5Qo<(1;j;-^8-HT+;-X;ZT)5u zbDn_CxUZ)JoD`X!dTc;~kWd_k=2V!>n9vfP0m7RDHwd;7=Pb;;Cjf*Gx68MItd1z0 zP-a(PW<_RRI^H9Sp3wK5y9 zbuJ+$5@cqTTQPFGlPdb>IM0aUh5`r6mQfV{KTYqJBuA1gS+cxT&D=c#KxWbHCYt`3 z{co(hZ&d<_2zN76Re8(@Xm%kiEOL&-`tlmQHITChg3y!Xz6t5AtZr-06slxo7cpt6 z3J#_d70)OT%Sv9?XNrvLFnZ|2GKZxU+N6{!VRPt^%~Z7}Bz;ZH>+&_%b$`17szkT< z_c!7-=CMvLEhdOqt6ayze*dqB)p7oQ$EuP^yctueCtH&ylGy*sm08tr%SEBQr*r7E zW~MSVYekJt#`;%OQU-}Lo7heFo#*R3zL-*a1)&zP{%AL#N`;!7^E!vz8X5Pw&QLPa z9#uYAz}7|e!A#c@7p}Ub3d|lC2ZLmeNs-ZBNNMy)WwIO6&%9(7bIR68DzBBZ%!C9h z4n!b|6P`1?N(zOVRXqd}lA05lu^joUU@Xlx0)z94Yn;K_f{^v~$3eQT>#H=aiir?1 z{F*)}#A8|Sv}najAB?*Iy8^_o;gQiyOB)Fp?M0DA94cFgILCdzO-(U8Iv*;Rmk^6= z^ia=OBePXe4b10^sJCs2@zTz@%3rQq_b{j0?wsrWZQpgrNbo8$zT9hsHR0PFXK+}* zJ$h@2@PsexZ%pF2h{4{0b0@C-$CxXFbnm8=ad{^7@12B%)*4r3v2E;-f;6@_Z5}vD zGm8i!%D_sP*v_>eg4RPoXaZ&eHB`cgiG*U22KReG?k3Fi#}Vo0%kFGl#0A;HSXJsh zWTno8P&8$BDu@uRL7<#GYA`jpLs)C8E7Pd>lgXhrF8F-5n_6cUm2DGuMv*nHw3G-7 z64%8dLO+s!NBvW7B0Z{D(Kn-f^R-)#Dq72nRC>E@xAt~l*J{Utva9f~7P0ydHg$ge z1J&WN`ePUKRZh?P1?Xl%0i8bA{32K;rw<2ULV@w|k$e08KmTiQJ&%=FlnR(qq6jsr z>&(1R)V56l%Ho)XU`H_*1SSEjV`(N|-&lyLPtaHvWA+Gi&+RMiAG4opOzIWby zY*k0qs?q=|a-C2q6`tq9jKUagMe!Py#Su?H=CwpfsjvEsmosDXtVIRG#an z>{2jJqmGdBi{Y)Cl}HvV8!=Zs)P+h2Lu=+3uXq*hDYuf*`qpaixnNUe7bvSzZC7v^ z+=mYmtR^$4Nt1@=?pdVUo1Ysuq;f1W0b3Q5>Al+xSbcXdrF4{+wyx&xt0rml_`5I~ zFO(FOf;#I;-ps(aR8~&H1~4SEmiRh2j=j%VBs;wWFKaVfwicn-vP1P$t=8MnuG!B%-eO}8yqj@MZ(T#GBrr1kHm3OcOA+9Pwt^$KbXugu|D zC2CHona%4Z;+*10mSExnMvQfqkcjE+Z$&aPf))Tva6{^pP_@QNQlVn{c$;%MrTVPG znpKO_uHG8kgL!-05S3hvqB(wh4u;06C7IqRuq%2!G|yMH-qKgRUP~a_ByH2S_3|7! z+wGyH^Xns#iOO|Ug0l(lX;;+Qfc?i`-+p}SW^+6X3zh5o<;5;*UH>`8=>7g(e~@;s zOoRL6I85(F!d(bdmAI**=NRrw86f5DM~46t01C<5UReYXJWo(o9qGl&+qb`Cthk;m zqog|&da;NSCp)vzO^bbA5i{ITPWEjhis<j;2Pb`f zK0{(Rqa^1QOUPZQVgMbgK$NeRz({ABN+Zd{PbMl8CTGtc1X_jPh;;98 za9pb@IM6;AmMdzV>7&j>-y|kSB3nsXYoJ?A%8={)5+Q4w`;4`UksJ~O*(*d{n#RI2 z2h`sCCZTsIXDs$zc4L+9NhDb@&$^zqCS$vA_q}Z__RezSHZVq<_Y@)3)*sBEoE2Fa zf#KBo_I+cT3v6b_tEM2^y-GD!7N2IE%Eh}GMFwa?D+5%1M67W=U)RV)#V*QG7s7*A z)hsbr=Dw-jQrbo&Z3Rz+Wd8r8>x3HC%K7m{b@l!hP=zayw2C}mdP!}aEV-CCfbnZA zSL~Y~^W)#gG3WSXRTcIeu|#c4!;Ge90!vZrxR#R(>GoZ@2S2@*&rz@C!n!F}ElRLJ z5U`oFUSB*vv^~(OH#T__MnqgI+`)xVEdT^HMHj-OzipLNoLxU6_aZAPk`mi(zjvxi zN*dF+I%ApLxNjAMfUH63L_~Y1#@Z%8ZLt7NHkP|m-np}CN8M}xfy}H$#O5p3i$uj5 z(Ob^%sObQ&OWDZwOkyChYNVR=N8dK7<>T<66fUAZ-9@*)?~yAC)}Tas#W;NhMV@nA zaZPd&**EQMRaq#3SVak)B$W$CuBQXrww;{e$`uv{fcEx^zJ{rRPByMVor88Y*6W3EuMsI3E)?KCGv%T%^5eoW zip49|bxAYuB2v_eIFV<@;)tSNi#1#}Wf}GQXXgLTlRZ7xt5Wp-uDEArYLp|3vOdEd zXVQ2Ug_o}Ug1pZ4zqWXQSURYx0@5O8`XqE|doPmEVJe;eqM9*ghH&#nYrfXJuF9%0 zA>22UTELl5YX91AT|`h*K$V&z56<)W_x0cLd%Wd*w(Uo=YYj&><^V^ba-w1^(L%;} zMJ80i8z_BBK?#Leb1mSt4B}8e~ z$T{arO~@W~M)*-xp2ixjH+N)};fq!YwkC%8o4ecggVQ2Eh>Oaa?YJ4z|L}jtS)S0Y zprS~lEt?as3dEV5m+rz@^Y~gdb$eseZNCdQkP%6U(0%jDh#VEF#ZFAh`<6h2s72qK zAT61(sW(n3W?&}#Vy#MJO{<8?+MuJMz<))Gm3SVBux2a6B@7Z*ja*DZt5p!Tt!fu zJm(zy)@*wd-Bg|VGVZBB-qs7}I{X^zx^8BnOnsxoANF;8KC@zM4Z3qJWsuS=0^eX zqqs%w%TqFl61AAQsC$VR@0*L^9LLvZXzR*INM^4W*t0SSIsgD507*naR0;wl6}5s8 zQCTDrW2;oOPLezpViOW5>$WyDqWfzO_Ss=fT$?HuuCJt8xsK0YeR~tLIOGa zoa^;+l2Wa#;1k84lNGBfR$vE#DUr-+yqTh?$zy+1na4S0Dp8BbuJKU0@oCS_~e6g>(Z~vW+;BD`^>RQ9T|NXDO{vT?eufFa3 zV-GK`$^Dkb6x38Q2GqhSR~F6}eJTtf=Tb$)NG{Sn|9mx)$CRj*>kEsNnc`V+_JkUW z|71ZS7#3CljkwlztP1USP636gDxw02uRv8W7fP41sV{o{O7OHjNyhox&yP}}5g2RA zB(S)FB1*kpiJ5V$n3YMbi6wiMEPq`wA;d-ql1xT8m9raO^Ngpv7H(Xh$qCUqJ_}C= zqLR5eqmG}EizCbrxIi{FS%c>1$+obDXcOHdu3S|lR4z-36L}(RHF9B*1GI^jv8Sd_BdJ_#WOButfUS%mxx1Ct#Isd$27lpE5w{`>!B?Ov12BO@~Yh*J_GP><82bm_Xj*8C6ecWh$*AJ>+Rz|!}>ZQthW zDoWvYUZ3t^jbTKhz`356GqV_uG3UqhQg(7Nd2tOWYxRRo0WNPbv@Mo>Gb8@?FyD+p7vauj+sdJ~|jV>DN^YHck{y*RD0xJfv zbKk!4bb|uoF}zIpfqWMKET8P@l3=`Ba({k_iA`ASGDxrN+iP zWdu#2XacC(Leq<>k|nO7>S`tmp};M{mQSK0VYR!FArZ;TuNc38rXbw!nL$O_dn=U; z+JvCXN35iLXcI!N1<}24J^ZXWfsVG+4724ri<)UKo{?NWlUPlJS8%grPIt;I76@sp z2wEegDkc9cSJV(fp#-Th{P^^B5TK{JDptbxwb5jw4Uzs9nW}Hb2 zd`lnq@4CJH;1w%=n||xt7L{BZ;^*@md7;>tSSrQzjvSL@@5k@wfBx_PO{RU{+%qC| zzgdTI2diJtxlV@kYg;_BvVoF@XHgNX7a#t7Az1HVmL{`OOH{Wc;<}hPz)8dHRJ4QyuH3+~USC;f4H;i! zu2hES{93UFODCbqO!~!}QNQo)R?$`rS;H>|39O`*Zsudl zE4VpJGP2taCbKT|E%I!3%(DW;>0`c}Xtx&U>Di69niq_jU^7dwaQQRGac=MLegCW7 zZPwfP{D&7n9syw$1F@;TW#*r4oy*KTt)Sea80RHIu{g`qPQ1QQ918^W&nkVG-GWLL!81l$*nNZ%6%bb*-d0``vQ_M^5WG}pjoZ>6wk0O zbV!uxhN`G3+A526n)UL5d7=?zm0M!Nde(TQBxGOSnrt`QPycwv(RYq(e0&V#i)#^# zLK!TLNfxTp$La*8(4E`+Gdqq01o;j>9kOyOkhd!MiC9Iy_vJIIq4 zxCPG~F2NjetgMeC)&y*ZrVP^FtnY94&6?;Y2J(Tb%!&X>yZUidlYSGM*ORX0W-pt7 zKQ$P$idSYvc4}v}6_-#bH3zF1G0$8}xDe*A)LzWJ*5VkB1!7SUn94*ssN9z!LNr+= zV$lp$Wt5QcRw&A|6$&tw$k4iLP*LE&FUsVBWGGGz9(tmYGo{5ak%?JN|^*N znbCKNTjdFq@J?ib37IIb#b72js0&V(*P4@JraVcIk?Y_>#+f8aYFw10q0Xd|Z)`T_ zzrTKdJl@~9ZHZwL2l*=+t1*4W68clZfQfv4{qN7u>+5LW-rf+NQCV&Jnh{nkovD$z z5;2$8YDqanOqkhGR}#@BlO}03F(EA&TN6sp$aL;u%n>!_OR!rv=uMJJYyr}tsZIc; zM3N+D3--!M^p z_>2O$_F7-gi?=)HM~o2=I+H8g{;jWx1xU0X|D%;4U7E3a7QwUP$hC7*(36=&nx9W! ziwdovb|(EHykySBQoL<}5|FfeyR%Sd;-qmFIRRYI&f1s-R^iBA#Hs$TX4P)zS}zt( zW)C`nQJ`kqTeDIcRvTb9lmi%7}2TB=PhT+**4%f|Qwi z5sNLvKIg>cq!2mtdd}Nl``&p3+%t`KYq4@Qvc|;9H*Gs`g}ZQ+l)P`k_qHb3BN4H0 zHx})|q(XG*oaKq@e8uynT}64VrmQzH z-?!e$*I0AANuxarK4w<9D0%W+k6rrqa96fhJ4>f#p3mRIHW(4H5C!E5Xw|)N5=}UI zV^z%z$b;_1!MQT7L)b)|7$WavyDkhLubSq?q_4q;Wiyy;(h*+~Gm84CjZ~$J;_r02 zNOm<-mtQQsMxn<@5m}d+R4wuY1T#}Z&g`b zPK`?2mZZW&fN|62j+L2?d#T;)3>aEZf1Nl$oPGPjtdSoz@8sJ0;>|H2^(_#IQTfKg zB@`*f+zM^D3#fM~X3FZ->`ikuSPGm{u8H9@73736R4}oB^;{Db=dU=GaBG`jS5R6? zL0RvQH=5^lych-L&MDe@#`*l`ncDj56G%2^WJvIt!w< zai(THlzLJY87h(}m*>oO-=Upj7?_hUnxJ7_*_0f1`_AnhnK3?#cB#tc31%~GT5vrx znbVv@N$!bJGuT^-fDF{irjUtl(`JNIGDTEOM@ddXORU7Xjs;&ENl_A3ZzS6uOdO#H zvn;uL+hKfj`5t22oXWAnBSNX7C>X@agl4TZU4y~7T2``}8u@a>fE;rGX{L>+mbO-1 zYb)7ko3s*Zg0euX%&&{r7uDvAI9J+&y{q)*^QTTq5*ByrI$tQ2dd zqE~N{WSPE*#cZQ)dgt5jiF{sJuhKMqhzKiJkrGrD(>>C5+4o1w{~@%9)_LSOPwBzh zDjTZ6o7~>IGIudrP56u)i=*_ohO#*^iKz9e?mnYTw6Tmvi>g;p&DTSu;Klmfr;n>8cGBmynXw zHCJLhe~;IPuDz{IBw!KCz?%t2t}$m^ivU)wHQX0*XHS=>Wb3em3SLq*RI4*3RWK!% zM1|7)$A?A)@$Ip5wH0;ZLK73cQ&%yKd}kI@8S|*BE)473cCS2+@dvKSU*jvu9-ys{MZ4rN4wNbXW=GMsF$ zB&Hi>n>NYtz@AORbHkMtk!bht{q4^CTU{UG;z!K2XwlXbD$ApW8gb=|u&Oug9WmB5 z=UA+!(9BsgGdv?1j>=eZb+-GRs>2Vk)v>a5$-COUkXSE9o3jXF_nY22p&S=iacZ`i zp_x`Cx*O8Rm06Fn$O>e6`pS*6QcL%DQLfv}bn(S`PeSIxYRZ%xGg)p$NJMi9?$z}N z_f_T1B*d*U2H2~|;q!>d%0!&4xy+0_*L7b1fVR%Nkw5+ARiv)15RUco9M$f(Zq@JF zyXGfcao5`5Ha?)*gbm6jaIIBzBW^o~sojDGm-AMMW@?<7XtGuDbZi!sJ$Mrf^WO*u)NF13ik>xg|%E=ZzlBaNGazRRjMLF7?m|Xk0I<^hQl&$Hb_`25X zbS3FTh+xKKg5t&-=ss#@`6cVfRJz&T*hts4#&w{vD3ObMtvcnRDw*t*18WhATZ>Bc zgEyplonM42*U2}r4Vd?mEQ)muv|_mlKbSws9(r$_!>4oW#8wmA_F%K+gic&AwqhSb zJxRsqBlYv9sUQP)(5$?OZeX!a$>dzhW-0-3dDC@NP=+D+dOb5;xU06T<#WOe?Ixl( z^U8(G<{It?JG_m8V6`X)sE88ZPyq?+4<*bqT_SZckh*odMalVfux_fAL1m5Dohzwg zULJvcUo!OkZ>oF7!tsd_*qH#Tf@%5m9Ee79u*qziZg7q|izj#`C-TU3j4MUn8CTLT zjt+DVCo`so7TIp^MG7je$%O>l?QJtFP_C7;V4ajg zg?KM6s)B7HLDRzXDlxec5y_zqpaljZ*L92|8*hDow7U}T1X4kpmr7A<=#@zL_Er!r z%<%L2BE1=h($GXyHNEk6qwri2TovfL*-jM|=M-{l)Z^FG>5Ji68?lAP z8|S6;O1>{w_X&cU$+lSoMJ1SYmA3@|lcFFXxlsfpVM0W?W_c1(vQ~B#)B|~5QI!?B zl9)wy%x`O*c_{bUui8$m@Yne!SE8C11KtmR9DI7yjfldZJRJQlIcCb&|d zY-^p@a0EzhU2eduJZeVP36UBoLNp=ijGE7{bw#{I!_91mR5(FWC8@5E7%yb3^xP-(}~TeM9!>n6k_i}lC%_kHhCQ`#~%ikLZBc(b*t z^=w^tudFzpGy@3<*te|9*WZO+Qp^ zCVe9ovGgb~$Oo?9fK+K#qMnoyUO}H&ch$Fw$@7|*gM)T>Qms^9o)L)UMJ|OCpjm$o z1UjpcjPP0L*|##O5e9?hnnxBlc5uzlbDU4w14?rW zRaI1V@890+?QfC-3A<;wS0M|U;Z-S^Xa1@6=HZWT)@~+`1XrzfEE>uCP3}q@Y^{<> zV7E<(Yy3s*yh%9|zKT4#aZhS$xBn8#h|8y=O6{IA$9ZyZwKl9z#}i~Yh~Y4e^5C^@ zz3E-t{XDb1HEnWTA4gmZF+Z3Hw3DAI0z>$PLBmvtL~kB5*NLnob+0&2T}nL4K|&!2 zSHqF(a%;SGrN%s%vg)QPOjbmEemOF4cV#Y5X&do?#gZMi%-twV1a^z`HM z6c<}f5T^=z&hrc%o3?VLZDidu?#-^v-XUHDogj*sU*X8=y4_6`CB&kgfutZ6O(arD zB&Bwbh!YS%OOgRe2^K<-jDm6dCb!M1*0G*>AsWI%wdsRc!v~enqPmFCAVnT&hnMjs zJR>3(h*&9mr^!4^dK1cgmYC>6Qq~03{#fqC)!WVx)*xyz z15}OBWGmRhSw*p$WE8V^X@cgqhz5k9s>Gb_)|ktm?slW?tx6#aNtGGltI8mtWTmP{ za%x7Rv2hhhnfskH%EuVB)?hd-7ICr28P21&O^Y#p9^)eIL>^UYy-_Tm86ku!&tt9Y z=R!qVMV<&&+itss7O~f;T+Bpu<(d&KGP6pwveN7HIelF$54vros0L!gm^@KJ5mm3x zRiW}-EHXuCPyfBnSImryS+Z60;+H)|C{vRnV^s=-)_k77evavow!eMP$5v-xU6B&8 zAkPRcx%J21d68GnOyN~Pm!eA0j zoT#jl+Ta)C8m*QY%rxs-vv4Ko7jp{Jwn=6SkBr4!q`_dNPO;Yd59B5@qagV1^EKIT z_a6wO$Rb_RAW?IzD!~R7_w~AlqKtr^ws~|q(qVWa7%2X#KN{a{+cg4h9zWmBxW5wz!xBCwR&1;^Cf$Ejo zSad7Y;gr?Y2wFm^c?2rPqv9coe%|T)3$}+QiHK0{lR+%pKq4A3vP#-6P?pSF`2fbI zhO)ZGB>+d9YjHhAZwrD2N}uJDe~?`Tn&-Qq?T-^4Tv?#JB zqpmq{Lj`BT9&Fl_1Kl%Odb(r|WaJpbv+Lu|`XXGPFN!El$YOxG6)~;J_ebRq;$of2 z(!fOyaa}T4>Fuu_6P0K^=C#Ju+oM@ah;3RlV+{t1wKpS{YH;7uq3Xh|l9+n+(Cuzw z(lm3iubR_|h2DLgg&@`|8dai3!*9mE}F$RK!_v24O4xVY}b zS!fLeSw-)a#AtfKiHo`{Qj?LOP?0m)MT7tfht4bIhl&EODVg35%#8 znzfJ*9WeZd5(zj<>+CwOD!XKR)LC%yBkD; zvqGllnl&oNLMv{!93x++G%i_G%1eSi(~ZztUW*R0jr?S~NN$o9a_J@-#8SDq7Md)*b%qL+mU5Zwwr~ACf`cm7l^Fr$K-+rsv*tnT3+~2^C_JCx z7ZI^cpdgP!1~5Ql@Ui?f+}?$&Dui=y)l_`U8OL~GfV!qu&xB){2n$BJ zUmsQfh}~5wY$jICh&Ym?>3cOvM1yY1%mc{<_7Ig;>vL7Www77ah07#n=sL3ISrmS_ zv!jaw;a3KOHfF*=jn9fJwYdnvsy-Ho!L(7O6mujmmsF6_} zR`q35$PbQzBjG$aY>H6W_f}SB#5wL}0QAL==rI64s!R7?RK*(A+Yluz;OFS^@ST~3 zj7Q<4V4@%^VPZ@cisFEROi8lHN&Lae;j`Z(;QG z3?yodw8CC-z3fIj4js?d^f+;u`nuomNqux50$fouiW?VaO`3U&EPeah_&1Lsg9s&U z>}4C=C%{@R4VZy$Y~B$NdRT+Z1xXv*DT2fA?X;MajQ388B`ltWI{4tK!tinrAV^11 zNI^(OAxMV|>cXsbc~ssG0?6U91E{LQZov@v3t~qVyFpB25N*nUOrWg_9HQoqiaeCT z2|Q59k>(6=z!M8AOYtLH3Aidp?g%FSA(#mvRX_+N1}F8=5ejw<1W%@+T+#+*QSGEg z0BP@Qy>oBwKUlt@W6QacP|v0y{^iykR?c7GhK(QG(Q#q11bDi;!?KD(PzlBamJ$ZW zes-lE^9B`U;)+ay!N1jrQZv_D>$Y&DXgYGo{Pi!}SL;2^%~qzRZ`MB~|F^2Xi}~*5 zb3=j=a7gdcTkeHk*f!JmW{(N~jz9$8>;+qrsyNLP$;ApRK#|ImaT6kxNNJ-Ca43M} zP?*>SlimKzbrvw{%Sn=$0C@?Ba@1O}=S$(G zt$+cHdq>gof@&lPJQEPG2^~QEyLSdOs2CcG3c&{}gE;3Cbrd0#6-#8vOn`1xD29j` z8S_`#0_DOx>_wSzGio(Caz*(UD_^fDbCR{~rV8LQ@&y?(PJAK&`1Shp&lgqU@gu9C zSeW(DWtOvizHQx^laNUtNU_I({2|Dw5Ed*c9LpkBpHUfqp&}$;M*Z^xsks>uW2?(9 z*^11uS6oYxxgr=dD(3VxK^B8^G0`wE@{F&22W8;+b^@oDS2!UnXaqWP)O7z;=mZ84 z9_{scLD@KezidkvU(@4-#sNgSiSIOAp`)GDq#XAAg5%AtSFOzA_7H75oRk~Ub?sPJ zzW(h@Swa9wD}XVepfFb=AOP)JW*Y)%##_n|VHGqk76LAW`t4wnw6|ZM%NBBDP9_S#>U&yM z%M^$=fyZ^fkab9tPNY)o%j03HV=n&_i9SE7>5V?caJF_vSpaBhE8^x0m;K1krlQvc`b!b3qTKGiv zNG9$CyXp#7PXP+zNmR+yAqmjdg}DM+7Bt3SK;}az;wW)N#lVCj113NoihwY8Rkl&7 z=$jP;FvF`*k(`uTd8`CtIRz!1e8Yx-)u{@Y2s*Z-cdS6Z{|LNr0IFI*#X(#;hy)FA zn{!kF7JqbY)R9x!!dtrCaD4$|lMl>UDrE;wv=@GeZZWo!Wy(8g%C-A>Z7PLA!wyEX~WVIcEciS zi4q=F9T~NvufHylt-b)z4YCh{=k@u^cK~EuKcSeKs=Nt~ z^}aR#AD0I{{-H$t(X}1)qo-Sy7h!FyZDyGJuj5A(Ims*x0lc(wV*L6GAV4J0(26{$ zg#hJxj}u4^FYj0$IWu?)5@H)dr1pvw!!w7lI}dj0zObuehbu68FN^sV?Qu3fDjeHp z09+4HB1q0Oa@;HH%=2-!PUrJ;?LD<6*YA&ki<5_<9t~3%3~auC{_Rjr2LfkJmZMm} zf5n8!my<^TX707*naR3%Z#NQBEXEd00bh3Jlo;17HV zYXbJ-yLRne*l@IgwLqFjgZB$7R*`2hD5>}z`~3zi!4nYEYWmFq)Fj2pBi-ZuP7Kn5 zJaT)9Xq#y>f!enYBoGSbVJ~1HRFVP>aD#`8$7NCsB_;#oC*3R-7_nUej z4ir&syr71bJ7@s%4AD0p+$&~GYk z`!ANw+0+t55?;gvsk_XOPG&Bi4(th0 zqBn0?fQW>M>BgCxb)cM4bNd_OYjo!JMB)cxm|3lzzW_S&cP5K~#tpyO-VH%T00%Eo zA|ybw*!cuDRMd9jwva$#A}OMbJ7WtU{CHq{a7pGx08k|w8G`9q#_f3yXP-7_w%+vs z8>~wgy-zAgK~$jKI>|K(PJu(S#U0!`%RYp~wP!WPLe7 zjRMR7L{u(IVM3R*#agmChW2wD-TmA02v}zCa=`EjUG>P}Rg+0Mq%cJor6F^LLJsaH z4QAVJff9l}vQ{o}X!@f%BW!_|)dGWXWo2#KQU9}jDIghhe%1o0N3EG@6bQ8z*bcAC z@jQrdzJ5hSY6m%rP1QO8WO^mjF$$uZXRTxF~I@yATiJ7~1>Z<`JdLB%LU(+vtV^N!UEA=cgasG>br z-jIIh_1dpif`B3Pq3!#g_nvQJEY7Gbzhi=7?+|1(GYEoyw`7zu@8lGQ%(cQnSdEa0 zk5nGEM`0o{VkR0ouJFthGX$ieG9FYNVPzZmd=6-hk4mFMNINtDHf92YvSg@06+I81 zD%ILU9_`o&tdLt)ycfJV>Xb*FAN89AV^&2#q8f>$BNLKtT<*pNPjVNe@$rD${` zdN@=y8EldEAbMvkmLUXT_sfm?0ZO8ZCd))s7@#gB#-^h>0o?9DpiGgZ`b}$c$d<<@ zZ?HaQeD1wFEMUV&@B6I#z0D%1wSdBT$KqQEd?g-)jOo}^g)%${M8Yk-s23r0;7SaM zT3(*3(oX(yw)1S*k|`FWX9{s8?RynNI}fwU%Hu(L7DGFfQjbcnZBsiEj>-anGFoKP z4uUMP3imh~X=Plou=b`j#B+?%bOBcG+x)t&UkqBD#s8l4Xxga#xwfs>uC=B6zz?Ax zh)DfN>TCv7#>I(TScoiz3P7CRAq|lznJZF+@p`Rk3&!*8$H0Js$%sf2OjIZtRtzg* z1RiIL+H>Zel|2=AfJ1tlwYE^F^AD)RVqjq^=tmT3A{Fd#Q0zJiT2TP&xVrO(gPUT+ z;ptHS;!;>_Zeif|F7=kknHUWX1k>T2;nE73a#N)MD-;{hZIJNfBS{BQ2iQ=&udA>> zjz<#(p)6l7i(r!w0bm9dVWWPqH1tSwVLzV-VuSbvMI@a800khZ2phW@?gUEqv{xB? zF-tW;O!CF{QV?X>_a-Y+CTY3D?Zq9M4&jhCO0yhA&T%wiO;jou0Ugiyb>Fn)&^~?; zSAtVgJ4dlc?6iQ`Q4e8iW8b^NNNE%Tknqs}0jtx_;KfZ&|6$#4pL7cRuEg?Z7Z&Cxv{v1Us zd}g9hjVI89^%%IgEvOPEj&dYm=?R6z5xe%=;>a4OCLv~WJBWxeta{IS)O{B*6;dZL z2xb&&T3#PzCCDIB6jZ{LX1f*=AZ92N2xsgyIV~w1y6)Tp$FrkBy5npNbDi(v=f~DT z2_lI^Juo3!l13Q-wbpb<4u(4-tRRsHddtr{?(6vPKStMZvIurB0$(fUmp^vlg9Qq+ zs<>-{cr1@XZ!ATG9tp%OPr{qvA{?qziJpK^CmncNodb)~C-4Jpat}Seful$s=YWmZ zzu)gLQG)2yWbhlXAt1m^=sdbgVhS;!6VQ#MkeV7PTtLvz{=I^xmt%g_W~8EyDP>pf z4Axd?mQH*m*TTQ+`a1m^5^Vo8Qe@@|qTfhnu>w;{J0dx~m>w)Q22eXH>+(BmM?zLp zfL5_l5*acBvEqO-XsZnT4pdZWom9G1?pR*bL=t9gIvA)a!0Q1VwYD1Yk=5P1KIz)9&Rgc`;}qi}HZFGm)Wi zr#mVyCC0~hCMjH2cWq1?=GPGJ?a0PqxMplyii+IYc_4zzYF%2MnPp*wO{qDqP;AP; z40+NqBLkuN{ySsF)q#YLh-^`8jMlRf_lpFRi}v-dNFfGN)e{IYidzl%fdCkve&^H) zv6v6VPLUbRy;B(|1su2&1+wuDhKdyAV%ogc1?j2{gsI&vMNZ{DD<5SHa%&mKNy=4` z5Sdbm;ctM(e8NBwrurjm?zq84<)M#pig;Oh68}UyeJi#FcJ_g$g+hwu|{zV3UDxUr(h8=CQLe-IOeLZ2)%4=HZAT9NG%H@3z<10 z(nBhXyR;Gz2L;cpBOs&Zj=f%U8A<_Q0dwagx3hrValNK~hbF2ZnCwsp9#ja?w_iqG z;DeiV45$qZNDpkX_5E=_wKYuaT^qnvukc7~dq+Vq&kb3W#3&}2o?4A{-*M+Wj-!hn zIuN;NXgi|_Do`XDK;-7E`}NWrJA z_t(oJp?`nq(5792_kQD%;!os7VvLUjsw4;mijpQYE1z252|UOufU7U~XXJ|>oby%?pRe{in?5TD?HR8xEyNxJ{FX(iM8hbdDn<}t@Y{4x*q!71Bq$$(^Xvc!79YULnJG#Kz?iM zuvmt0mMBQ9nIY8Zz%u(Nr8W@9e>G<_5)>8y=~p5JRmDOfAPSIv9(3Z~6}i?9PL>`{7=T)(mC3uXBdCJcI7CTc-(b_- ze|pAIXDTolgCuIEAx0@tQ}U7f1>kvOMj>eChUBIXX}YYXzXxNc0JNq9$*opd2kxqM za9fl+*I?p7YrQfRW%zZw=kal>w#0;Pm?VT<4mm!Sr}=2Y0)ZgOv3=Esj0#|^&N_l) z+fBkMA9<_O-P+mpsD=$r*q7t;W7xib1$RE0?1LnCEQ=d=&BfXutx3%*d~$!ZLlM=h zd2Fi1C?JR6VVe_RNE(A}$J)8vP)8FqLug|#6M!VrS%HWv3d0G}D+ji4 zwk4pjYLd1V*{K%fg1?jh@Bi!nBoLu;h~hMZ`|EXGJAgOio3IMIOa1aO zSdc173!7Nl^z921C@8rhp}U1wnup&=MckRXGJ8(nUl0cTls*VMs|s*#CM8iM?8(}M zM;kB(1CV$LFaisSbbw0tLMY-$NZ)0V)Jv4K_2c`|I|D^w7BLR#196*evwJOyp!8h6 zm%F_>q?U4N#|A)&F3bP~v8Rea$CS{duLe)9ZKn(>)M?Hu;A6-Uc78;$XBQ)&F zJpmKiSxk@yB19bwtTJ<#xmN%ImajknV0#O$LRt5;_qBihTEG4d^UBZ6g}&qZih23G z_j@Hc4`m({5X$0%o*1^u1N?=fk@7b;CcV@WkEoi4Ce2(e!chg z*S!ABwGlA(r{6EL<@1{F?TEbza*-bN@nDgz+8^3ZYR6OBgG8kji4?bjN+;q5B)K>!N|}N+ZfV_hmv-5oaS$P&DZC?U->(IqN+zjJOULs+fZf$*d)UPi1RoV6D={x zSb+OC{r&?R*8T-mSs<_w*lu^b0+gloK3E&}vvHR)fovkk)CczCQKErCSo?{{3H9{_$}-{%QpR{HSk@m|N2)sW9TGa$h@BSWzHA`fiaS2DyPVP!UlptirP} zDOwh%vhS$<1yr>X5Uhgu5P+g!{C?=>e8u+beq~j8MrMK%BV=X;bd(+y3hq+2cLWd7 zhag~PnY%^!1OZ`Y#j4uZ7q`yTa$Ctq`(vC4Fc9~y>vGV@LJyPzB1Hzqjhn1dVLDcU zCFbuFd#?(Xg0jmq11VaUfL`W^NrBqwhJ9@uwgF1#H%51$S@Z)?~HbguMJPE-oAxRD?OW09uw1XcG7U_~B#OC|{IXw_;3^>RC zT8ZH+Rx6(<$VcZ$_W)Ha$(Vs6+{?>$;auSVN_i4ORAM`@cI=)MgeHjTm#qba%{B55 z91Frd=DI)Kj1O%m=N>*eV|zG~)?S&$c6b!VyKafdASh_cAEHOVYhPbwTN+AX!h4wm z3FN{mX@c5XZ|x9CtwJb<^eB;3VFs##$tV%{I|>USB~Z<}bclh0g_t5#4a;{yRR9o_ z?fH6t`F?*czcZ&WAJN-*o};0gP4}!4RyKPB>B+5QWf4a}nGcTS#-svNn3jfeggK-q zAu#hXU>CxQ%}c5`YVr@}zG1D`5<;$Wc<`YDKowk61)Q9BZGnQfWfh&A-p)hDp}8|N zV_}U%L5_xsKxCGNf>Dc;Tgp3)_C9Wk=ly<+9(sZ?D&?}inVMJzW~Fc6Xh6o>uUb>qe8S(o3TxsX| z9K9iv%A)iQSS+y&(@8V}g+i$%>gK!djo#@%amp%eyWELRAd>QIhkgt$%(YFbi566% z*G{jU0q>bmw~kZgp^qRH04cIsg8YGk6eMNLiL6+#(5=bQ2CSVqWkizsFF;}%n$SU9 zh@~3FLR{tycS9wXDu5(aG}e^XnKY3>JggwYYZt8IfuKd1z8R9aW2nUxIgg~nS0GnHhAj)iQDw1K5F#0Q3d-7Z!q!f> z@wyfvHW5^V@H7)XGI)ReUF`SrIO~H2JcARpQMFo7lyQGv?-@+00Is2f+$-HJ->Z7J zrdZVMT6O~v5WN`-l!0%O(tTP!jj3V-1_)sFoL2k-r{#s}Q~{oe06+wmLRGnAPYg5w zL#M3t2nk=YS8{x{s=KzcejgnflP5)`b>w-i_w@#Cf;-G|D{n6zwb{OA2BxR~npI(6 zNvA!&eQ;GFA#%L;ZwBGGi3hO~EIn3|dd%RTu_>&%9t^13+IhByl2&nsFN-Tsw4nCR z-a!UcV3t4^sf^!Pi3CNnu&cDABFp#htdXtl3{XH|SYX@oudVtIq|91CO$KWt3Bgzn z9?k+xWmcv~XR1AeR{>bifZB*IjI1kTY6l!2L}g$K4%W(r6jD6flas9kHc(th6vXHV z6~^9@sc0{&nsPjWxSHLs^B5J6ntWpNo(P_*2`>p6pT3d5FjYP z7$MWzY*G$y+B6i2F#}{vM0y1_(F3(t zaK0od05`_({Q!c&-hhtH)?5aWO$mDL`S0t`OPUOYL4mBy{DW1Ia`4%DQV}TjLvX{r z3{|mU*~~`AKR$l+anEhx4yo96JjH+>`S{^g0OYnSt<1a*JkJM7rF4{|QD8!(Biw)* zgd~>^qqCkhJx;pgf9WIx{DURn~d|3UoSKXVSfw^#nuv z`JU@nK}j3^I51Yk1X3g`_v>qOW&g(jL@Wo&a)*-e49F%}u?&mPMg#_nf&r);0ap@m zbOy588*9+PogE@_hX=vdhdh2X^ve6oH@sdOT6{eJTZbQvuk;J5B6rRA%6pounaSF) zq%&|sKO8f_C~#3#+!EcX?E-<(her~4xB3ZOXZuKm{!m!Y@`<8&JPCk2jd1hX``I!h z3#8lnn(HoQAQ8gf?nnemXrctv=lfpsogQTY=w`Dj+abh)^ib`kRkW;ntA-I)lhU9d zsoZm~8+?WfH}jX>pBLDh$4TR){j0t%5&4E=Bvb_wdBwIZ7KVUO)w!#DtG*v+qmaFw zq{(Q+$ls3kZA_c#+1daoqLe;31v1R${obFyUaxDyfBXXKtL6N`S{Q3mD8@TpMU=K^|g^uHkB3-%f&4Hh@{h7&} z9ta*rQAvQ(rS8~QK@~T|D;uMAris47tSZpL)7`9QAeL1`8KQH!<6#!fC$!2i$Oi1` z7tC}*R_X{*u-D{Rgm1g!UTb1=pHU^}s`i$C3~dPMwFMyUN*c%`%LFQwmv8hE>|q!# zK+ssFu_ysvF)uWXdbrQESDN^1SJm-{U^}@rNrauml%BB)m04HigRoUIgTnD-3bqXh z1pt6jXC}}&s4!;(I2{3)v#Jp)?Y&U&5EWNy7%Z`qa$6Bs1CE43M@}xOh-!=i2z#%L zl!1XsiAxo^IwBB(8`=>KxP9+>7QWp=SqbhCE!83_?}S);UzZ(pp3g`2Opj!$WSD+! z*v7|*wdc{=%-BLq-80ka8j7z{8XVrcf5?3Ods{ zv8WvNgG4xI_7nRk2bi}R?f`5-9H3R5g%jk#MD}SxPNQ|^U=a?kS0q*p-k-8R z|KhQhuEGtBA_oAXZ_X^R`7@9(RDyz}1i7STEPH)Mpm9$&g*02F%nTK!a@Gwq>e-rle^WyE z!=NC9vvyoNKLL+QZR)L$5|GA#CqfFk$dd_!cYslbZ^ufY6YByGh!$zd5IOgZx>}?W zi7G;RA$BR>cFil?a(h(8n&C5Jm$}`DM1^CV-|aaNkj18d?HK?EcvWqnz!2(y<8W*&)fx(Eti@h(X-@txcH*;9z(OMnvxGLI8anjrsSq zQ=U6=uQviwfzA8%ufN}4e{JS_#$W&XiMv*lpTGV*YUtUp52=>E<4(XTy6UbIQoM+X4ZoenVzNxVxFEi137u1oaa5^D^Cg z&i($lcf8DNjal>MX0V4A!NA#t|I(G zN?PdGc;;t91tJ#EtFsW_T0Z{c-rnLF183yQzZfY^f)vet6>*RT!84L7S<X^Ga^`C+z(uJjzS=qr|F_Bs! zmw8f=oK#X?4rXq#X5m4?NY5t3@U4iGrN1@%0)VCn#W{;A!_P5Ja#+5;3S9Q3(8kww zy*~1<&OBU5a%~S)^y!};!-XEdJ)j*Z(tC6yC^Bvl$X$;HQf0nFxfG=r5Nz$nv`3k* zH9o#ptelmx+~fJQU0Qj1A$4Xfgo4T{B-FOCR3**RubSUB-8L!hTNKP3&#!g*Kl|CQ=P+B;l@Su8 z-?n`_nAp;U8xOD_mkZ5W63PTcfgo5lGmxb9#@`?9TncxoN0cz1gpBxbTu~v~prBw8 zRA4z-X98@-NetnLz*zeVCMm=jNn>8{<;h*|!kjkK?4|4?45(3=nTSp}6|~HrbDCTF zT65%>x!61y7l{z)P4&Wjeh%aXRc69%q6EwUKeG^`YtFLQ%SXlAet)=K*N>lb4PX^$ zih#l?QL`jgLJK`1ChP6k7{&D_5652uX|EwEMj6T8$Jz%=CpG0d48QQZI6clUFZ7DF$<)C`5Dx2{rK&7VMWVI zOmL*K^om!_^u187oI|RCG9xx^nbX%a%K`=@ zf|Iy0DS8!YY6+rH11Aj2Vuii9uq^FqpKsa_#@C#TC_s>PA`XbolZjy2E0!ZkAyp=n z0s&P@Z+b9Ak6go0vtv1+uok!{GNAaFQ4yu)v(OB}86W#bjuV9l1teL)fTL!vWM%G* z07#sI81%@D?&~aGRJ#M3`yx_`f~X+$h?wD2wMpSf$|&O4@wbo;nn6aK+wmQ>$M{h` zLDTn}DAD@0oUkdnI{;MBq*}-xRg9{^9d0%h@y=qHdp8 zZ(Cz6DDdTWWuh;?5RUEJed`!pAuWqL6%d3{yX{#18lPB+2?$)Bsg-@C+aOE}pssgq z7`f6}5D+2K$Mh_OKum-##E`bWKE6I))MYb`_6EUjle<{miVW*j)iSpU%V;3ND+z z5Sg1|#bwxC6$c?cD=80x34+bp%f?0753&Z`J=dbc{ zf4pfz#?utFN|HtesO-wrV5T{kAToE>T`7uyox;U2qzmv?;V6_Y35BvrX4Oa%Y@ESi zi{eY9dFwF^tF(2hp099QiKs<+ek>q4lpSSjD7w}NvnVPrMBMfbVMc1j9e`PyvQwr3 z78UD$myD^N4Mhn!9o!)S%Kz|F3dk}ktdhCknA%8)oEe|BGNrFfUO|M(8-nVc_cY}_ zb66V78*krWJZr@Slkpk*26)){am}A|20{|+cK;^#mgl7T*E&ss3NWm;1ZAea5kUFG zD2nycsj?kF!EiLvc}-8C($u4z2?lTjdTTpiO`=U(n>Mj(;~rQ^R*^!!wJOG?&BD@! zB<33B4OLV`w!N5Yrp-j&bPquj+^94Ou_9xFacz{oY&^&H8P8im`S_8`FI$4ysaGYi zK*Tt&T)}&*gNZ9EnUXSWUTL8>?eJ<#En))P?vMR0aL`%{SONEhnHoUa=tZCiTcTX! z6<@!uwF*P;1WD$zY-uG{rnzdD<2y)s4&?|}pO@g!LboW<2TFMvAjQg6!Q6QJb{u|x z{`}()+752t5S62nn6e16z$y^ZC5uP_yunIj1jhM!jS1ZP_N}!;EOYrxv$Q4^nVN9O zHmfQw?wW#vx=Wuvn;f^>Z?D(Sv7WNsD=F3!GQcxz$ljao=4(t0M}S#yMRFP0^!4@8 z_lIzg9FCs8M2@m+p8t&Xmd9P;2gyzF$)E3mKdy6Dkvo`T6zp%ZOP- zr1>22nt{$8H~!0J%vCZ^$FkPRW;jIH<;c()rdN$&0&7$}Uzefi@%?`EhZGc5+AQp_ z?NC>&rCr*gSlA|#VC1L-kxr3F^U$;`1waS`(`pu%ShO_#tq=2ZAj~q$~!u&m;+WVXyvoVifo>!QiwuSLLN#fZEL`J zkCm3AI8+g3%QPCcR#g2mGQ++rA~}FZ6$@aU>-qe8b#MzNK*DmOF9NKnM0H8*~9+X@-)*O(p=ZC+(*0rooin-PbLkwH0 z(VQrtBAf{(ilYIBgMxs1WMW`)En6jH4_p81nrnOepSQ$#*D4A?02-;d>L7!7X<km6nWDWbCm1wl3d$D{hWWap_!JZM zdu>-ZR|!l&NS}lm03&U}8rNC_n29qS3s5k;p7s-gTYvwu;p54&hd`vUGGGI2Ov{$d zYm~!*MG!@V>1d#&bZpd`*c4E18-Z2cXlqc#5GumhNEC`VDESVJh#)&67UIo_%NFMb zQplz%QCQfiX;&?i0A$TDk;m5GMLz%hV}1Ut%yph?g&n&lSy&#dpy>c;F`n3aKKtcK z4Lac}N_b+1%r*kX*E3-$Q;dx=fd|Hou@$UHBVq_xSE0_5S3Kv(Sredj0yK|>MUV+@ zeCgGNGl3NlkrV-AU11eA%!i}w$6Z+}OX~|*EAEtEX7Tzp2EK%`-`@6HhjmgBVIol= z68FCK?87H#74j?mssLgKDZ~!IMMVjqSPVrgXGKZSS_M_DGZ)`Dfwfq+E*q^YYNdZw z%%}#{itm6)n-sDqBn#BNoO7e&aXT!3{`n(rcHC)Pq6B63=@i@uEQv@r;YE>L9Bg?5 zt&W_4j!}TXJ7KBC9uQQoLIP-UjkJ{;Qx-;9WGr)}emi=TjIkCV3Q0bcNOXd!ttOm8 z3AM%;#WF8I*H%SsE`&o=j#80E2yVkcg;aJWjQg2$e0{EKDnpiJQrO_ONz|GP5r`_U zvMg&(rC7XeJK!;%zrH>{>3+LuYfN+~SOeL)r#J>3L^BFzAb3DllIL=4f}6r%j#fqG z0ga$Xef=!mNOyRVW3Pg`%&9CbV)E^c=^NWjUv5&Ggum7li&;@~#Pi2zynaxJa*FGV z2$HsPgjZ4OMEsA|sNNgGIn7as>mzO&QyLZ+ffp zrN}}6c$ZW_AA_}oh3S#7k{YaF4pqV|OYnFNAH{&mUI^N>Gaw65#_Ub7GwLee!0zGC zq$La%)Y=WPn_uOG#z+7}X`>X9yyBLaRZkoc1zA5tZm}}Zg9#}?n!*-UhJuyp9~Om+ zbo&S0?i71d(qMCn03s786!rwJ@|9~Wf>4HBmiGF~7v}biGV>6<5oOJpskk+68$h7{ z%9Tx(jy?ZUM&V@bxoJCyki1xVgaNm31k+2{Llx4>PAp7?I-3^O8m!20O^4sGe zcee{Tnbj7I`J~EnTXxl~j688r{I&0?ev|F(#zc@ixaXSZ^Lf_T{`UKg9&~+8fS^M1 z*0do2I_(V)%^EOu&Kajv-t{1+o@Mj(%dec61ZC)D5Rt|eFaU^Iwv7`ax%SyYbyadv z>*_1rU$l$R8~D><5j3er#1|MN-~UFIzm^f!JCY|5Qo|tb3=WBra7bquW=Tu|i9)Ul zq?>FF10_cEB5p*4phyG3c}>U(ksjc|Fj~RSza z*^kOS24}^5og~<4uUabsrcw((zhe9(lF#$HF56GX`=a-)?HdQiIM0(jfch_CTBpYX z)dGd8h^RDiMDPJv$?BnT`3gR-%CAoqcQ*vg79r64Z|gdL{`tqYdA&v9Ypo$9C_514 zylf=|U9X?l^-*Cwf{+U}377(x1Oq_enoL9W)&Tm(7P;IjMor-TwjBs-tJ~X}lgy(D zGxN(|KYrZaAC$+8D{JIeUgJ4m*W2-}k)A()`S|SjY>&Sk$J_bypPwIRbUEI(8kX0m z12n{9dd-?J*67f-V+Y;LD+Gl^{8}DXLC}Bm(7)JZw0+ZQ;e&T=_nWr*#_~#zRlu)` z08&Xzz5(6HO>{9AMct^J1etZ9K|L6ZWM3H1XpRcb!JxgnY`E|i-UQjQf<{jodGlaXQ9KE!pF-P}U z#fhRygueG%5ecRv(;ttr=IocD<6?;+E|d5tsd8RsfmAk4V4Vu2fQL1%r}y=jDd zobk^UH|^iQKmOx(m-Jq!C^cR`#*zsvFr~8sAhx(ipD=FWnfL7uRdbYWzv(u1(sG^i zx#ky5=zD9&J1B7xaELHX7&)@B6xFurw+CNPj(V@Tck$YNQFvurCq-k{*?Z%*f`aP z+d2QTaOhrRxHP)G%d+&vECk@NAyCD_fC*3*Ex}O*>K48n%(H67{w#6M!Oaf_v>scP^`p%5fD{FjcGsZ}=v<*S~`TKoXK; zDYzpB047(_Ojs<~_c!hPt)>MTkU}xs%&OK&8|u*rIQ@V~jCMQNX%PqzCqPF8pV!N9 zQ@w3URqPd1^8gCMZq@jJ)|mMFNSBC}oK-#PFy873bYU|shVV>#WmOvodcq2Nt)LQF+ z!fijY^@3Gc_O-a(+M_5?3>HkNK}AzqI&g9dATdD^yti#14>5R)1rK>qq8w>_!F^TPAVg3Gz8u!4#L zD3+xqoh|zESmU|Q=NIEitrZjjV^+9$0Lo;{bd4Mc^ZG|0`03#+*dO0pyDu}ZBxR{s zt13TB0|*wi*qiHd?uo>z?`3MNLza@8>_9NJV%9_hpmtvyQ5&v z3y|7vYrWt?W=&eiow*YQc17uefIb&6fluB@C+MClHA zB5dn)ARIHt=ik9qMr2lUSeyGkDn8j^dKJ#;8-kZ1A=2M=Zo3dJIFyW z-Pt$RT^d4g)68`;kjjo0`keRs(`I+k8ke}Z9AX_Kz=$#l>$&laGWchrD}#J zCH9TeGG7%Gbi1}{jyTH6Akwk90_QvzP>fuR*bFNy6>A{^D@$Wlp@NF1kkSTNjV-LE zCkyRf>+|R5E6?%l^}~VVp~J>`eN8aNy?~YY-sl?FiJ^DBIbP2-LY3e_Nwuk9Zv7x? z=~5W1P$^s24%@tOkqu;KC>-Q6#y|QnU+bN1>aoWT@?s z9m(X1@&YUyVeQ`fwt}vri9p(1dZ&8Ii zb`ZIN!A6a~%Ohdii@{`O%?TeORual^3u89&u5YX*2)I3`YSX zp#T&r!YU|=Mw(0xMeM?j5Yrb|M+U$uKt*JLRTb01JQ$K2CrYt5Ge88yKK-R(SU4D% zkgFwNr|ShYgIa;$`Ksp<=-iirH|`T&4)S*Uz26&*@%r^b=#RI*&Ce&bU3SWR(peT2 zx#nD%c+T4V(T*c=g(VkE9PWnIhthG}9$sD}=ckrptJW$4;=CyRcsHi<#pP4nlCXfH zf*EYh753QP_O7mqL=`UmDBJ-lVFvm+CNeT{-#Z`|$olyD`11#->vp3;>;lphSya84 zFgM+>35gQvwq39l>y7Y$a$7f<3o8*A+1r6sn6V)lP9wY--MfB5!{nPpv6|erp6{3? z;)Gh*Dyu}f-7y_8^nS>WnX{QGx49y0c%fhF(@22wMU`nj3_Pub0QM-rJR`4}dj?7> zw;L8hI&Q=qw!T8h86ls%FsKQTKnf*tLV1Q%LvC3s$2wzl#3>9G>G1?dh)z1VBZ7He z#M{1$;8rMXN!g1-V0z>zMFB$VC547vc0Ry9mtS8$=j-|TIBvZ^SObZW8;8~e%IM6} zSeU=n;ziF*p&xhMGRN@9?6vV$7Sq>q({`)qF)!Jyw&XzahTCcy5Vt6G9^eH~fNMEb zxe{1{Q{WC;2?|*C?rmPww&S*M1U@d96WvdL;+#$6+TI?SFtT{l+v8!^gI>#OcqRl> z(aJ2rF|mN4908ha#fI9i4?92pl(xCY z92bf)U_QT=IrPV}8~X$*xqXv}@{zMm3BV<_W#-cc8WK>FkYUD1KRtv%_dNk)RbbOz z?_LBM>q_E-a~javCC>!BGYLP=-~N`=dQPYai(#jG>T%z;J&B@osjQm~z$%KVVkR9|n%VP*RZ`oy1TqSYpgZ#GxjF~t{9HdBL|Sccccz|~ zU0?a@&mV~iy^XoXuWaO=fBg2l9CDalB6PI-ux05r&bGg|fBX0N{8z1KnP@%k$H?W< zZr(!yd83o?buHRRHE|_S0}fKA{Tu9u+?W?HN@)NiX zw?q4ZTSx*zEwBClU?Pe5lbWL8cskK!MS!qHJ{{jaefoLf_S^Sw-+v?U>nXVw)*wK@ zDnkrPN&shM>?{p9w@RzL#)9c&h%7?8s_eI|f4jdu$N#~%-+%wN-}}8)#{KT`{q6a$ z|N8OA&##C*PGTNro#T9+>DlfF&)YdC-#SI$^VekwZ99770<)FdotSZhwlRw+$=AXh}sE6 z%Mo*w(@_8bAOJ~3K~&Fj!rnHi2I!(9d|#pwfh^K@3}5SVBJRvlMVw&}8BXXa?I%D3 z-$bgkAvLUXI<{cxu#z`A+9B>PYq7q8enUjk7953x{M~1+TPcWr{rSwFY2F}Ax4N_f zWp^nGH&{tV;Hj+yrdyf9roZX_w`nOrHlNR5|NQv;LytppCt;!->*MFY{;#jkl?3zG z7wDE%mS_B0032_Ru7z;p7RQFu`daDcx3^8dy^jHuhIJByZgL#k9CpsruOwqE0>KLQ zNhq-ML$)1wZG9tEB&#G~66t_@L@-4T8w(MIaUe(-vOd40 zkzf;%hMb5C0D(Gc=2~FdZp|WW0dSxi@#W_$Q-2#1Y6(U-!=SY^P_$HPwAY-n{2hd|N8j>bDYmFYCuBg6P`8_ zsi|*m<4m&2$IuZicH?nLO8n1qnBmF_pDqlUNs%I(;6XP_Xw{Kxgfcp;L;x30uB z)hkFS&iV1Le|>(w?%&^ABw(^RvU>$fJ?=y-+a}-^F~;W)OeH5!$qI|J4k4C&g4=S6 ztXQu((t4AGL}W0lf?g81iEL;k|Wxt?JU1u)`=}n1Zdh{@o95(ZBi2k25F+({2CL+xmbmB-5G5mhxaj|c!+g>!2Ed+Ko)fXoPYGgB22W~NsUqW3^U z`oAkEr4lv=_q=F+M(IHX)0~3U9>Tkba0%c> z(8{>R{PKYSV0NwLRKmvTEANefE{)Ol(m#GQd1HDfI>D;&TdC1GiA8Zz0`h|@bN-#U z6SG8?ajp)qZMUP^>-tspXMqK)C6VR=bJ|pT7qkVol8ZG8W*=BK*?yxc739{o@%8ig zJUna1Z3R@CLiy|G*MI%JO@EMGtA(=n{7>v6KqX#?j*2=9x1XV!JRDs+7eybnCK2t4# z_$HMJEQ1}Ik(puzqJ5);7Gw_L270P$5=M?wYL%dIX)v-B#?}}NU{SUf9tDxQV0o9) z2>{vQ>!*Ice0x9v8?U)M(_3w&rjtl#!3KVLz5u)s)ppBl3~4wAV3C4&WhBB!7C5iV zj-Lgn_Ius8!o2m{f`gmmg{W7S1P-)|uSUMf`}>d1nP^BG)b0N92MpNG=g?y)OMSdO z-rEkq!gRac?on-xVdEDI@%E0MYx(fDq*-L=R$3N%?AWpOpzXdj7Iq7aG5mGdUOdMd z$2?5Fwn7LCS|jNnAAhuRhEUtOkNE5R|5_wrSDTDbxg~S&t$9!Q1q>UJNTP%)*gE54 z3zmLK-y!ZP$q8YKL7aBIp3AXp;mg=wn8K>{Ref;>iRm3q*T>yZ9NCLee z1;SuT$$72g6Dve%phOhh9--A7964xVj1Dh$p^+izd@;rvhSXSdy!^J~LA!QoqdS((KR)Rnv*(>pC`!>~I zU*A~DULKWtf&{-731tU=C3MD;Jp21YI*)az(mBt}fM7u?_um{|b3OsRwkB1|l~A|R zcP0hVa8Io>IQZ3W8vt8)U`r2CV`M<)lEh&dR)~=bbf_G-AW^d~PlR6XKLn9&I;;gA z%h9HfbJ;STr4(UG@_PT@wcP=h>^Fc~+g7&U5K&N27z;@9`8DFGO3xU}JUV|}h2HPGM1e%7 zK+BFBAQbOgWzRLwD13=%+5XYmdxm;|NZ-lWzSf!xv6Rwk3#ORkukSzq>tFx<`t=tI zPfaSAO0GCgP4fME@><^L{vVZWGo^Yf06OiJ=UJ@Ry`k*soT27p&F@4it%^%tit%X* z1Y7BM+&U0XMToLxzb}Bn_NUv9mVImB(q^Evr|Do3Q;Q%X1R)FdO09$TtkR!sc&yLd%H=y zr&{Pmi2w@F0K(wg0%~i0XNZ;|fy$J>-5fpebEuW1vqBAq~*`QBzSFTsx#MHA|!w2h;MbFve-u#KE{O*YAMt=HGJ zy!CS19;H1P7^-V{sBnQGAYFlLIDrGY85{_VC`?O;&aeMD{%7|4E&RpnQMM-Nz*wpP zM64Tb9oX5Tu_r8%)=B}UE?Xpp6oA$rTWfaP)~c0Jf~gb&g#)OSt&+4=C1_M;28>?I zDil2+iePQ~?cYA`w-1EKT-0wO9n^2}>O1r()k2e6N z;49C4fBUGl3b<3*E83;3!p%G@*x}0p8&^Y0z*U`n`%%QX zCOX8LreAP*mN%fjz4u-^Bn2D5bf8Gc5%bioui z(-_#L>LLe#0u+gw&WM=yjOQY(<@O;Uf)MtX6E3&P%KjaU+t} zdy!tYDzytzq6U))d%XCVAvOCDk@wsCZEx!AFx_pA-!d*hx3*c0ac_|aes}ZF@7A4~ zKrU2mAptCj;J{$x>+661`q%aRyet=4-EO@|cg@o-Wfhb0dCjWZ>_2{8w;$aj$OpHZ z&)o^tQ@^$LtesKXrD%r5Phot#KeUb*2hg6hIV2^k#_M=h^c8OeO?;^ib7rVX5I)gr zHl`|MVRit_Vg$82)L0n&N=70n-ODZB6?;`mr9~dSCj&UWXy#*5hy^Q z7ixg~v3JLLOH1@9zaHZvwVn=<2V`+#(&+I?5p-?fEgp_oVnt@eQa-gZJIu*bcDBcoY(aol&uxXS_!GVEFo4VMQQf}Ve9h0 zw?rh()Iz9;urgGUI~PQ{)|i&vO4Pk}ZfO@>M=l8pP%KiYAf@@zuoV~poS+EwH-iYv zA)F{-xWcB^fza~=!AQBU7-7Fog< z#yfl8)D7RMko@Q!!m!h7u)(^mGP8ekjFuY=_ zxt12yHsk~%pN6QyCDnjY?u93Ur8J<@C=$BmzN741o0<6({A)aBs{?3J|R0 zUw=Wn^;TmT36-oa2x)$P{~Ge= z6%>#Hw}3R&jPQOdz1Djr1JiZrV3)>)`Cc#+Qfh%9h*;NLP#rPBu(yp$jb+eVzuj#qMY>+Pz5|Nz?vY|(HXNwP zO#lEx_zpEP2Z9q{2xZ! z*ZVG&Z%cTLGoCL(bZ+xBtVz}NigC?(4Fu|2t>wm4NVePK9Y`!^tTBInf{+Jr_;OXE z`+xl2eZ@?FErUg3x^gU+V^pdG&a#hNZ{thH>k5XgWo0MsD=?;)Hvc|Y@`*qIk;366 z!B7%I!Y8GnSw>VAbh1prubi<+h)ODfG$PJgOM2l#ty3DV!(e%asRa^ea2iBLP(&{{ zu@u1F;^}!7@8}so350o8pP40LrYXcmP>7PL6x785zQICgAQsXza8M9?q6E&Fhk0gf zK?s0~vH_6m6_$yTRS4Z2F`^V(lftdu3ZdIDaAtyxBs0eZk<1-5a8a&vy$&$kOIq0c zn)r5?5)Hci{lsb|kb!E*hPhxZ2Lf8uBw5mflMFj`th_Iaan2Y+wUG3}4d_w0#<=Ft zxb;d@fO02pQLJV{Vw6(PHwYWs#IR6|vnww@9YJ}q6KCs#%l&@#poxNJW@ z_S+p1pk_o6aUh)Eb6u0S3}VqG!TQ9ZbL9xrCOeBqD3*^M8EqiLT7rpLa@vN-(h&K* zGpuV~=fDI>n8!N455%qZE*N@EDTHquu;fe%GN++K9GPc2V3;$vz1(hf9NnS-w&OUg zs?-XY9?jx*9k%p~KmPIY+lQ^!HMG?ZntFUkd<7Nv=Q+NfujBLA=QQL3uWO=^aM*R| zOk!SpNx1X!E9alz`t}Wfd~Dv6Xu%nCEW@dW6#ez{ihcC^0}BUuU}5OtJt&%#%5P?F ztkUkk^9KL@|L8npIe_(TuiHja48?SzldDlo$ciqgUt&8;aP|LX_8L((#>Ah62m-{t{Ljsv7!1Or|g+|GHW${9c^~NIZ8W3S%YhZOL zBEnKCP-AWhGiGOB?lVhcf=p1NZV1c6(h{W!cL3)agLAXxzG$cdPech@ETwHNU|GDD zoe+S^n5at8H>$OyF);9rvHEh=IUU)mx`VFT5}`&qmZ?4{Zit(|G{8bU?Ay-MPIba< zhqA@WsmByShh>AMZNMbB+?P{L*Ibt=p&)PIHerdUL;MO8@K!8Kld|3G2FwBOR4bHC z{_&6hgB+at`hNZV^_?YZ#vrJ-?OwM{sqrhtTSsOU*_=%6(%1Q|ab-FzOb)s2N!`@u+TejcCN9N-){5mU6Yw&d z8X`$&aH2mDLW*Lh`vR6u86E+WAql{uMF7K!XlC_H$W#|dpg6j!p?3QA+@0_g-*AjJZ@j zp~#NxYh7T(eCM0te1cvf9YNAgO93N@xpL)5LXc)%D)H88SQ40rCqSVl6afi=LFRyk z@a#3wb(|5)1W1ZtUUB_p>97?>$mC47fC%Dd!V^h=nw{5LPJzsLDLumkeirE>7((^- zR^+z%iCjdQ$c+Vp+^_JVR;BE{HmQL&0<%%)EVb|e0_GjCBSR$ta-|hf*o$yM{>|f) zDR9!%WtaIvGj%`5DXo>(5WS}nhzoKPqOD4)B$69psIOd+>op;QNo@g%+-gIl)eywZ zIZvqBvTc@=&?*a}1zBw+nbEn|O@Us2{+vI5_4n@cT7?YHl3b-5=Q&+Z8!OSqc_gzZfDNRg3IxV-%LNvd83JaZ8n1Ks$o_cT-tP=>et%!D|J%C=Z`Lvi=5-aW zUQRCtAvisind!&x|8URwdd*+2;RojGWg}vCR-c};*G_H$K(M7;vTuy&cA=rUXtlmc zl{#EqGQrFMR0)!?_tv0$EcN99Bab3X#4~g0mrqC$DZuE^hTCC8uZ^vw5)Dwv+dvjA1bHSL6` z5;Qd}Jdk5fgn#AV7WZ;6im`lEt{3%bOMNES7J;rKF$g>OPL=!C!(p9+B!N6JFOwF* zx0)nOB`Ylqx&Qc4D@P)?lj*OCCjEwy>-bl$H!4!zN?8$f+QBgeWx?KV61&b)ww!t$ zZm)HP7iB9apmBW*!0S?*gMhFlPFzouoQedr?b6tEv_#RGfHuKGRqGXOV^qL|Q%*YYBaCKoP*bLK_g9cUr7YGMfrfz1`*aq3L2AsfNuCS#* zkQ|=Dj6_r2AYj>PQ>a>!Wj+uxVueEzxMM8mVw86@D?%hmaArcJcm#O>vO-!e0W9Q) z+Nl&i==dy!h?A3rs1y#oFKD0(Se=rAvJ_Y4abRHf=4i`9q6YYaELbVnIZIiT;E)0m zjFcxZbHU0l$N)wl4EA(_^OznUyS@~_u_UOHaQfz|A{CPK^~=Zg#GM3z!^fq_OKv2X zk^QmX|M&yBBRkBohEk0Vdy!^-y-sJO)^6tA;TzQ1kQr$IfgDVZ;m)jC@`_NXAXqZ- zg@C{vg>#Jg>+@PxYAqC)JYKrST<`bo#!a#S1R)4hwhTdRR966VX+Q3g?1PIKSr&dl3w3!vw(r!T5(tS=HGmr5YD+2LfIAs+cZIB#w>!RVj3fJuaxh- zzoQVPo90SbntE_=Onqx2t$xev^NU$Ek)%ET{f{>WKUaoZz;S#Pse4vTM6VoLnq;t< z7HS~9)>lz43Rq0j;(N&%3o!=^gp#p3rBav&r36ESRNhl={GTqb1 z`GPh2e&hXtdZk?ondTG_yd_uhaKBufr7>?9ZaUIO0vS=;mDx3CP-WZ^*A?>^;bDbY z#;GzLkd?rkS*avb6>P%{2vI$za^r$PZ8;11LkPhZIM$Mwl2UTHSvp_hz9l1}XmI|uyw^&OW+)Hwz`$AhF-__dAwe+CQ9MGms$|)9OwL`ULSO)l6L7#L@5<Cj8-ldowC`JB#7I+7zZ^{`pni4nt>2f9 z<9Tck+Z))uEN`RwB(a7~Gz)_JmSo`ap${3fQ`|Hd?#pg?<9&yylz-wBS8kmezJ{B^N`c z!;BFEiAnL&m{+2PQkpcV^e&xKb%b?a)Db{q`K~Q5vqDulyS~W1ZIH5q_ zAcCk|CctpJUR=I7Ruut1Su3~KB*`TE!YtH!|4Zkyfjx7x?^ zOB3t8GWi%D7Sb}os9_P#X#UiUkSc;ehEi*nqB_Sq(U%AK{7QRBe{fkg9b;lCl1Qi# zkW7?E4o6DbDeWGF@+j;u8@}C zoSc|WhR7asjcJ*Sl8s7;21GqmmPbuBsg--8H>mqZ?@$_umI7!nUav7Dd@!vz`>D(H zKo{waBZMVIY(+vx5cCN+ug=k1gAEO*UEpUrgcmn+Bt%#l3JzX467obO$46$7wmk0< zdlYkWm{fQ{76Xc0e{(H3R&}$APN^F3ET#B@^H{3{#kErS$6b2$mFu)IUPcW{FA%bh z3h5AId|zL!@U87FA_1s;?5q+wXVF}cKtMr51NPW@+VeQ4of^Ktv1~|>f_r!{XhB%i zxbd5rYNl}^bx3qC5!!okYCcja5Fj#{dt?%`>m*y{U8s2mLxEnHM1Ycf0T+e<>f9R{ z&ZOR@IN0k~LEQJoRH)TNE~kQz=k;1k=P_Q-gSy=AHEpyTaA6%|oEIh%yCY16H)jc< zSh9&Co<2|KTo=zpjW7rSY%}s& zr0tJsMoTqeF%nk-T(C0D&B5c*dLns(A!J%XW0D*0JFgLXE+0ss4g^q2OCNwG2^9_u z5>H`p%=CRF5lp1&D~k+(3Ms^3V7O+*Rv)*d*IER9XPV@R+k+(F`YH@YVv7X8fCHmc zBQFpEIO|($-ah|{xp$bq?@W-(*c)ud|)B zwo2(dE=vPl;R&?@h|eQn0PRvI7sy;_D`y>wS$;;i4vPr)LqbctWo1Yh0m!k_8Gc}AR>}$DYtq(^DTiGrfP1WZTo$H<43c)H2q4^^ZX3C@@%bm3DpGXju`xmq3+_q z1p;VF5#$~S8ID4j&eT&f*lQy-n#U+4+vAUrg3SeBd|s)>+wa@1ZniQ39290+t$QVA z*>LJLeyvpDz2APkz3pss9-qEOm@$$b$E)vD1SP!yE=x@phvnvo0N{~S3ro6QU-S6+ zBd!a--W;6%dXxbg;fEm}7ZTB?6wW5NNun<0N-PoA&GGQl! zG-m9j02WK(1Y4dKREZc91u{Si>JF@ckkF-oTR5)-A`KF7-Wd@?%~Y3yE9`meAB>wS zmjdm!uM5|hC^&J~^Q$&!k1dewr8s9wky>kIiuA8R>ZNqM?3$kdQn?5W=1R2V($K}* z;b!`4ITYd(Bp@j=D5bvrsBoRj+;zkSR%txXaS{Y0;VJ|=bh$F15J$L0kmD95jgtPJ zJckoHm+~J>Aj0P8qC(ipTjzu{1_C0IQcJ@unHo5FAwyg8I`K&}Lfv$PA_h~pi0_P= zr6mM<%kB)B_2*DQzxB`MS+=v;ARhg|+q`BrfV1MJiPm*1z*?Atp9&mlH>-Bvem%aYD-I?6b zYDU2LrvD#n90CM|lK@)XQ$oNjdn>#(EL8#&d=U}_;~QgPfJ!{(OG6`zr*F9RR<8U^ zmjay&ajV2#_6C;odj!rjxpjs-o=((fLQ>QB@UJ@KhQ=ZKM!cASE3gC32 zBKPJ5Y`Ia%x-*wz>v>$b(?es<^(??%sugEQk5UtRYCsaAkpNQ#%1jalB=bQi6^pWC zb_eo#xr${ZIs!Or-^-l{md8RUV&fV*!H9vFOI9*}`SXO^M}Ii3XDpcJ=dXV`$g-F1 zAN{^J4m0A0^XE75*7uU*`F$O)^E(}CYyIA-lT83Zb?`vpj8MOP>?xXrVE7#8LDEpR z&>%EIMl4=2741qt!Kgt_0@KxDKH)fgyKNuu2_+`ra-x<99`4yr{q*Y<;W`$=m24t+ zNzes)DbdAvuW(zeYdouUPWN+W%GkOJaDpUALNcvk`u%I3FRxTF5%Y|VFDbwG(nH6< zE)g8FM=v!#TZIWEK4GnO<#Aa6L+c9y{!T+QJ&8KjaP^q6V~Q=ZB|6U6=OMQrfBdii zWLJA${G%|6XE8wx;-v}7NR$WiE{R$1z&+RbcN~zOejdQz5Y+)hO5_%CK{m%5aCkd`sDK(r)gv@?sh^BM_*$n zzd_63!+fPXUYzTdcJ*?{p_ZAoh}fkO`U`jVp0=8yX%#TaL^1mD{70BAC-M z|1Kv7xjNyCx4k{?gu&8-#ExfN3Zc%{q?N647FaMd7>Goe7$O}%qLq?Hfu-y^J(h?3 zIPur``72%ft+E>V%+BBmS501#l(f=9m>7U}sO6(icM{O0myVc*HmD@y!U$xcRqg9c z@b=b#nJ^t?X%?}xguF2kg(5(KV9K<*uJv{PTmW1j4Cs0Q*FXMfSY2b~3e)R(p26Gg ztpdh8Sh{TmGuhAK>*Nq>l_iUOaIV+a=jYd_#?hp(w046&UV1)MXn%kEx5tmIS1KSS zZH}oiJ?$h7|N8pNW60b8xpho;AJgF1d7VL7_Lhw3pk`31Ltkfj>{JS4wvSC(w|T9x z>s)gk&~R^$G_y5X2q8U@Bw1*y@3xFfks_6#i0SlS lEHlMoAAmQ?;kB|F1cf%Ec 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∾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 TvwMgv00000NkvXXu0mjfDn4E* literal 0 HcmV?d00001 diff --git a/test/board_images_png/st1611.png b/test/board_images_png/st1611.png new file mode 100644 index 0000000000000000000000000000000000000000..be7e3ec16585921815038fc59d66fee0d44c8b40 GIT binary patch literal 367171 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μ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๾)@MT3$gaxzwG&dn@g)dyBsDihbuy_ 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 P00000NkvXXu0mjfZOBWp literal 0 HcmV?d00001 diff --git a/test/board_images_png/st1840.png b/test/board_images_png/st1840.png new file mode 100644 index 0000000000000000000000000000000000000000..b6036430c0a5e945d992a3287d2489ca9f15bb29 GIT binary patch literal 377937 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�SJ(dT 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�#4knq25}wN!)b6V5pVlo}I(sX}-b>1X3Rl z-ozH!vnVnni~UnLVzKYdg37^d6eKeM%L+5YGU*@66x$++wNqwh3PUBzfBCvkU)O$v zAJkQ-Yi(}(+qdZ#Q@rnMCAA?_MOhN%t*LPbaR;erRoYtjmy%T>VrYibkYXfD?@!7* zhchdaV>Z--xZneeXpACTq%!$8&!@nkk$d+h=at0$`TZM0tL>^BWZ52^@gfTRf!x9= z#Zc{C>=Kx9@4ZLao@7jUfzTd!Obg(sZ+5eDn=X>8d*7 z%RTy-RkA6x5g4316Up3b)4`DTe5;GH^3f*yzT&+42oh=>$e_~RfIcrP)m?A7U z-4)eow28_cmK&wMpo2a>(ji#BuGYu%m_d#jv^!TMzesKdSYT@*#_Jf|jYzc7!^VXc zu~&K@gZ!tN?NaH#3Y=U@!>w{h8>rT@hSEk6Q=`TVF^gjA#|U}5bJk0;p%PjoD29(} zO_5J-roCzF>s%gBi-MPEkhWODcd1f|P*3fx`(r-7W!Clee;xbz?Jvh{glsfr&LtO^ zvIPmX(dp*6n2+b&;nGUL5vuA{*L`e*NO)t8L6F*^ zJ&#^QlxEVYDAJ()DKe6k_OkUZp}VvqMcQZ&JbJ6Hgqj(aW)^82N7tm50w#)T4>7y) zZP}Rhcc&1n?Rkj!_8ZBJhw5zOy$U|U0h>1(_H9$^SvFo#k-CnD)>Os!g08_I3; zG5`2mrq%tG$VzWr^q4B@`_^i+e_;CDo7`QCbx;H)7d4{t`N-0utEh8*z`PBfkx*e}sq^c)b{3@8GEKWGer+p@(*C*S&zWOV z7#AxKX7W^#mK4}krCcnWYYvhzlF|~q6K~H4$#d!ggMcu1R>#{3JN1%ebg=AgRo8{wMQ4OKn5 z42~^kHC{L*%)HvsDbM%2IyA`MUo;2JK}DRDnZAig#%M~9px^34uCi>5D`Pu?q%kcOE$iYXyT89kD}zpD!Ezs>;m^klRSXX&fFUKcgu-q z1S^AR<35YY26U0x=KbAhyJTHv3Q>o28-snQNQHT{udmVAw<)A=0X3 zfMZf+?~zQaiBfL@Li8dMM$3}8ZPks=s>Gus%=SCEM&~XqB|@dLlRr9B`8!t^8BHC6P^E{8A?PzJo|x`^I}^o$H6KVqbwq^ z^L7-4Hs7Kw%=(+DW^9g4scA|0OnH*A%dh?Gj_Y>XD-4SoD}+(3<0;=^w)UMW3f)23 znFw9P3i<2j*ScM`+$~7bV|`g5`;^!IHeWNF6nD{xz?KU zwBm>A!Ids5<&7Kkqi}Ij#4*_!x|6T`7xSsd!vbPb?Sr($UEoQqgqB042PqSGRuUFY zAUCuEJ9Cf-vsX4y)3&`FqDXjJmN>v#VcYht7rP56bZm-Vp2g|J$^fSkaVj&~t5*7z*}Nf|*bI~aa57xJ;~TJ|gOea_w`e`Dt0PR;GQomx8}@-C<^ zvioc8JCg|TAOq9laHHDhCga=d8-pnm3fEq)J_lh@VcU!)Y^@31hk$aQghwfVD zU$=wafm);#1+x75x{d7^t>9db&Mk36xJV-mw|}_>)oc^2G^b?TcIkXRJFH@T-mvpp z7qeCnQDR>nCPYYtbT$PDa#98r(^NuBOB5w})(P*y!(@9hS^f@wdwM~&vGU2P$M=un z$L(?5vCbXK-U#Qrp%KxB)1sytMH<~RszY>I5TSUbSBP>sc3w!N3Aa#HLlNDyi_n5M zR{|~EK~Qb4hZYrfq-kVQ+}rB9@3`D`m)!1MFsherpcV-%0c_$!<&m}b&LVPq+jX%_)N8N%I)AJc=Z_z< zMaLLSv~KrA6=fvJr6GW3nl@1=Dyli`)u?^@pn9C=`@DXZLYe#L4{1Y(`o78(GqJ2r zW0@?PQC=d%R2J&xCec-ByLseuRMK{P2^GrjEqj}^YR%(*U-yefa=e44Qh_-t9run& z>&^N0t@pY1`GuxQBp{DuVq!#^-@B^vcITjmu)MU=S7lE@MkWs{xRqm{@pYbCFqg?~ z_tRWh1 z&4SW2KxE3kR~Y&j$h9*(QLR7axA~&basQSB_wvX@MhZH~N8)pTIgexf`HlUpXeEzI z6yMx1nkXNr*ym+_oUkr<9F*4CNv61ht%x1IPH* zL#N1~GGHE$-Y1d(YeV2Y(zB9vq{Vf8LAcXMrkX+QednD`rG_N&%F;o|k*_}{@N7+# zk|=3^GUa%D>uttaCT~zhRw*%6?OhcT9k(=1CECBf+*X!DjcHX5q9g5sZ_p!~X?w#v zyRe+$nKv`Y0>ofZltZt5_KYCFIah#c5Gm`gMn?phdw)Hp&sVkAi_U9*U0?hB;b|%Z zh5fGZo4-GsPJ$45Mi`7M%yL)n%#F+9;<&Yc7)jiBo;%@4CsjR|J@%c&i$$TWV$`m% zulv^*7_1Fh*@Qb#O!Y7fOd--VDsXH*-)m9`QF0?@Dqmk4VZtQ+a6dio-)&IPSI>u* zuuxA*Zd9E>Ns*g~j*cq6Vi1cq0re3P6~A~@mV|KF%|#HdAgM(X6=0A3-gn)-5031- zEI#s_vEKbb)Wgh+G>i!rXq;5*x^^))k`|F%SLU+avmyK{7fPx~s&=pNpC>Unb&xX` z6VL8;)B3c^AJ69?OogN5TGP?GRISEbU~@Mr>hm?9Vt-$3ul8bxThJJd5oy7cJen7z z5<2!qnUA)dm_^X?y<8(6ukUlxzU_UP+!P`wz>&NzKNGr|{gZZ)LK<;xBCi_m0&-Qc z%k27WEvg9F?$c%J{GIISU;|cA2HhQUif$(fBrci$E#5< z`;6rA5M;NnXYgA`u{iY%vo!6rC&jMo-o)dBwdL2l40<#msERwNIBh$e!G49U%$8(3 zaR)eEpeJosOXmQ+J*7ujdK8T>&zvmmXPlvRp$?th6~S!j^RJNDLb zNL^Caj>esGXLQO4vDDeYh#i@Ym~xT1QA-%^b*gBzhiH`VwRe%C(XNg1g5O?_P{N=| zJr*vCi$a`Wci; z>%GawC!-H}WVt7Q^fqP0h}^MQ+ZaTiAlVU*5jvjL4zZJv?vK3|NGPM~&Q5^HE+);& z`!+(y*eXf<0bk(VJFk-xPUy)h9L#LmRJrMq+$%PSlD|8y?LXlu)k*)a#)W!pIS`goO~)4lEb%IUK;zQ3Ry z?OPbB3d=((Sg|DCehPKZ%2<3yf+ItC_BoOFdEOT__UpYiwdX_hu108`M}2=V*T@~! zu+EIVz1Ow#*XPmo^)ZP*IR&KGeYx$)qsgb|X+hdX@kX{rtty>*l_N`9FI3j;zH1wZ zi%B;XTRZ}ozAN`Gt|Y2!iT0#f_A{vV^%4`bj*j^!tJ8vrN z0(bsHG_c>{Blac_0t1{v(v-P@r>%?h!W<>4ufe?86MAq9L7}L;?EG5G;AN$v!a~1& zsY_I5A1sfjGsxV{SC+^1&V7sOoZl6~+_eeSpoTslL`Ag@2LJ#d07*naRC>!ND)U}Z zQpl>fee`TRa-(veWW=_RJbe%uL;yBtk;&wXB zM(a4n@|Cc_m12Vae9Qr26*-Pr27=It#gV|$otCOxx`~Cmcv2mhM4aLgLDHK(+*ZMr z`cb}vf+Io97G6uT)MQ)_6>WXMp%o##bc2%s!jP-N!H)3A?$r#*`+rwFUCkjwz zYOpg)=Un$XZFV^#8ZxD#UO0tPeQ@g_+g`%D#VOW^e#3w6b6w}V&DRi> z)}EU0>*q;2+LP^a;UcBjy?3vOPD449!BpGGJQR#M8PzNG)f?bdCDMDjv4UGKkBtj9 zB)ODXkH}r{Hov{7q4D$h=CwfCoIQfkL=M(yB-KXIR&~-Tv=gWQK3f}@+}X+2b>Ht& zVrXM+Mv%3FWzuZ`yj7hHlrYT0xX5+A(tr>ek%MzpGu4 z)+@pOCT$s0RY?+MO%6O?6cOrFZ_B}Le*A^CH-LPz`mP!dp@&lGJHTAM_aFsT)xK_v z>rM79q_CDQMNwx+YvZE?TGZyp*Z#Wi&y_9f4`JJA<<+Q}gJS6lO6P&g8x`M|O zeBE^AnP1rJ=bSXC0bPr@23bb^kiz%Bejgvl`#n(YTqlu_d1&t{M*zfYFhu^a9!A#T zjU9k+D}=M~)Nk38zFX&}s_4$_cSC)M@F;`A>EPd+#qWk}*DAX07MT!mEYZ0ESfn=N zOZLt5lBRPC`P%y$jn<0&E-Fj2z#vsnNGGtsjmSGm_CNFJRCiEfDS`DUVUsA)PUi1i z|N8p*zyIUQmPsq+s9uXAKyNxw20>% zr(g3pzKIqK9WsvNuc}Mo5Qu=#K^YxcC|h*aCMhg^XK`%?fyCO7C&>qOYs5OZ^(#X~ zGkm$J9-U~(|N4LbAEHbMq&I2$=qjVJ=oF1YWj3NDimeABm&G3QAwZT>p=@VZ1m!9S zcV$}lz3#WIq&0hH7T4?m);snFnXr%nW)+4qlu#&oZzL3z@V#%lcaR||g4VvhEQ<2p zai42*mh^DjtIQh_P%O@M=f2C0GSayS#KmywEWwS4%Jy2K+Eoy502z<-$LIg~kN+gq z*K10VDyXnezysW=UR;4@M2ZlytW1yC`?mKN%8|9cey!M^Sv-OH_4&i#&% z3PjXcMnkcTW4>N!pR@AK0Mqj4GSM5rfH)?(55aXg-f za%WK)Q-?AILLm%x(IM^0y%kkxAK(AI|M}OXu(Ph68PTMdu;ZB8+}Hc-s{|k+Ac#$f zAlP#L`uuwT@aXI9Uq7z&7Kt#gK!6gw&vM`6_3`cFZz8;H?-e?xJSUa~DG`f#F%_4a z2|!A}e*HM#XT-JqB4H{)>(m6Lv$6Ij#U#l?AFZ`9GbFCfk`S_3xsf$Xfpli+GN`|@ zqjEDb6qOA|B+w>QQiaUU^l-(d1aTHcdh8T*>YP!Oni)~fM8u=fkjpEp9dpiE(y4UJ zXZtt^@Bi=b|M)+Dzuhy^oT`uKe9Src&lmsOU%!8U9(MoZ{<>b@p8x%Se)}K){o`+c zJ|Ewo$G2|+)zPVq+tASzBa`GgAJ5+OnW^DG^=v>?cVST{6qu?@??nhxq#C;mhK@EF zTqT3J7eV>pHl0%j^{)T?RDFH>u(fv*Gxb(Yg_MZ02;NyS%cFAfoX~##h(lk;^CcCr z(ra_4#`Ej8ub)4qT2$OzH@M>NIDoO2b@?@pBb2yA^-*FxsA;nZ$5d{WT*Az?ziu)F zxl>8fGQa)epizUmp;4?OEvdd_s2q=4x5vr7Bekf5GlGa3bFdVJhjAOJ4@+-M=t_tP z$r7fl$+wYt6lIU(_5LBk=&8M~oeqB-0t&2^_Uk%#$*My4{?fp%!QM7pI; zRZ{NyROZ&xpMTbM@oTili|j4fM#Fc?%*P*pQxdXM3Bn9U@&FjQ%Y$P!75&&~)4frw zOs*rZbA$!JTRd}-6+GRdv-#k4Vf{2BZ}ZpI!>cGfF-VFvysEt1|9_h9U00iA>k{&q zhlt3`cO9x~@BV)T5_otmwS&Yh;I`A3fP=yHf`>t?_o1r3wca-~BjyR?+uTGf5Mll$qhhu{@bsK<6SN9j)1ImYL9A+!)NLq5`WnqVBkfVqicNETa=wGovEN z(TMxH=<-u!+lR{N#M*P2t^4vQbS74gVz(KH);E3hlH9gW$R6uCUtRXk{!7!i5yEW? z(8>!0n!fONzzFHrnTSf8%UNHok)byqrRjz)n)Zwew4kYXiHA}SD7 zp}-}iD$!Uvt2Tz0fZ11+N9BEyf^`yN((%4B-XOD?DoK|qR9CGvS+dB>_x)oWoeJ#Tg4V{^ccw49&Uy81M|+THhf}%E zoE6S!YrX9Dgqp*1B_Z(E_cnG`86dNb%C*8*M)-ZW^$-?fHuUigys z==8Agl15A{4y^P=DHvn_{QU3!$2vY9ty5V;E~fszZA+E~P)5a>9K}uw0-+QM0!HTy zzb{gL>@Mt@hTCBEj8>m>Vk)CF|yl=z@%hn`P^|6((j<+jxI#-%rjI z+@1jM9P3^$NO|$JZ&-D6JVb?#t*tx4qv=I+tY^&Y_lQawm4C9OQxVh9_oN0&(P&JR z2Op|!`t>5eQ@eZByaHXY_bvFhw>C9x#)JL3{l`BdfI5zy>pgugSxd)9>4Wo`5gCbc z(YL~$H3<~9vMiUCEAgX=LzBXNBj|27S4I(|RZ^}jz9#Bw@15irN|9Q1WoFz)9aNZR z3C`;~V+B8wn8*RHkhZ1*u^&U!tY%zPlaoMPL$aept0ZYra0Z3Xh#=MMT-S@?h@Ie| zisbpHuk%OI*^f=p2&4h`jO(=XPm=b293W%_;VcK!*m`^HpEe%TUxjsJwCzndWia?L z{o9|Bo{5`Kd40d0?eUlY@aXxf__}BK99^@-4G25&;C2Vb$$FJ&r8 zq6S~6EW;g_%3EJD`8o;0edXmV0s&qeF<-BY(YKHF$3H7K-}g>TgjZcP<1g>OjsNLb z5i7#(h+J7&yNpM|p1{7p@7pG$Hz5+{tp|BS5&6V&-Mc-1{Ql?t%X;t9N+M6M75(F* zZ9%7HH$_qJ}d1Q$0ljvR-g`^RGG{G?{l}?mBT;@i#VI* zbp6($8*Rc85$TK65=}5f>&O5isxv7QN~#qjM}s$9-bdRXZns8pt7Y7d{rIaaLpE*F zll67~{feh?C&|$VykZ#>WeKrw%NgPX@lIz{JwkIX0H!ecI*0nNZ^K@%is>Z=ESw$G+D(4cht`2unvM zqe@0omJO?ihz$J^)8e*Ij}`}hCn|NX!JufHw+eETaO-2J{aO@snWSv`KH zOYhdQ0LLX4M=A^WailV>)6XD(9DT&LVqOhCZ~I=}vda}4bUYZ5zNR$ty6wE2x{xpm zofBJGo$H!&ei)8zBr~k@p$t!8?JtT$J0qUY3>aP9ty5^F{4) zn^Dw<>e1JY!aBwST%sV_fD+*(0y%q0-4m~xj5{ln8pk=4l{53cmpR3(ghx^94Ja>8 zRx>TTzJGlG@kcv;8;AP!ZMPp|&~`diIF=>KD8i<}F76a>kWh0G(E)CoL?%~J+ma&Z zSBZJ)@n|3W?%smunsOWA@skXwMiREJFiLUbRMia`MTIr*@L+_GLA}?3(mQ6(Vk59U4-P1iY z=1G)(h$s|R7R>)^t*4b}zPxm6K+)0w@ zc93(w%#^zLW%r#;W@KL9Q}3cZh03GnJV7h93!V&4l^!8Cm#9T%p>-;ou&cGbZ+n+C zGia#2xzkI3ytns$?99Y-HHWrsYqOD-95o0;jXNtxrH}|B(?DA?fl5@%#L|LT>44lt z8WTypJ^oVby5mK?DeV#EZbifuYn_dELSr#~G$}Y5s<&E&8FAMg!4<805P7w2Ym)92 zwCUC~s*1R2!|q8|lj_bIB}4oUzfNdtT?BxQarF0pr{eo{ef>FaL;v?7V{nL)GbK7V zN(xG8qDZL%vCtMVfdZ)17Bs-2;TH9WWY_HP@1NS{J!N@Dc&ugpej9I6GFu8BIrEh7 z>8aR}iL|WC=XZr5<@@`*0w5nukB<*20ii~XE+6#BZHu~o{NuTznfwl0+V$H$JLymn zQHW|IuA_811Cfwi*stqM|K3?eq{1b>vu2LnvvWcpjpm)NbHSO$w!cA$xn*nT{AVSV zpV#+4kkz-Hu&}DSf>uQ*8cabE;tj&pFFxJt4c)?h6=kuV-{BCU$tIAF(McdNg32=In`XRTE;opMd2QpIdUWE2bnv9 z?P?^`{k&cgMUjYtNjCDeESR$v=iu^*|{Ra zn`~o~te|wQEYhm@*_e%_yl>u5)t<>OJWpFq+Q%Dx{)hhoOqV^!M<0j!qy#Nn%Edc# zR7DHs^;(sawKeKc9$SxPcHLJb7sRg&R9Iz(^?^g0WNNG>G>bS(vXYD7T*<_HZ<7(6 z1H6+IDkFc+l@Cu+9=n>|?jZ1FknC?vTWj8@Ki7pmWLM5=Bsw5+dh3mRe`8M`UunGuOla=zm%%|sZ^qsd==S}t2x6wb2 z?ejN%EbgJ>tzOTJmkUP;f}3vrEwhNUSp`nYK(qIW;uDzAb?O*giPmqIpP_apk3tzUm4+6 zNTyzL)Rw>WF7O;}a(hc|sPL6`|G~w@tW*HN3H9K_ok&5`(VOs)q=@I5cJs#RM6J>- zEum$LwKzDe{3q*~8HMSrL-;4O+1{%5`}JeZ=lOcJxA7nU*Z=t2=P$>;fhzB&8nO+7 zlh3eT0Lw<0Oq?Vd)lIYLwzF)u{X=%W*Y_;e?Q8=~`*BE;`mAZs05P}TisLV9&SVk% zR{jbWVJh5~?Dg0-v{t^5;U$pcH<7Lc9^LH{F#qMhZ+)cygAVODw&UURnQPhWrQ2Tp zk(`PgOspk$gU1~RSkO!|1_e`=PS4ql2D`VUwsbDlF0+Vj_Kt-uCFNy|9=wcJ(%0^k4 zlUP#V3S`E4t=rIvsB1N8Z#zqWy}r)tOADNg$G%a!!e6gvUYG7$C_|pb#`Gbyg*bs8 z+m;x2_4FTW&hu&#kwMT#af)WI9aGi4ag`L)Bx?vgIxEEtOKQ@0;m%a0d!j3w`;C~y z3eE5YQZ%)xh$PJC;zVVP#!#(>Ts^ZgtIUQ|Y>nd_{jCkT{`Pk)+W)dk70GZzFKQ}6 zNsX`KPRcYxWox5}S9ED)8d*dj)&qRNFC?KVGUwEuicLvcdRD9oC0B@N#=Pb_&&t}~ z&`0C8?SswBRu~N8s7zAmW^t|i3J(Tw0n}8Wh`skDjf=Gk%3WI9DrxVQB^J)p9HK&d zSIY{DOaMi2ltmje;G{dKEqi9&m2{Vpj>kcri}I1g$+7u6wNTW9$obBEZQJARy^hZ= zqpb;9z4gDaGSi~qP5ZWG*Y2UHO00VeS}q{!l#%m%DX6tkw8&WY58VJ#&=3$+cUl|j zu!sB~|M`E(%q+KR0YthNbL&|vGGzN?sNJFa+xGF%WmjnsXDu2KCY8a1TSMEmw~tQh zMZ~1%oXMBRiXj3kJM(rBABu0Ctk{kq*x1bgI)%wSLQ zJFq+}t*U&eF!!PYWb1unV(AUFU*CWH`2BBRKZ0a?|MmT^za77Rd~64+%*M%`xTq#a zQYwV0qZQZzDi)7Gp@A#H(zSHoSs$5HDU_N)=}HV4)Y~Rasc{83Lb#Fy$)Jn6w((J7 zHL$$qVg1Oy%F>1)aqW#BU>_pW15PzhX{{0KA5ve zOZrNKDp~^y%DH8hmvdAE82}bZp%l^ni}G7BaX*ME{33`#3S4o;bq72Ff-^X$&*hFx zLPD5RdWUQok!hrTNK=liD(cJ(QWj_{qFw?%w$>?&vOn5JDn$aSR95W&x{X;TDjT<~ z^u+ppo`3$g3fuRO$NR5iA5B?=n4whKWZ!$!PHk_3M$XkO5KUMp@3rpqY@{q)n^JF0 z_tE;$)XcInmY=SBL6ck6phVV{6|OAG?Bamwzl5?(gE^9_>}UT1l9V9NJLUyaP-A8= z33Dq5CCf%UpvwC%eLu$IxGuYYJh#scD!8L76KCVCi3&C8dv6#WDqXp8>nvTVs5BE! zI{J1z#(uPcA+oihEQgnRVJIm_MiMEj0?Ht4WDJ}4>uCTfkQ0@l^vVTPm#(deN@c~o z-9bCkplJw0#Jv`A?Si$u#@P4A_7l=zrc6MEHlSY?EwbSAgY1|8eHn0 zx@jLBx0f%WP5L`EVlrYTDdtYPSJgaMj*&?FIv@M~7+YGn1d}qcd1gU2QYEMoy8zo5 zLwQ98h>D3?DHV;z0<6^P@1yTZ*m~bdnvk@%kH`L6rD1pH#=Wy4jPC1B+>48yDueku zjnlM(?d6flYCsS_*obKr99E(NC#0oD{Crt)RKxao(Bjkbny(!qsa2G76bf}+cNcA2 zo0&;D5Ce%)s60Sj`pqs;qQqrP)G;d7N~W|3ZjL}+%A%@7sEL{`l_Uq!Nvafy8);Oe zbf|R61!hoIMY`v_ea)IhDXhktSp}$SInVMW?@fAX6eH0+40&779c}bGV|~BY<)Lki zy>$h7%axdcRA|JVgba1cK1jgJ;Yb$G$ncPK*UD@MiK5KRwd?4*QnFI0qh8?-dw`!{ z2z8VjlyvI?Jup1ym2G?5^fP9L8pEn2px5)6f6i|@J)ir&O&MX>nzn|xUom4GTWbnl z%!lrM>Wl!lM;F7IG<69QH*a?jMjot`%T|Gel^9){5>SoOuJmXZbEP{IU}cl=q5ZF% z-(IU1Z4d3oqx##^eqZ+w9{YA|s5N6tC?f~}Q_ji)8k3TnQb-`j))j$vO7H5L#i0*( z^=y&O=d3Cosl3N*XJ)r&qe75f1a)SlyfZ^^H8Cgpsm>5<6;@d9&Yifr1VT{s5MK~Y zoA68bcV=~aYHMg4XC5+6;^%ew(gO5$SCCKIjRcH%9{RR%O`trAMkEUdXKF2G8{ zYfw;;Y2S=&+dp5i-UTyi(K-k)^{T1L@rkb@}wnET{wh>VJd}4 zQ3aoqH@aG{tK?ztgJ)skTG_K|gVAc9$>HLC%7j+eJ_L6JatITL2A6Jq)Z?0vfPhId z>#W!!yGTUg;!>3zZp^iJVM2>xoI~`Q3q6P*>)S(Subj7+EpW1Ql_*~np(@lxXxQ@N zQbtRQk~r^bNeQmn=vvdJbL$64e7y<@p`c*N#6U&VPcfAg1P#=eFM>C&3ktAtc%BVF zR-#jrS6mUUs{o`(7E2{M7V1s33mY*Q+x_GD{rxxox9aVEc|@&(!y5=ptmxPh$|V^Y zB29dS0if`(jLsnx5ro(6=efvB-CK`IITu1V{?HK}^ZcsSW|2xYg48|l7qXXbCdt$z z^M(%*_0o_*;!vCAlozUl6YgPZnFKHwgtR}{Bh1ML7iUXCQLRMC@#v+&pHLZXACmrd zbB(NbaB&u5x!-=?_j#N7Xn8z7_V-U&=Xt$W)6sR?-zq%Ur5%jpETTNQarL)i&YX;1 z*rP0Bu@2fhFE4B=*+wDDE4jC!(qgFQtfyUm-B%?Pi)2=ais;BzJdSq;z3y*M+4Wt8 zw4qbkT`MzAs=XIXXOJV&OV9SiU<~^05 z1u9O0B~Ol#9hKA1g>eUZISoWcS@7To$^ZZ$07*naR8HnrZk|D1I-bfw?I3C)UZvdL zr(a=K+9;6GwWvJ&zHBD8PL^?*%Fw}KiR5KpUuRm${-#$v=e&B`-@2lfixfKIie*btf{Bs*D3`!0LA=NpIt1{A- zn^POgLa3&cR&8|(%dY5;UaR1XRN8hVld7^_3F7EUR+SzR**Xq6EFw8JX)~m=eCWf4 zvaQRf7w=4C#dOrp?E0F1mc2_JphoPzm>LO{+Q!(Z*+$EauUGKkigJ6UO^+1uuRm^O z`pQOKcGYyPf!Z5`1m37WVuAU4KcGCA-)ZD^Pw_U!?y5C!=}l$a&--NyojYY371HM2 zv4KjZ1iIETE8zmKNMr3%B;i3h*D0LAsBmc#*}|%9#=NT%kRgL47cI(BFwQ%Itwg!? zR?uk+F{Nt+wE&DjbHC(9b)uLQK?0EEy}r)1&1kw_7jg+GWuOBpV|%DY)Fg0GvK!P1 zpa~5S7G*Zth2}*oM`0C3dwaYcol>t=fF8mO1nK3Twg_y!mSvskJ(Y5Jo=9d0hd5>O z$Uw26uKMX3yK}*4D<>cu-agn1s7&W~mI!HJpqBXR!A0MCZANzV)O?}hWwxJ^2#5qW+AMf(Ks=~3!&rf_3>*+3$XXJ$| zz|55?ej7F)Lt2HW?&H|qkah|b2sP>o!?6o}Va%u{9<vtWUo+4O-dH!>fy!O*jL@p(dg~*7aBs^;0hopyF!WA z?F<_7j!O8<0D@5}?o`liFF4A$HH%%{hc;kDO-TWDFo|E^fBe_`>+HuN%Cw%K3fp3q z#g|Re`N(*kud_z`{PpwDy_(EL>w0bb82bf`>sI(9f-iQ;jOqq)i zX`O>5ol)gc<%)r7pjW}mn8OMhnUpUEUis zfpzNrTJ4=9+CA6(^_0{kpUYR1oxr8c?fS}&xgCQYiTsy{U#$uh7A&mLSQP@@l2R)w zphb!Uk;JjG*PVjpaYNqsYUYj%rEfR;#GG>L@;p{LtV@D@+<6hKRqbnBLC-q`AQ1V5QD+9HV>0nVwLb;{KC1o&LMHC81?y;9Vr5wsgdkR6tz~vc z+~LlIy|ufkL91 z9&O*Xkyf=vfN6q@qMw zp{OdZ*IM)CWvI$kVOA8|*tWr(g^1-VX02IuT@)7vp;v3P?>j3zmRpRs$Jlp?7=6?J zHrF)!=^qrwS8u%fM=%r&jr1#_V*VfzX z^&`DE*#TqW^lmHR$({iZH;Jlj0ZaCRWpFx3einaGi55{5UTaO4F2t0#aYdGAc{X8r zY*`iN#R32E^;}mQ{UJoL(qnl!B0Rh@k$`1JUeC4e;}Ca<;5 zY3XkFeckSaaqLdJ7CK_C7YU7+v`|}9hb35&=1n9$0c6sQaPw=K!_FvMwz8yHP=uc= zGhr(znjDHmdaL7g&v~s?3M{fSsE=*LlFVf7ZdXzXBY7w(Bf*GrP_?mZlCQeGASJRa zFJ7H2lV8pqvX9;wb%$KOC-ZhxA*vKrlwV0LD#82bZx3LlSHgv5^g(J-UY4~^xFvUy zB~fKzwpf(96avvfl{i7YQfRR>in`;RfvRdfNb>TPH+4_~VHF5yi=Qzp#x8xd@~SB6 zm6uiU9B$KbLKq;WOY%Y~NI=Lat!o2R`VBXq^EvH4GlvdBWGr6L;h^wvR@r0&!Qwe@ zyD@fTRATgotlp0OQPL8gw65#<F zZ(Aer>+6gals^+q*Xz58GHVR)beLC$jU*D8=JWjieqAkym{!}R50)g7t#wsW-;s#f?7l%g}D=RItObtC2UNA z1Zt&__E8DTwaV+X>_vT2Rm?4dN}@&U4$fNWwTgU+$nkh=>!DpmMs{`k;sw$el&O8& z-^bfw_eCbcn`aXE@!8YA>iHe4Yib|k?epXMalc+)W3z1>m9Fe&mTR=nRy}biSI=5r z6PIkDsqK0FdEeiaAw&cN$Zyo(+Jz95)7(^4mAss2RIc!UGPL&{)Fd^L>;7TWKujJ% zjgG5HRM&}V=Sf*dZ-WMpmOYrz`lfA>UEAQ9_jAUe7MVaA-2H9-UTfONRNkWFOSlbyqEBu?Ti! z?KQfv>E;9_`>_bIiYf{%%!{hBk%wno)H4=k-Js>^MB{k-9+yhZissv@*HwY(XLCmd~x3@>z8kY!z z)k}vEBh!iuD@k=f+Gt5!AO^cv1|Wx%I3-F&G=aqwuqa7=Qxz2gjXqc;k&&nhqCgR< zGV2bmu(k39PD+ck+ig`9PWDB_;W6*a?>lp4Ty@>|@|R`6IHQoHXrjnqET$r_tR_q( zA*5ZnOTmLy&3nGSzSAxIvh$xsr?emmkrJx1l_gC_+7jeGRJ0u`W&V8LndPy*{_&6R z->)cC=sn|F=VfyRXUQ@)BkfczK_tmYTZrjb*-fGVQ_OO+*K!A~N%QtpPv&HH6js)x zbOthYy{^me{iE&sR)!K8$9}*5`SttX0dZCm=@e$^*3;*mGtq=cRXhLu`tkdp2_D*& zlgoWxj1ah8Mji!^^6ePgp-oF0C16n%6va`(%LxJ~rms2Ynzinj=_@EAGFMpm8MPpd zh>%{)iHM32R~RB9CuIqki2%)Fpcn{y)$8dYF}*y}R$LPWPe)oG0O!gD5WBK8(MA=C zs6_h7#HvSlWfn7KkvruDp9U@lyu#~38B+xp%V5z!p`-$w5bl+|v_~N=qzf^)iY7n5 zpO&xQTBEK^EQRWv0KP-0V2O*cjsB3{xxH`4ulvU@47#s%8fVz`=MSRs%fCN<{Oxal z{?qzHIkP6ARjC*C^jy!=EwVD!>W}U1-+n3P`xUSo>6u;{RD#3|^E(=(1gPNAYTqj| zt|t)S74w3HnT3x8`SpymQdmf_5@myuxy+v7bKj3&e?9uXGpKO{GO+f>Z8Qw7p8!~+ zEKL`wY^(`dzRV)boUWQzt``{8j!u&wWFrjdPpBd!Q*?xaEBaz4hk44#9Dpp+_@~s~1}7P_ig3xf3WXX~Y-@ zwVbB4m+jZjmc8Fi4^XtqyE;=K!%Yt(3z9{lN}O97EX$2Krw^$`z;G_P^g||Rt0j4tx+E)hjQww)+Xs2 zB~n%)Ht@XGMP1ObYnsg%FMz#PNlX2;uC5xaUCr_HQS0Vg!o1l&rO}la=>kFSZ^l*3 z4Qdo}aR8JaLF``Pssq3sTyL%ANZ+^A8EFTBe5&A{X1l&SSN+x3(`%! zHNSF?9gonu>ne5|Oed2IR{n5v^R~8stgFZIlJmv>1d{Tn@t5{pewZHoyraSs&%B9;_fr6UF5&BVcYkp}%ie<~yYBrgrj&4# zl~*N(9MDXDR~vS2l_G)12~AZ;>Xtr@C@GT&JNKw!UY zP79S%T&u@|#6z4|ch=@j`@jFs|4l65(%h+bCc>j&R?uWq8dvv;mNKQ9sa@yEyWe43spzQ1No z-79Bq;I92y%X0TzU%6*Xspx=-1;u+eX11!in#pG7URY=zV6YT0abpiIn3bEXcYfVh zChv_^$rgpEnwmBh?eN3>bh>Gf%&Wc~h@8?;s%dpkc9{x`Sc`~oJq!ZV)k;6q9n}$L zqR3fQ9IpPbVRDeBF!SM$$HzE+NY%Bm4PnA`7`iuk%3;i}=Fu*RW(+Ykx8sMMBVq)j z#$i5=Vy(^9*0oWq_7*Pc4Vv{S4m(7(=gxg6z0aTj>GAvrJmNSkdd)SjIoGe1_t*RD z>-~Etk?86IYV|il*=QQ08z^%=j`4UNkB^@terOS_&AWHGJm8b{30BT)&%J11$@NZQ z{CrBSDu_jAjq`krhrn62|N4CY{p+89{dHZJ8_%D|pa1E6xe7rQn2*!rK&!P3FlxxIZ@tYOR&Mk@?7Fx-saY4Rf=kE+r%vRn-mX$!K`3&uWVH-k+FiDA9HsI;v$^oMzF28nR|yb7Ell z^WMnZYB~!wt4SpyWv%z$zuxony6*M9GG~tAdWLYW%EI|j=H3ayz&(4HVGIi$P}>F^ zkDtf!!)n*u_bN5|*r{yQ)`7~sX72v+8t3a|6*?P*dJ8+Vzlm}^f9g0}M9NxxyiDy; zCOXo(Aksr6gdDZ0S;D5YVM&)TLR3+?J8_w%bnpDEp4E~wP5L}e_cb1MK3^)Kz&J)Y ztPSN-RGclOcGp^&rKAqxM9_49&zYeVc|rw%WPJxsbFaMS{rR42G6*#Y{SdQzdx{NI_VbQua(b6QjCORSK z*AcDsUZI*tQ2y**=5%?5o>9Bjdv*()JC_*EP7}~JT@vJ8XaHB;t07hfb%==!4XeDf zelPuCGUq4whtgL_i^&fLxs!uSC5@vDO^YL_!teH?! zv2V7QpbH`?^SZA2_ue9Soqr6~=V|(f?NaM|_+V8VnykG=RmY=yh?J_DX>F*XrR&bn z7kOuun2Rn<5wtjEI@CvG<-_11I=-6#d$DS-?z()OYA>^GADz3`S{9u`yu%=3`+FF6 zo|{ub5AEX8RcbJm)xEn<*{WR{-phllrN8zzx6=jKY{_nz_&D8`-t*qb(s&w8J(qS? zSf-c2t&cZOI7jWIO#=CarOmxNZye@&i0Yv9($7)gw%+t{9^-rtV)$WhT-V-&gl5R- z7?8ZK9;ZbZ2&4j{4^*w|M$#fniiZGdah$kwr=+&jFi^(2>KNPPAwZ1d0(s8RqR}PIHy3w!E-mLGOFjI^LS|f zc1j4AKiEyV=#iU)?f!#6$qgAAvetG<2_sx^v-VDtrn-mGA)O=>-q|KS;voEO0{Rhl zhTPKW>#E)<4@yINxLfxY9K)2GOH*x|4JlLP3_w)pM#dTfQEvEZgQ2VFCfQGk$BB90 z*J1mNU_7nCb5-cU_LW!9-sshLcF?FOqA>V4k2!(k`1m**wz2&PW}AuXE32BncMPFM zO}bKODwbBbOLH8fv{xtfLsVCm4+y}us7MJ=9}1CPaZFaPl?jTBeJh^2GvDvMao?@p z@n{^w6_UU9yDF)Vgu3u$n$??2 z+E-T%H=y;3-h1*_JuzCTVUPBES7HfdOK!=XW>XJ$gOp$i%=Ey}!Ot~y0$B9!Qbww_ zZpGj)1KMBD*RyI~o!a$wu!Yb+&YyogYL=Rh5&s5q!q{w=#^d0rjxIq;h+<#^RfVmRk6}lB_Dx}7Z+@-Cz25cicsp)k%r>ndku#y`k>|K7ex!Dk9_g~$RI$OcWF>uy^joofJ1z!zqG_-ODtIfWU9_Fgs zkdT z{4>Aa_pgN22xTc{byw>kQ{F*(?<>^IU$uW%8;2avr@>Jzizq>ya-5kPX&USUwX5eZ&!dNj-0El*AR?S?4#Lmdz9u8v)NM5}<6zgHLx2j6kRqwYzi(L?b>}xmH^VM!%8&*o?VmCK# z74x*Gyj=h2L*c(AN2aBOhuE28$EZ;ubAI0Me7pvw z*xOErA-XIGuC*Ew9-V$mXDqV3{*X!f*OVcOc=+eA%8I+uKF zT78VDZgeMsVj`d|=uiapLu*yu7ew)hxUqkS#8h6&WUX$G8L@2*`)8)J;0G5iT4-aJqinlI#BT{;4+H z$N79F3R6z$lIFpo(FJIU2|C-mV6+G`g^B5zneYOoHlrwKR8-eoC`5`!^B9h>-he?_ zfYVwE0tnt!DfYr?tm+(KmeGc4OBV*eA@m1isL4=qZq=wp>lCC?H<+?njdnc@dHLK+ zJ_OKfO`0pZRw=?qR;er*rhPn2H`bNdt-?g!pSk)N|Czc_nR2#>gIq)&M9tjLa5x&01(FHruE}s?eBpOh^%4<{}Mi3)4n4 zHw5i2LtIYO%QqD7tqC_ZMSJ*hhKVfgU`Oxr${f--MI6=$h-}laX0ultG$IbG>H-S_ zw-0?{^zKew{$W3ssSR^%NV9P3OAmjbdyRu)Rl76d`O_a~t1Q^T$K1X0(y$N?=eDf~V(ZQhq@evzwTwi+$N;>a*USIFr=%r)jG{-ppa5Yi-F(BUA78$Al zpmoU&ds+3~qT$WOb*mm)v3BjAqIN!y(6JWCG&LOsq1hvMX1z^?{_#9VjGz0yzwTcV zs;kz%#U76v1MJsR^Kr^_Z__9EbIod)DEGZ;uI^r>?)7**O1c~_p*`|Vb1nAj!<_MzK*ak^Uh*f0xQ`vpeecqLtEu=!>-Hu zT>ub6AFf5+ozMsoVLL0$*~=3*F&rw2ZV1l7XU>PP(5I)*3CM5 zhzc#qR1)0XG;^r|wa0)$=6ZK7^@j(C9z)$(Z3<}Doa^hFRmNUhDAdEu%(b>Pc0h~XM?I9SmNnUF{&Wu%t8kSyu831jH&-t0tEO>O zHbmr0vbB*tHf;DEuCMGtwe|o2AOJ~3K~&dEg}XYdA{87Z{e7s@?JgY>ZQnYfz3^S2 zOT`wP_pI*u{1|GsMTm!+?7F*q^R|-JVxq_F+3))!4fvK(xGC9 zpkW(H%7^GyKl*&7*ARxEC}B->7JcT@FmufYU?NLZ6sM06Y0-j?ox$F&tT8rmn=Au#n_0c;uD!gD>b7tIg*23EQosiLjjBxp}@d;rln0%^E?+3y2G z#dxIByikVacu;LvliX5N;1nsTw=z{|5fT$wR9YcsfdOxvPXGQY6P&%wIh5vRRk=giEaW9f6W9p^X?Lsa9qe@EP1jU*Vi87Lv{8}L9{f@JY097RP89H9!HGoPHG8F>h$lcoY$hDH?8;17sEl{Ryi!p68O!|Exfnn112 zRczIOX=6bKx+jx;gqZsfHG6)MyAf@L7L`yMIjeRjG}ZNo;I>dv?Dfvu^?ZbOrwJdr zQmjg6-!mv2QLvp2xsE8|DRK&_C?&hSZK$zf?7Vv4Z#rPFAvX5D*$tuL{2uS9Tl9vE z{Vqu!VvDZB56#+l61GB^3C0oR)z|1@z@|WF-8<*~74lH~nD755ZNxFmYPeBs=grN& zH@g(4`H)Ajktt?Yeeb=7Ji<%5^J~cABeeI$Y**_n-Q@=Xkv>a{MH_w|e&@A&F=OYa zi5>W1=C3CaF9M@%oQFJzx_%u4d&lFn}p#oXeY{j7M&7!@8D!fe=)Yeh5m0ar`Pks7p zXHmE62#lfL(kbkkl&U>*UmUFtM{qYW)rthN1e-#(Fm2y6>#fEXU;A47lS$@62`TKY z-(vO(3+dX(U`o!(d;=FaQ3aAxxp(emda#`}*>{t5?|tp6S@)jzJ?Hy=&oy(`T5IQK z_e57+njodLs&;+OmEHF3isBh4vRS8C#>x_eOMgZM$ojHrlP75Vh2@DHxH%4T6g1;BG@K((8!=H zpgENk5@=Ob2p}QhjA94ds24h&grQocM6{ctR3S?ztkgoZ&E5MU6gglR(g&odt?n>E zi$%k_+XTb>(2(x6mm+9msZ&q5yXYxO$!21AUaQ0Tdx`yD|HuEL0_^Di23T=y&Z}pc+q{4>>ekLQayo)79cBFxFkyT19!C5z^h}#{(|lW-Ex{rBpzO zY^Wb`K3*#4UUzNyVQwD&Iu6%BxhW_vVm5H9NXs6o25q<=dK~IL)J?S9gl3hy?sw)b z*isaIoacvXAT;8zg2F_Na+gd3mf8)VOsW8(I83s*+IxsCHe5~`DieFw+G~0i_x@s~ z^_i>Z&UJ6>g;v3UAnV%ei+fk;URskocP)1J(rl98X+F0+q z_~FCfpMRB}ua8qkz4u<%Jco{Pm{vGc0~P?g(xC1wnx+-*!kzQ;Zd`1jNforC0W*lA zilSVi+13h}o(${WxwpmPVYM;*(KcJ<7!F~st{mdS&QmpZZi+pgKiTzlecJKo^YJ*k zJwjD8Yh|zd&b8tYdmf-;?-m!e4U88{+fo8SjUS+0_ABV|;>IhYA$|(p4OgT)cysstUew8zPeY`loxNQ9K0k_BVYKZ21JuPLo~pY4260#m8haKA@z!eH45*z37f^Ak9HM0rA#A)U=vH=heIhSa zGdZ-D?u!sQ4smv6uh7Hwv||hmtzZjtt?F!mDg@|Xw|J*jw~3IiCYtYN#E7c5Y$6_N zP#J=}_V0V=$LnQ7s=G47=B}skq1rkKyeypaJ@Jbnryc(Ivu$hb@WC~&eP`Xu^B5z! zXTOo^@xT$~1JucGn+HG4cH&cX9BMG&G=t3TU~x~`=7;xatftcKghVUUWM8RswRStq zAHv35pjH;FNC?^v>x6bvMCA+^0t^}0U8V(b75Av>Qk7BdqV>I=C+7WC2tAHsS7@SZ z?W7+Ls_zOB$?T;f3Uu|gCM872zrO_k!ZfjAW0MUgu|409$H&8tBf*4vZU?9ELd;Nav^HKX>@Bi;# z%yGU_ta5I`#yN1D@AudGJ>asd^+ z$~JEm?G_c9PV!p{T4cdReZAKr+B907%*tke&%Myn+I4H5bBc>Mam114y zfc)-Cj&ON8nkOSp^j*3X1O}Xr(QW8_dK8c1TzEsm#2ej`;wn}q<#LD&f!9_Z;m4De zRmK(#q;zK^PG_^Cd>0c)Gc^c})R$JV-^JQrW;mbE=R^FeFH<#_jh`kV{k3y9&Y{Hn zYu20iX`~%5@e}G$*sn5et+h23qX>rKL5iqQ| zioGI>Ziv`TSzCL_o-tq&vcbwLb4DC$2h7DJ5qWFrdYsnz&It_nC{F2SnPA&-+yl1! zSu&eO8_)ka^l$wBkALO<>L!}5KdO`{A2%(sQJ-JewfA+)uTP1eezeMBfqJmH`hr-H z#Z+45lv*tbAnV*##qK@;Dw`&R@J{L=MLNw7*vgX8rX>WCHwX@I*ER=M<}y4iqVI%$ zwdMCCg=s;eI@3@vm8^aBwy@a6t#^zC(WZBAOMNq$81g|{F+H`4S%3>UkPRzzSBm-Y{NdsP{ z*0X@)^?1eu2vwmSO`B`IXMWC^`wBShOsj6VFl+@Z?6ilZ?KQ7`+uXX=LY8S4I#a54 z3t{1aLm*nPrbsWh9$LL6Ibjr&#@)G!N);8Mw79zuG3XKT@;J)Oq0+p}YQ!nx?lQvM zhueToi8MLGbOcyR$nl7XM<{g|oebfo8fS^tb1N7?`&1NcPB$2b6)fF)?DW5()ZtA_t!Mz>835H z6pEUwtK|T&*Y8Rlr{14`&y{hgnmB~n6lnNhn(eHGD|@p+NzXZJ-z0ZSz8ClGzPpJH zAVkG9p;}$eeAo%7))&x1u~tgAmQfugs1Vly)ot`nWp!umDosR@B(X(WRSR#_T}?1e zEvvDwp+Bv==U;RF=3Z{15YF$g2nNkdi`n%?HP-I6_M}ubX3Zrlg-wEU_G&`N1rZbP zY*CuF0cu`Vw&1N~R@Gjsva|C$fQ?>gN;?@~bFT(ePOU^wuI?UGN9S?24egXdifibp zDw)R3+F!TitZ1I5(gkfhB1IT#$04GutC7_freVsxe($Wx%4_YpEXK9+?|=RlKcPh4 zqcrEf{{B^Kw<)yIly2s(Y()Xzma}Wk&1!btduHDT5$ejd@5=y@NG#$H&7c_gAtUa*Mvjq{~H}oxFbUbw!@rD2`Qkv_%*G{nO ztq|d?UD6|D|7%bCAOHJ*RWrqD(&#mJ=Bj8z7AgR&{^}|=;BBYq2uZ;)y!U6Ns$3Oh|aCE{}qJTEbN|s7|=UN`_rVON4 ztN3aDY#r(@DpV0QX$MEA-t$X>p-&d%VE1J0aFaGeL0q)WMAR)Ps$zQl`(8x#n;{EC zs91Zzb%>f_0;*`%m8Cg%O?JuJH|HXIr|fmnHdNmKKTB`VW82bfX^r^GoO7+Jz0bLb zMru4f94wHK+U6f1wSm85=p268y?avC&-dznO4bXg|xN-&VAm+?2_lk@L zjl}+Xea2^$XLw$pdtEy#!XwsZYt|82`)iXE6<1Xil^2M^6#FL1+siCT)**tIewO1x0{9gB}`xSc?snTF68C*Og zHuL6A&nRj}`C9jWtsToF!{LnT+_&fEj9wMxT}_KKD;eKB>#E=$936d?-?hdndoSmU=%h`#6{dl0TUQ1qz6eu)abD8 z7l5YIKY#D*9?u`=EK?O4R(u>L_2T{2ywN4q+{D67k_DZlRzhj4D#Ze@5bcPMWIccW zi#vU-7wd#rch%i{MGYJ09K_nhEy>e^ID4oNQv<4lM5|I|r{8{WRTaJkK}B7!d5rUX zP%qEjq5`TyS5Og?QHhwo{rNVHBwa)cN!-IuDiu*+hlfRW<4CeEq$@{%%Sl zA|5(M4UyC4$s|l7#DpPYrpgh=H@vE%W!bW`>SBR5S0S<}h15iwn!v(N$_!!ZaURE%IZhS}1o#jp z&JL%wJ{zp(AS&T=s>onDe;Nrvo9h2I&wbN_RQi|pomul4n7 z?X}H9I3=}Xulv&z&4s+gXlQqR5wiB{_4}{a6`!Bi{<+8zSUOVpZB(PQa@`$>TpV!Axk&_oT8cT~KZX0b9wZ_m4{ z-Z2#vQUo2ss76AHx90|$nYgL-y_>LuAfjv{&?70BYaH)gT+yvZqok|GG*d=B*fmJ zD%BQrR~BVfW;7a}Svx-$P*%wg10tft3b?CmMh?I2?Lwl+m&6AfN!ZJai`)c%7P~~4I#~}$P&_SYf?s?-7GU%hVjs& zi-Tm21C^yjG{$buon9FPts$ruh%||`PCe&5xtlw8;r_fu{_}tQAJa#K3lGRyb}}c5 ziXPe7V3kSaEK>UHE|5gegjM&wq9{!|eGr`a%I#f96rJ#jTB0UEaJboqZIo_zszkWsT29tB&4h}Yz zSP|9Lh~4<74p7nY`Eh;x!#(5}!<75T)cfo2b-lQmn~Blv?VrA{s#Tf2xMNk`S=%!! zo12=1%uFU%Q#a*AH2P+86>2hK0fg;glfDy=gb(y-=fi|08-q#8v~}ndn6XZVlB$tc z_|C&bb%1^6T31koJ22jU{4j%1Gb_o1phB2NtSMU36OGN-Sz<$FG%{&?V-?Wk3D3L| zpa<2wzCLNr@&04)ueC$xIp$zFBWE_`p*jw*=%nL(&hZD?Kn^WsMH81DJ(HDGpK6DV zgJpCRMC=$MqgBUfDa()^tj1j#+0uuwNpID&+wRw0YpXo;`FNZ<^s%9^Ff$Y8F@)cg zpvu$-HA9=tOb#B;?9Om(%82&vg$l5YU2FF%YsG!* zC|D+&w3G*d#^Y({0hMNIR14KZgu1=ZgIU^&t)!!iAxbDRA!@D`GbRQ#4`VfEBT+6^ z?98jY6Ie-tluU%$TAwM}K+4S9|+ zWA9DSw^QU1$<^hRzMPu26EQ!Z3RJZWBd*_6U^S*9RS|_M&!OPrr;Hh}(qT4D`#Z~* zbQbXtKLsd}Dd%a&agOmA@5g*h(^G~9QPUiJ=sZXR4aW42@)!&o2|~BXP!=shlrkMU zCXv*-o4%BE+P~QQiXih%fr-}-Z@?>J>A4W#)LORD}Mkg@`grz6Y3oU(c zpV=Z5+-UB`y1yf?k4;W-c+{~m8 z9tW`psC+hpgq24lb&O*kBC0i|nIzE~iQ217?P%ssH5rfZ`q?m(LiGCBU!T9e{`$yW zsz|@cza8OTNiw=4JUH8xUuH<5)-v6|CQ><0JJ@uLVdtU8ahd|YYhC;G+gGxZ9tqKg zz+@Z%I;)fjmEB-Ut}pbx3$;PF?~d5P)zn1aM0n09%A$s*NVLaV`|e0@bcRK0wKg*- zn4Pk`ItUDGxV!q!tkIy)byM3sJK`WQUArr?pyjNRdnx4r=inDK;i( z5GooOBvFzcNFhF%tK7re_ZO(`{DWlf{q?$To9~bJKUAQKalV<&?i$aZ=i9;Dgy(oZ z$J;rd&%;E=+kAiULGsY^e2)3&`Qs1B{(N2Fk=|>2BZ~v5jP%@9iNRotjeA|u1Ub+V zq&)^|_g+gye>@&zC|NbP)3kS+)?92ulu6BO`uhF(>vvI$f-x9e9i3WAVUlG<1nZE< zq|Uytdl$y}6g>%Q2eS;ShX9OV209t0U0n$p&{gc++SvfBk_osJL`hxV$c~$;m<-U) z6y!0ONkqmR^qxGE1Bu`nU^KCQlSXt=Z+G8!Rzz!bv@$AtbtLU|$BwAVTHZ;<+~1nl zK|LYSBuds)usM&XjUO0CizEO^>XEG^rNapCXe$v`Wux@f?wyoT#R-dyZW;5(^Z9(t zw+GEb^k6fumA$qR{_9_V@%&+;`}(x==!f?G8o;mtVk$3|EI}1e!kAO7M;7*X z;n2{xFC4x&x%SkG_)Axk^0m{Wu@xRE5+>-N25JjUDe zIK|YPcTXO6l0HgQ=2Q7;!^XpG9P>EMq#Hn2Q-^XIMcg|*3XNv4JOj;0>GniMG-{Yll?pPbi57ZQwoRSZO(w^iF)=~SK%QXG(Hz}3 z>+CVb+PIn&JY^UuZ}+0+nW<52vFW<~_44bhXuL00`9J>S|183)!u)3AjjV}8`&~`h zFig9^DRuw=AOJ~3K~&8qF}eyYavm^K9;zp%nAx0aLq-n+kuK6XjxkOi_ zvWeTXD0nbeqd+B1)z$=_$2|Txj_3P0-eeRHC9wt%J+b{CA0O9!@AdV0xxZ$Jv{a@Q znTRkcky9DtfrFJXNLWo2W|))a(6^s&kDotHq;@R#=2W&hp6}0h6ZH-vAp%uXlZi?_ z0xCwPRJ6NXNJ%#8#a)>@39wCmaT!x%T?A?ck|cycq+ZS^ZC{5>R{)&A;W|1_CresT3H(~jmL|{n-%G#-YHG{ZVN(YOW zoe$48Lz*cQ;yzVFJl9iY>dNqtJ@(&W!Y+ z^rQfPK!Cq0&k{M9`}QmDq8<_0UpEQ!0V?l4n-1VxjSg@QGGQg9F^uHk^E@7^Q>Q)l z>t1{P_^*!V&!f?7urUalkcbd2J>QiN>VlpvOu}LhPRjm@BY^B^D;R=5>iF9U*A5Bj1?#kVB2k0Pb;Q~|B02qLHA&6PbD1|Djc7(^iR@4>M_l@*Vvz9q2#Z;OEb*hb)BIVo} z+aVAY!E8byDYx%*lJT57Oyjj^P}8U+=qFL#L299xa6_QAiiQYxd*04s34$+W<;OSe zCGnnl8+nRC^^J){Tg;-0Qdpw-0c4F$E4Y+8wxbZm)r&i0cha4LIj8c$KRd%^wa>Hr zKDxRz?=|jqr~cbs|IIr!`Q0wthoWQ@A2MW0-&bE+52nW8$tpN;gfcg)z5hAhKd#T; z`(D>tn>GlfB8LusU@fQOCx?(a4$MX)s3F15VuFgrE=A((L~&$B;7hik1e{is&54^! zQ4KgZBM1>eS1=1%+?fF3kc+t^n*bhiAIGRt@a%G zS-om|a$~L7`!4id1Qe|(KIXg=S0bk#isSnD2gs*Q0ycTYQ!x`?Mb}`VNrh)uQM|~kSv)tFLOK&W zs4?|%Qr!qD@8;s6AX1B>gS@rSEX9>g9ZS?nl~t)ka2hcck(75D54A~PZg2YHfytJ* zg4Aj>xR5kCeJ>AbF(T}jkPwcJWG<>z!Y10L*|!k0$bRKsIS#7bUN<6Z#rD_pco_f7 zuh)X@^LUakFr417sug%VhcJB8!I8>QrmDatWBmE&7;mGQL^27B1?Zhmh^=PMYx$PX-G39AW}UjIP(Td=}GlG@^Mslr4q%I1Eq^M<-Pv#`Eh@?Et``-#&Zs#n1XZuf%l((n%TNv|M=S*Jx?8G zrrq$aYL>>6FuQX{RBEfJ0bH@~IW&uSVz4fo?83)y%@LzDq-=JkDdH>wdkeJxgtz;?$uep1S~Q0+-ycs7cTF(agX9 z_S!kPaND{!su(RhDPJ^o$iYlAdJk<}`T1Gz|BlAfGqg9_-S=KAzHX)@z>Ap!j9lQ_ z!i|u8E&o`!*@jKaN8WTx)JE@>2U8Vh5F6jPdF>XFi4-zV?$;O9b^@_wH02cx;AE57 zQLj}9;vVv7Gm$8I2~3hzLx>_N^Luw+DhcR=LeSal>AQr!j;s%i_IU1dolicVM}dW< zHq@I5Z8uda4^iSARGsUNEFMhpSz*-z{>nQc6DC~5wWFIDL|o0Bjj|H%_+SvJ3N`SJ z4Q?BQ`AwmOwN^k;b6AAYCPcbai~JKm0`BKQ4B1^y^Pzl3?9b2Net%uXs2U03n~jW! zMN0s|e7w(mAOkX0ZjjH14uj{Uu6=I?O=6|igQ!aGFV8;oVNC(5fOx_+izBZ{AA{PE zef;?I==3hSa%UGKrf`*b(c?VlAugwsq=b>4QI6Hw}Yk-YUl0$3= zQOXwXBAdoQ7P5kKjjkQ;do8kL>p&3_n5cpUlA3Z%5gO^KBxOZ+hJQqYS~qZvO%?9h zz6e8fRNk*I&lGTBv|1StmNV7|;Hif)3*$;(%*w&OoFqH63+3c zcqVz*o;+&E&JAW0wB^p~2s0~8fYBTHLUlu(nX@t~Te`ckiGtJp&d>YHF$Y!p7ih{M zirni~3a#4Z%6z}-rn2)irue${y=p(zem;LbGp^pd(%Y_HdIfZhI;LFB6?|ymK%@JL zW?mmGecZ8D0yfn;`Wf`TR_+unaD-l4enA# zBQ6pFp##EPd6(ZrmVBj0R4b{LH!-1}lZH>*~%b3I>!2N11rs88?fl|6xO$1ly+xiLj{XPh0C=e}#vVx`+Sz zYbcQpzl#N`gNl3q-uE(0jBeWEDC+Vmo+ZVq>-PKe6IE-+{Nov1?0ifkM!UCoLMW*# zYW4N$8Lzx%KUxMN;`O@x`hZY&!mDaU$Dt|2FaNZ(EK6=4#^W7z5N+k8lkc zP$4_?xCvj}T%{}77=*8+mZlk$ie`3_DjjgZnQ1$+>1?jf$o$*a-Q`i>`|Y|vJVJD6 z|8sK#T3UD2`xrl!K6ZX&JxHyumwPry7UVIY1K{c*T^f1a)YodGh5?dZTwmy9BIZW^ zlK<;}{U1ol+Km)d$c;|VN(yKZe}hVmsI)F4Q1jZKnQM#(D9T^8n^#H)x~Kv%yM*D4 z?pxxP+*I2#yZp-aaee)EcTO@X8E2z?{oZ#`gM~!SY3CU1SA2c0Y$myKyHJx}R2T*l zFK?DXlo?LYe|jv$f}^sy1l)w;r1s(7``a^9K5VER0HKnZ?BGLHRN1C{>v239(j=Kt z9&8Flms4`13$6(`HNZ-c7N`l4v1qCem3J9K)octJLkNn}af%E@iFzUaIpHFzUEzU4 zTqq05(v=;F+1`~uKm+6n1mNbk(Fuq*4MAqwHVnc6JgVqdRv~?AV>o)Sz9>c`H+}Py`}2 zywJ_LeMj719mOE&CS>%gj6(0YYX!ogsd@@a3pz(}6fWJFp&2Q4qjzuk{#d@My2{HP z@p^sSudiU$CJ5Ay(M{z+)F5QV`ug(y+I$si_IP{y@#nw)Z;!`J@6XR)`}5=Xzy1FD z_?>$t`h5ObiPy(JL~Kk$WmQ*i&eW#Hs$P-EevI=eLb>l=xg$%)VJC@|%{eA?Bo~wD z^G$SAQxmkBgjkfj8DwVESHvzlcf}nylVfj>46Mpjn!?1hSf>(4eF@dUgCWFa1WJN$ z%FkwiIIlZ*sD!n5_KtsjU7uB4`^w;Rm=ZFw({nFhy9221+)>p)gNaNI%}uzYdU>td zz;;5T2tmRkVpE5nBO&eCgiy-%xG!XhoW@4j#&QheV}W+8d);@0Z}+=8av&VNA)^?X zpEV$?#z6<6m7A#rMaPgGLqA`ewa;PA6--WCm8&}!QCyFyQr!K@c1oFpMX$jWeROZD zA_1R*n;XIk#2iPfQq|ei)IJhXy4R&$s#Z{yE=T0+-jxj-d^~ipR=qVhy&Zz7<%-wx10MNK-m(4O+3*?bpujLF`HcJ5A6GVnOsoqB^B zlUYphV>dO5o2Wi_jp75enYqKmFEz%EmPzu9sj1Ar;Ke|4E0eGtL)T_z8Gr;Jg4%aC zLVSUm5?4V!k<5Nx8F!(qgxIb1c(3=R` zn@xM$xyw}M5bzH=Q}^&lCev;b9VR5T`B~+JCzde%23{*e7slj`q-K!;{n7XCilPE4 zSbb8g>dyc$=2lgv(NVG6%oOR)G)=}PVcc1$wl^&>7PzuIf?Ro=!OJL6)XSGv$t=;B zkJPZe@>(k)+}q=Ba8-LY%a2@L@xixuTmb@zyL2m97-EyDSGCI2!*Z!yE55^+yj@nc zOqv(6iXZ1RgJSQSl_m&8ndzPJD=ke`Dzr`QjWv-g@rR9{$-mt{B&HpM-)A<<|Ng)H zcc1$!2br2Am%jo9)y`MFA}Cp!Fp}sFT6>pNF*9W%l8DK=xhIo4sM;7N#9c@xFn55z zDIX9MJ(OXpMA|w83<|TMbjV;e)05_djxpzCJ;r0cop$)tYW zyxEXu^a__H*5`s`^6$g{DJW5n38C-5EX=gE;O30DjCV1LZ;bHvFET9~!JhcI9 z5oTzL3J-&973Dd^nCKKE7IYPcu>CY0BGjTZ%8Yml8yS*NrIe-J4;gPV9%P9gg_Ebk zxZyOEk7sMKK`7H$W7@vu`>jzi?sViO{w95iK2n5qGkKvv(;&W1E?7By1VUas)byY+#-Y#t|5ug{Nv z{Dkh@zkJp59%ej`j72N&@B6>@%i4~nCT1lqW}4saX8WM?;~dAwe9f1dh|R-}L(;5C zOoT;*NE8AcAT~B0$7p~#`G5_3z5bzcvK(q>rzdvOfjm2~%cGW!SBrFp4g#7%5Go(i zs-uZGa8$Oj4!t@$JRjfaHK;@&U^D|ntYk2*YPfUv&}#^3>jz&d`-vxaKG~12CnCaY zJF0@|jun*$kx(}SbIjx8kK@OAeavfKB!(=%echXzx~fu&P_;oOJjetrs-!YmF6hOo zs`I*j^q{CQ<`6U&&r9_BoUcE=`jG$k|NcMM(@%w+I&^lC&6mnh)${XnNRI<^9zwh6 zH|QmzEX^ccoWY5112FyRV3KI?iXgZX^A)`pn#AuKd11XHbhcG#I=ax=x zL3R>QK&Mjg-5C1g=RfE1lZlkLqE_zr-cQ2jCBmLudK7nh5ka+$RjD9o9n4KKT2GTp zSe|>`i+WV`d!rMMPC1oK#LL*2xO_Ku)9rrOlIj)tiy{k^S+TNubL{eLN~)~9%b%=( z1S;b9JJ%g?r$6zm>K%LCUr!6`Ffko-^31HS2pZF_DJo=>Wti0DP&jv0)8cO@#O~$f z9!w*%+ zS2>FeGhih>Xz4aEiSn3ozK+k=KhA3&*SLn+I8L!4@Q_|4LZo7QQFT*kgGjlFsw-}g z$mB5%Io7kDO_7v)*CL?H)5F-b3Uy0Vgom`*P?;w4r#`0ag;MQ&(oB^ zzB1Nc>0K?X@1m`XsDLPM+tP*PF>2t|l|(nod-aYbV<5B}hi;!HrgI2|pB5|Coz(&J8A zC<09|gFlB&5#|=LDRa^xN;d71gM|vLO$4e!f}uRseu~XY^w-_`&;RyA{)7Jf*E^r? z&zmh7w+bgPYJ=`|tjW`?0Ur#~6@5 z$~GY*HYPTv^!Lhd-!@v0I!vfX{b)1sQU%nLl9-`q7*n#M2!VkI5ZPA1pd)Ut?F`p7QUQ07xlq-XgC5pj!ho75+ZtNn&SOITX;lyz-d zfTMgvP&zz{Mgf_=ySSJO&FK}=5GVHz3F<7T21AQdJ0GAJAIPfbU+zCNXmGh_XAmSj z*IiRC8}41fjl9djawPA^H$s{5-Vu>ZM27`M`oF5VaMu0MA?F{5Eo4S9ou~FXzwYP# z*T0@)qEX&r{H;wAg^4PgRqy!nr=K?A1`K{JY_9-K|S8YmSGOav= zxbo|$RV4(g<#%i@+tsdHH5*$yv_z`yA3N8f_Ub3z&%-uU6}q^{ zqq&nci-lN>cHNe{liv?W^7|yJj2b-^5ohn3bMFp%T&x1Ee7*+niuX!D zSV(L#l=#`}U6JQ;C8COj4-#O)D>_szNKRz|t>^JyUym?2wg3MFIjw9qrk;>Znp8ii zIN2FDk3l#pem}J}PAX0wqApx1Cmly~ay-gHJ~Ep`n0tuU7{2#j|MIv0{P}8)?7HkU z8IT{vnc=MP56lndF-=}79`X``3=wG6sBTy>50!UsXQATAB3i>oCv`p*UBrQWyfneo zM9pRwOLtWiF++GT3KSp(U|HC!391xr5je@NL4~yQ&@s2XTb#F^0+c;W+R-&%G;>DmS3rBRTBQ zc?=!RK!7Fhie101C1QdeXJI{0`eI>e(mr*{sWgsR*!6g&T|da^*w4uIka98Aeqb(R zPzlN#uMe<|F3*E$Nh9WLjj6!CVH-j)ec4qJpYiIo& z^XTW!6rNQ0Gg=4-xuhB)Xp=MZX`EUZvs)m{A6eeHDZeWT-I-c7TZ+&EDyn7@$N*TY zI*8Z|6w0Zp+?@WrYo+koMcHazD>`={o;kCNqZ$-Va3`QiTbuhBiADL9onKpBo;`Lw z7Wb2q^?cGrnfKSf_VYgGPkPC59$){7zyHUdo?pbT&wu=zTqCJ%_9e_E0^oi+lL18C z_pg2b1};6u=kh%%MRd@`zBDLd&Mj(TSa*pv+* zuCFhr)Nv+Bw@i{dv$8w0ddt4^IC4oXC_vR(O?&wRl9I&62ZJJ?lAK_sUVAm;rQP*N z<2XL?&ktGn`nns0T5GeDBhl#`zj{$tBi>omcQkd1h|nk{L^C=N?um>&>b(X(L(T@_ zds*@A-n%wdB#-P4$%6KdO$nvAqx-%`rxTX~%R7QwsgM~#T@(~j7wvG#Ce8{1v@DkEA#l*+gP z?4T(^Ow}py%~72cv|ye7?EMu!SP1nDRxktgWq;3Mmu$r$F<$)3BDe0Zh}=tc$~d@Mz0kD$$&QcXR4@vVeyB&Th+I03?%SPfNLTJHf)pz9lsV~O z?KRGm3k|AMN(tZ0UL$69ujHxX8c)hJWrjhjYBsj0h)NZe4|M3@ZmaUr2f(zm-v(at zX(9*d#T9pcMP++$Z-_Z%Lpg}QZcL~NimRAnH^vg?CSB3A2rT-+gzOrx#!9L-9gPp4 zcePhAm~5Jy11_vp^VrXunwWuku&N4q&^x@^(V2akS;_Y0dcQZ6jvp_`G?LE6!<2vI zcTsfv{`w7-Ieq|9H(WVtbOcS*-| z03ZNKL_t(pf2kd!N7ul1rj^aeA!cBy1j*oH>^Jo!yUe7!M05^CzP%|jqHm)HuIM-A z!ZS<0Ymo2OOQAr2KMuNzNskjH9ZurH(5hlZ4^*ICodi{wtRE#VbQpKa9h-MhbEqoo z#RHx1(o?mLcRrKnQXi3y%!z^>9=5w z`>P^p%!%(zKPf|5VM5e;*7m28tG9HjNHD81>ndDkXOtf_nC<=hey`?EM z_#6NW6+4vK!B$ zjowX+)~+s;5N*cJ9TH1~AX(V71H~Q*nN0ol_n%)S2Jztjx1Y=ptvhi=mg>sKD@g5P z{^-h%T}JFfyVCATD!OTq1iGS0MjLn&Jrdd3fz2%Q7{x9Ku}L&Kvj{37Raw^CB~wf{ z?|uNB8EX8JQ6NBLiZJ;3S`nfd!;o?k4D(xj%WHeaQ@x8@n-2SE#PjuVU#O#k(2_p7 zjX14eBBDZ@53Yxs)8YB-gNH1B-hPizVimHESRU|x$Nr)is-_wwb-U*-!eHkTCF$%h zM4_(O!hE;*y*JiP`;OIeT3P4A`Vi6^hwulJM2Rr-L839Li?+8l0sIsRghy6oyQu-z z9J2|203-uWRN9iPL+C<3Xm6>K1D=S7`ftNE&p(osAZ8KP=@oPIx7<{?V+zB0RrT~0 zao>qXQ+V<*#;mgYVIC=iYnOIRJ0^c72Q#{39%QTYjxP#`95sdz>YceJX>hfhNin`^ zy(@5vCAtd8{f@`DLvQ(i{;&TdJ^g;Ff(0U6P{cr?^Y+ZB?W(*IP!ibzDC_KVBc7FB|j4$lQPZ{`-Dz=iW%HcScEMRC*P4x*VL| zo;{A}+_AN^R>r;9JtM!09wcYK8m45*gCx~V^+jejmGvM|NTcrixu0!SSgdqY!cDxsutC84Lj|^I4_&C+ansSMMdVM$h9*iSeH1d zk9?@uGtjQYnNfgn5mx6{-O*1bJzblcP)=E#NgavkjEd}bWOzj6VrKz2{URmipSvQ~ zS9xV{RyLr8gf}&JqJvqe0AdldT8#ok!65lsPPuvNlN#%(Ue!=~GVc4=@A5BDJx)@sf#ba9JUzqz{!(e11Ds=fB! z9tpBzt@Zmq{){`gyD3D8jp3cEGT#*oL=DQPgEMUutY~0MM5I(xag)k`Ky?$~E}rQg z<<9BF(UpSe?g9}tGCL`LO zUpK={nNWyq0mt&asU*gng7evsZ;Opb?bO(dt1)>O<6-SV-?#9sG6+=V)Mx>Dh%_lW~?-KmU<_8`EG{CNZ!O${n1EHCHW&u z{MpE7aEqR|XlGPKH750SeZ+gmU%&Q#bk5J$r_M9i?(+Mc%E$Q8>72~eyBitV`%$WD z_3gF4=D1X6u`pe;`i5^#Dph(t@tY`%S7t&^nQSLfNLFe^Hz$gdh(}MMb~)zv6Skll zn;wEHOVP-Bg7(1|%2ovOK__>5cMAyA;rpTf=3=)I6TU6fxyh#Kmq?Q&!qYoL+MSJ^ zL6xy(y@7m=Q_Vg%S?2@)_mvf!^0x!UXsI!vPydc^8EkCT7#U4+8au-|In%9akc#Zjp2JAi6U|NO@cXbj|rsMzJqibNK*7LRYlht+mtzoQo zpr*+XCe9J4pr;>E5$5L9>SuYaN2>NUl3X>n2&V%ogk4)$0)6ikZq&-c0vB_OF*TSH zoYhl1nQPyp^LLx;X$bB&=fFG{EecU+Z_o6Vm>?rK``-~=d`Q##*Pl`Nod4y7M7@i& zI4b`&=%-5E*(=tiJENZ4DekAkC8ZGSRoYB95);86&(5q)(_uX3>tp}=>;3GOV>QW2 z%|rUxvR8RMPJn8e%murjCz1~vVy44dt9k!8{s~4DKxUl2-&CpN=oa4(!l%4cwK6bG zwWL5FucSQ7JOTd_Z4ohU(WuQOA+MK|W+Y^YbhBH$iqCmv_1qc5-Z~C{#x_V zp?mGp{)5#;dR%|#Z6T~_bo?QxVkc%qAsBLF%CPEMRq;ErL4(CuQ8N(IC9My?ecwX$W_1c|7Sd=Dn##hY%uFqjE{BZk z;>=U>?NrS_Px!6{94u$$({|99;#BS;2Qftw+e-4J>rBBosV_PekW z2eFkfH)e%O-TA$4uT>D{;+?^gya1wN>hw}@4=VyAkSPT;vKp1)bd%Ar>zy_-t@pF> zUiTdpUX>jn2?wjFj?(R4Ne??e&-M(nf1W@7clSU4*T4U}+PrMA9@3-M#@v}5nWCuv zBAFtiP0{9>9(;EGP7g9e4&!OF zxgvh=Vi5m|HEsT2%IM#{YcP{ZH!2n$Mluygz=W#vfywLyF`xnVZm9oSWwckowq)birNIE@|y+g;G z7m;(zXcz13Lux0z-+Ee!Isi`%qKAluSSqr$bqW=6H7-))e#(pH0fM_$KHXnMN;OGG zq1wuHatJaEAyv)nbWm>QsN|g}Ax_@w*{Ll;+-R--02c#*GlJ#gFj@Y~NgMn9>wlzv zobwZLlPTBswU3WaP~GpRTUD(Bj;Br+Ql@j%?@d)aNQ5qZIsM>|q1oO+1vRcQC3i|P ziiom>z>OZ0xH$!Er9j5iSyaMY)nT%{1!YRvk`$_DMkJ$CJ62}(e4%s4hMZ!W@g-f9 zRaKo}azaBPoJYKiuJ>N<8_D5c`)l7{ky@qD*XN zqmB38oMhKO*i)2Au8^$Q=3per3DNH8d}?DLMX2He;wku(I#%fL;4D^^F)SU;EY~6V zIlxi7xp@$wsI9AOe@-E@BS1h_1#yWPQFo&oB~CO4sC%glZf?0pPf7vpgh_GnVp~!Q z96hs(um`BSq-n`$7N#T59MhEK@MHJNIeE8a@;76%UOcZ0bq&^T>@B$x`Af%^<3r@5 zJ-tdeNx?tHbm{aCHhHm0R(bs<89|o$ZqWIXF$8I)-C=cZ|F*(urGyj<$EM_*<9dlv zS3+2G5^*&>{k!|E!hqhb1WY-2o=g?(QNKv!WBgQ;#L5C!uo#U)?z@SLmH6W6LQc4v zkPYCVYCI3d=-Hw{HHjcVk?gerKF@#JkDtJ8wbEdFB ztGRV4vuGDUm^wE9A@ud3(sh*1aT?dIP*aRVv-OE6SA3f$3LPuZt2*T(harp0{b}kc z5=C8o-hV4$iz+xck{9Q`cV~GsmS)uQw~%z~x9V(NNmR}1( z$HzakR^(z-RRctw*!L2dWXjqD6{0|+szG?_g3*ULD!NO!cTL2&Vxt!uo&BuVq|}Ct zPa)DwHV#019gtR_I;+s7Tuv0NR!`o6HK;44Wr<#aGrIhnZfc zN@(Zrq7EzJO3GUQ(e*S?%Q?GgexD?EHdWN#)8?V0`|D;jeN{yH!E=%e3F*+-V?EB1 zJmXTDD%=`mJ(>`msNT`pEOb!yJCov}&P)(NzH=}178xpN>~uqQbd5Pslz!K;iZa~zX} zH&20&tfM3li@J)`yJ0-XBw?bRV#?jZIlETeGobX^S6(JtX-CogX-jIJb%6;|1 zJW_$D!#?LVKi76{f*!M;=1*uBJ)l#wso!YjIVMj`TTjzA3q@)?>|3|@%pc$nuoT*ZCD&u*;IFOl(Wcw z%CVbqh@4Y$wd9>y6GTM21H#7EM7N5d6*QSrWfA6aUP`-YTR_hbCHhewQHfS%Z+L;z zQ>rI;@qjhmv8j4BWsyd+M+R{>6wzJ3o3w!M-MXH={hgLNMU=gFb#Zp?%C7L-qUY8WQdb;%8cGX3Qd7g{OTw3@Ny$jOymXdx1> zxVf6>h)fy9ItYn6=?Ixi1`~OA1PvNP6P1;<<6a&>fDx^i9{Tf#>?p?_@ugJ33+kZV@j{3~&z+Cm3*=ir0KQX;d(A|TOQ;J)V+>-7+P%GqgN0@A=vZHCy_+XbeQMX&B07@A zG#ItKi8k1>4waBq9ag`Z83bAPO3(2!?u&_7`y|tuZNlr^p4H7RO%=76jP?2^#jqOY zQ!vKIVNX>HE2A2FjFX2%zfr=h;Y}?(q?tetgil_FsS5e&4XS`w$v@5D>C=r;tvIL&Z1kEE@d&doPdk{BP7h^6T#;J3poX zl{;!bA?;{>rxW!wMvW$*2!*Hjn{7%1Q5B1sZA%p;QB@*K4{4m?4PQ32$(n$!1gf{$H`|48Px9H$+bzyz5R_~_~{Djp=svEz5IqI?5f!hM6KYW|MpOu}?XmehXW@#|*h zRfU2Mpu3kuZlba=JL&O)kqotvBrS0%LP&FSi|7H;dfv;k*l2-uBa%|0p4_eMtDej! zS+bL;MI-MwYfDvQGz&Koany!_YWUhww>C2gH&>WE7fL|c{_ZHsYF28ZBuc!!oBEsz z;%HH@Fhhl0n;m8I+$G3trWT&FEd2ei+@&A$5Q-g@0r?;T=&rKPSry}eodcp^ zg90JDmSC40NKKA3-jVP-b5Qr|AUZ$0K=DrO;uaoc@3M(Getf-)R|LAGE>mHm(>^Zk z$JZyTG<5F~+izhz&6t#k?65fnL6#k&`j2sS0^Cz*C#~u^4oljdd5ojE3oWcv6mq1t z3bMyT{2`zE@mlqyXLXuDjUX4Y0je}FPb8tMZFdlI=fNUOofR&{P4PzIO=d!E_73+f zW_U>#UqoHxEM3hV-k>bVCY5s)3MHtL32W)LHs!0T5@~}2Ur|EqD}e5vPq#>uNwL%f zugtrfDwd>HZuue9-S0ML zWhp9&K6}(jl)`|}dcTWbB>!7}{rdXre^yZSAY&2T`O8?9reWJ-LhrpjWOnoSnGW=zkSZGaux0r zZW?17AuzrVfdp>3?}jiE=vIYV!ot-lS!kcVzs!8sikLrY8=1^>GPg3oT+xXD6BQpM<)#S4J?2wAqQ3gBfJ0l%YOprC6omfh zDg{f*K2bp3wXU66^YqgtVLav=ge99tp1n7x#qC)w^_+Y@&tIN1;-~qT^sK-Ew2d$^ z0&G(=Q{nRCIpkBbo2Q0rM`!978uLNz>ckBY9F0~}dqzjYhS zeex!;X=rszwfyiNHW=kWQ=vb7T`MMYS|F%xZxicA%bYV%oR3=}(>K$gm$ zZg4P)4jYF1S(y&Nrrv&iXOb1dx-*;BF}s0YJ4&6d=^W5rbPjyG! zmDN)%*z%4JwHfVO%|jH&acUawd%b?PC8tM+b-Eu{b@oQKfx~POop;sO>xRP}ucVcu z@0;p4pCz-nn?}5H8##g-ZR2=W?-gUvkt+?zlhM_?_$IZux)HtM<|RVzlR(uUo60S4 zB)Rhf24LvPylQsN9|oJ#p&an3fVnsc97An z&KRAjQGyM7Oq=Vz8oBjG@cq~cR^?8-n(^_8OoPqQSy_Fm=#K6$%;$Xm=>5G8ZukI4 z2$*lUx2ILsb={ny48p3pMjZ~6z>HwWk_htdT(wsV}EOtc7Db9 zQaz-j8hssuiCO5QcZDYn>V+HvJ6R-hGmq5X>-YO>>-gJch>!o8AFmvz&3nwpJk2UI zXalG5`ii@k*&!9H=ke?OcU`H4ZIiFyv=~PjOXyfaG?mZ-Qhl% zg>rko;rcxziq>(TI^0H}Oa&Pw(R*dR!0}AOuq|D8Z_gp+NpG2vFH+EZX0?*`Sm8tc zHji(eGb)LESl#rN3)vc(b>G*CYGdx};P=fKwZ4L>GT$1{gjTX&{(K=U8#U(_F$JddZ?&5#=%3@7?&+|0V9LOuJ6w4Zp_SI z&90t>Vn-IU&^s%S$9VsfDyP9z`(oZrq`X_fwRYexsi6TssaeburM3#FzoMBfB)x|!CJM~ z-n-247`^sJ`8bXgeH`W}R_vupEoRqh;sSXC#!wg`%}99R`Shy27Bskd}f8FcO$STE7;!8tfA@I3IE*w5*^nR_c+mFYcUX2m=ee;j?d{|k1 zp)$Mfh1j;edh!`x+jPLDd;7d|_qt>6%^p90{t@@m`NJktyVhr}^Z90JyI!wO>{xk+ zpGS=&D-CI0S+GuHw}zQu4$JZ&QF}$xI1#zINOl06a;b>q5X-xwh_g}Pq5!|OlQD&1 z=pdR)@UBPmvauu^W6r_a-BrZYC_c*TEk2kXRCH?h+?H;c>{{3KqXsjgDtBsVaEK0a zR9zLR9&L!)>Z*`@(0}Rb6<=eHOhsIsQ0_Th_TF(LKepMh`6Mt#SKN7@Q;*Xk*fj)$ zF}o|S$${gM*350HLhS*o>Y`EQHsGC#`Vy;4yS^Xv7iH_dL$_IDHK>@K`T31mY-~Q} zf(4x%6dZg& zD{EUn#7@h0nWdeBcXLuUK`SkAfnICS%^pbah*ia zuhn^HW7aw9sL?fIlrgEE=d{&PY_-+!3aK{NO%y(}jAI<9HuH0hr=QP<6*Sv50YT`# zx-_5kS>`YHc8m62W&F8ioS$hX8B+Fn^ zvXPyvt>Moa>RBuyXtTXXlxHS=??9BF=U!j& z`-eH*PgeEX=~{goJ0uix-(Mf`pZ?#Uecb>2$N%uBU;eK4&ihqgA1B*>{4(ES}vWQvcW9UJD8;5%%Yx3YRr%3>ZKzP3`nGI8#B%fyRG5vA+ z9MqfajiRtr23MhXm^d5^E(mi@vK2udHr_PKtVBn3%X?HufBf;a>UxFtwaui%hhdmY zR(WL=U36I+nWgTo2qj5r)QPV2ZhI$7xIu5QfyS&#*B^hmzdq07QQ2e+ zQE1K-Z4`+freP)>)6H=A6;ZGI`siJRTLyarUbU-VaUow(_ln4<*S?Z>RPBxfrC1Bm zE(r~g)X~Lv~4xp0(30fCsi@VTOoRU2G3lvvN;h_1^i4Mk3J3;>PR7%apCk+83h`m8(>S zzF)Co@5+d_W_54u=-vTGTzTJ-5%og#x^vw{JQTaH)j&qqYXhs4#oYtm#eHWMLoCol z8-5)A*OKsvYq7gJ>MqqNEadBmu2j~|+SrY|0mue5YIm;c!@;ZeRe5HOgmiH+xEUtS9RPWr24vc>@Kp< z)>%_v0!?scjflL~&kvc~kF$J%kPg#q2sJ^b>|5?xUGOWyx{gwn%9G6Kn%_Ap;~B*Z zvT^Ls->UNQr(fse0jZIoXP&-dG4fJ4pvrn z&Brm2U)Rm_c@hnD*|RgOZ=Ht{mC(4vsO~09&v10ZEeRlhsZQV~-y0@N*(e*`QXkhg zpUryQ@tViW&oRe2E_Pp%q3!aJ>o}PGrvjLp5F?yw?2n)S`EvdF&;MP^4xi`Y)vRq@ z**st`idLbtlBa_%6AhxbOAHmz^fxRvWBN zH<$}@^g5dKqYaT2!=GKI@#WP8Ve~PUYBsQHL+U8x`o1V3#2iDdu^2_7ch|-xpw`2m z@_}CDrjz?I#{+e}?tRQbdhfQeZmv~k4;*OvY+3CKd6RDr1a9jS$*=VrsrUKly>~71 z(dgl<= zUGA+pbH7@b;*@NjWU=VIiwYh`wc6I4e0PSWt-IpP_-*Yq<}YKg?m%W(20%=8#XY+cwsYSZpKd~0*Ef>B zx@X-5Ts%0_aR1EJ)|R_VK93g*m9smM3ywBa-7IyFd$d~_SnX1 z9RgULsZd?_?<&nf^yuo)4bfzGV91JhOmYky~|(9v>NdB3zX94!8n8RM@{>=NgpZCB2_y35+|M7qN zhxhjlqj6N${q_jd_Uqb=jg(tguf8}2{2YyW#U)hweG^{A;2ug;m5Av4%mVV! z73|f!u05p5OeE?F+8&`)_&6Svjmm>7vI`i)hK`w2))+jk%rN3p2^p4=OqD;XUDp(7c~5s=FgAM-`@V5 z&pz&Jc?FvshglJp{mj~B=0uMKpbShN_F$h;nYyI2+NytwZf+CV?rWaoD41&ZBRf4u$6wQS^paC#|QQ zU1i2U*T}3zH;BIP_1Yi$dCXHjY!+jivinuQ80=o6`b6n4oDVBtp=wliS*Fm2YS(30 zS9a|_z%67g16^(kMi(^^M5g=jW9V#D^u2?Msl1aPanp__tgfNaenJV9NFw^MvgwQ9 z=c?5)<{CaaYgZEE0P~f5nUmas*25n%i@G)=dCo_{3RxQ1uXWWhwN_L-%jJ8~EUjbQ zCLjO^$!6^WrW>($zPkK)J~1k)cO|N_){R2XD*=YU-#f*s;+=&qaVGgdUFt+xW$fM+ z8oQyD*suhj7>K%6ZmL2SO|>}PnAO>Z+&4Ehj?&^TiOa6uo6C93F}(6KQi;QAv)H{m zYwwk>szS$4aou6VC#swBa(xgHg-xDDOJvoH?1+fHz-&UpKw=>yF=Y2i>q17nsyx$H zc38~7fZDA=S=wE3&5f^hZ->E(HAF8m5i13WZ5<9MPk$S4xMqf4z2Jv6lO=)3q^92daMm8TlESlc&(lyO5nQy4))7etquo z*YO%)4BjVb4kdi=wG|EGWYFZXZ1 z{qZ0F@gM)@?|(SnyS5cGR*gV)u2#*eDob|e-Rpo8nR!=QZgEvDKQ+wv9j{eJIX3K2 zeXF_OgjQ}?XLY?2-`3;KwzCU)ubqsQ_HX~yKQkH0>ar=3D79IE-P;C;ljWg%S27Is zi0X{HTUk~J`mpiKe4KikXtL&LQ8FtH#4s6s7E-g#tkl)jy;5a1(E`(D901X!td2(N z8wIOY!by@mXEyxsM*$29kO9P^|lP|7M{*m0hZ zACKe5c{(RxhoK8Tr+d?dF~FSO!;Gt|>CgZU8Y$XP(e8w)M9);IlkP3D(#Q0N1bDac z?ilaCzCYh9qD|+~(oRX{^E5~*$&8wvB@B}zZ&1#Y<#aR4CR0}T)$wH-WBl+jSgp+N z)hw%xEELRwcA}3Yz?KB5_Huz%yP`JOf~f*5a4b@&vsSVJ>#EP>&7RcJl8ol=;50bh z%rR}HDx95jlqxqOURC&QlUMjWRK(~T8s*QJhust{1;MOv9c~mCT8Q50|Z8S)xTAL-a zx%PGMB{239I;$&Rh7KlXx|_KVp4RNz-zWteOsq^~fgQ9aL-|uGpN_pUzq~m+&9|~D zUTLec)nCr5qk%0;MkA!oj%-ZBFxh+#<3OQs0~^8GnN1dIMORJ|Zg3suLPRv#{0_FE zDzj2*9`hJRWc1E>Wn#;}YDZnWI@W%z&!4+jtew|w*s9F{)ve)a5`s&I73{!(t*1qF<%{fj#&bJ?b_YZ&ncYpI|+u8TZ*Q$u~-9<#+ zoQ%CAU!r6=^g+V@IqAeh{x zELAI3)*`Gqb{C-P{7$@V?z=9*&|a`6!4}`gIJ;v7+ofUEzBkw|o#hk5INfHo zMst`V`iABlPq?R~GIw(w;3&ESVq}#|7?wcaW$09OxluMboj^pZ`CQl9uM6(g1G_+v z+Lc|hZfG%HU%~G{&-5{hghZ1K8|Q&WS8Bk9!$%WDWL5OH@%&XO$#SjQl1Y@*n$UDm z!BLKulc$+WjWIB+ZOIC<-RzYj{4qI>zoN`>-`5pcI)=@|#?TmJaQg70n=x$42f$(I zNH$3Z!E+uDx7j8Pcy@xW2Vj+LRGHfxr`zGPbfo0nnJho&^Z5Y0s@)!?@Bc8J*5xIz zv#~hf@&?pt;$>-PJbS2uX7q#1sU3Rz~NIal+oG zy_+4GL>?w*S0&_>dDnK`ZfHy&b_@`*X@?h^=Erc-6dk>}GDJDi)K_EQ8Ea>K)eNu;Bw;Da?7G^t!kC_ESKjfjTRD zPM^mB)v4|zI?+ACtlRN@955qc^b=#UGuPdHv&%R+9TpfaHz;9}iNde}8kmzBow-9; z=xl8FZEzxXMaAyiaV>QZizpzw;;WnH=GcZ3%5>2yi^x>w7-to6ZB*S~9}#Pw{^PVi z|M;7~{ri9T<@vyR#ri~F?qP?(AyEC=`;MK+C=@NIWSI?Vib02ISQXq3jk7Y<4J+!9 zac9&mqJd3QA7hSe?&3J`knd{+Gp?KVZ~l+}oxOTp(Coq=KmXYA`!pFwX;%kV5GlB0 zwB{&|bI=dm6iP^xNd_QuN3N=(P~{auRX-95{SlpDOe+U7&^Bzy%qAYvu?8s|+}1@O<1pF8aGy5qlp&eq8}zM8L@fye zf-<828r4RGo-qE=R_%uJ#U*NCj_P}j>9Hjk_BeZ8*D)FJ^+_DGYgyF1&Qt#Q&0 zs|9YzjW*^n<|AHly>^aE;(}ce10Dt-XF5buV7KDlX~hdQ-OqnQO8% zbo%3Q`j~F3V?;mv?KqFOVWT_iLSbkT>bt1s8pjZULUU-$(`=}4j2>?!x?}g1mP3cxgJk6u`DioRMpklF zMwLM(JDX}2U=+s~rW0~7y3LWWgc@U*J;t78Y*iH?^WMl^hNMb|6t%9P+k@EEcW0yc z@bLtZI^8;RqYs}3Nd~iUjEor>gV_z5n_IOHn$Jkd7)Ov%5b* z(FJyE&>C5}qC16#d`^E@4L9%{G>+y>W4E8f&9Y&p=XL|=UD@|lMHvHOz%iWeYEGW# zc}}z{?d)>`;J$-hu%i;J1wYs#L$YB9oj&0QoI^ZiMgP7PKXjgRXz-o(=);BX%w6gl zu2W<9q53?q^cXl2tW^{PoicA8Owsu9v2SxWod{tgF9&gX?gNIL_ zTJ+jB4$&*WvN!82%w0Rz>g*lYegCnmStVo{T5Jd+V9hRWR7nRk7~N4NTak;edH6Id zR_$sonY&Kq!j9?$dXN|@pTmqKF*}~D@^Ql&K0r&-I1VXH1`Z_6x|Dg_JY2{u9@EF9 zx^<_v`*XmnzHo$3x}LDncKLVzC^yPzC!O3yl-aj8_Mrk3*-fkAB9mBSNaG=hojdpH zC7x`r*p?ye?req*n|7!+Y`HUS)KTuP{O)4`dh42uxW;f7(UUgiD0J*2<8He{y&4FM8U#=k_c9FlSt=IYAML#}ie#ms7b6R(%Np4wE#PWv5I$(0@^q8Bx+SB$nn+a-!p4yMv~tDHsuD-XYu%rj ztxOdbYE>c&&7E`T`FOad6AltCHrkwXnsSWzOC0v^{?GpnXev^L+S4?K*=YK=i@B@w zj-(fQpvRn$srFP!(`Dz{v91?+VKk=G%$#diR{M~$dR@elm~EYqrC7K#_R2Pg4Ys?? zjO~&GRCgj)uQu+A7SGek-aB{2_pP~$-N$O?PJ?CE+Fcu+(YQ+?Z=V%6GTR;2Q(dwW z$I!PQmi)%tRnPGpEch_AKs@d@2#x$U{ ziJUSsLaN2K>BBma*i~6M=)t}-v)D;=O%1pwv7@e9rnb!JEXs@7xjImJq5@gKKxciA zrp((q?$|qoA%9R)=4Lr;9H$uxHbmL*C^J$h>?6pj9I-bd@m_f(%sl#nNemQ@6d(P+k`TqXn$1msesWCxBz3!h^ zE;n;6JKQ5ae*6Fa%i7^Kz=4UuMvHSCsKFvtchvfdx=GJfpC9|WH}cBMdyILwm0E^5 zTg8s5tiMJ9n@x@`TxhgU8BLW@&2yYC6m7sy!kyKJ0`Ohl3EHq9KIH?01}4?5GR~nB z0MTTaQ5rxFxAQof+`Ncw80I!~v>s^FckJ713_CRBtYdP($LV%9x`+ADoKqZyhMd)w z_RyRM&1G)DcUM?Fr;OuxXn1RzD0qZ(4u8booK^!#(2a%Wb>;Q-g)WfYV$XtC3IUO!s`aY40OqMD59bu5;~bMN_#9?$ZY~v_$9z7A z`y8@Kxum8Ui*oqewBwNXV02i4E!yp)nkpta#yoV;hig3BJo2md%Y67j5w%;Q{6QJ{ z-FFXf`*@x9fB%dB1sPSHcO$527(Ag#kIRSP;oJnkaHBg&tXEqCGcGP}V<=t1+VPf^G zw-L`4fMAYhk!CubE)25$fq72IyU^%eQCZk==XI^!dx_3E*WQu!t$c0H6|A*M)A?@n z-g!ls<897DmXhNDhKt8x$`52Hktf5);psuIx6dbC`|tA!63W zP8CLUb%*@qw%H~E5s>6SRrP{UBm}J()k!J#sL1G4mKKZ7K^aGvmLLnYT8E*kvPDE1 z6`3n`-)W^3ZVVS2=v;lj_l~_gH#eGsX0ey6B_?x@sc?uNZjKZ&)nROstztt?u*=%o z1k!qv1AI49L`n|SC(t){F15-#5FvzAxrqT5%`Je4kUw2H*-KlGS2po=92&L zL%r)i`f5wep<2DOmJfk)uY^LUlByFnoTYSwdlcZwG2F+n5)Sjj{mbXCHYB&OONN~8 zs-5Y69^;oBVkVwiwKzD2cS)m4oiuLQ7c=+nb+1?L9i2$dDK^F3;l@nSZda+*C_f)# zP8p<#l!=IF361_`bJ{3VhaP&U*#|fktLb;2kSeQdv3fL5;zoB>#eS_U9RB+b+gFkW z+>8_*y*%<=B4||Px^u6Tp}Ajc2`$FaS}WFjT|M*|eiRC9-I8@@@7<}4Ighm6*@bf+ zbx@(`(X0(M>EYpeK1)pCalJE@t%(KgUd|{m6NHrB@7MmW`~3Cs%haaJ*1E6CUD;)H zw|AfcWea%Fy!N(rXZ_r8P-s8Yb#`^G``Rd&&)qIF(7av|Z}D5j@XpBh?x<#N30^m^ zY&||cAI`mZu4V~&XDe#1h+UTpk`hgAWG@jBHhR%q&QtL!`Sjxp@fTYR&}xrf-N`Dr zF!g9u;#x56=xhh{=WJP~P{LSfy)jSMBjSlGSl_0gex$7Ctv@oBSQU0%75g_-rgTql zY1X3Em_zF$FdYN(PBJluE8-m$E;5iczakOq-=cJF+wtyPp$AkA-?amF#;TOpIFI2P zfBR@q>aLCi6*|;uIv`P&yR(0@Rqe{&&k#*JzfPaIb49CXM=1(+ zRi9Xr6)g98wv32pTAO^Rq*5DO5O+0eNef3!|HvE3G_rbUn7kSuX+tzc5rK?Xwh}B| z?ZzVcs?P2)vSA#nFkDAg%Ek1#!X{g_8*wG;(*|$c+U_M( z&D{5$!TSM%wWdj^)^5#$auwKx(!)sa>K0QyEdc3g_MT?VWA6%4Q+jUq-mqIpLUS)E zb8S%-b3?OFMXY`OesNQ*g;#aQwlHhaN8!g2(Pbou(2$GyZR0G_x`e#inle${&|vC> z$%J@tO-#2r<`){b{2TX{Dryl!;XZvO0Chv8ewfflTB5fC?i<7U_A6Ek=Jcs2T9!OP zp^CSQLA+ym>=ZR>p&-n4t?Rui17=o+Kq4~N)TtLM001BWNkl zwBnXe5mSx8MjBgb>_#$)?rKB`XSNzma#pXYO8(7wcU|OJNk|GMu_|FAN=HLPJ;%zI z4Uyc^L&j+ID5~_cRXTD*LUhsNG*p%S$>mlfwOP^b*) zY&rKv?-r7MH##Ml5VP)x%6&oN?T=z+-lKT|Thko6aaU*G`}Jype`J+yNY?7!Y^l(D z<-5>+oGj`3)^${C(PcU+Yt=DD>xwoCkr0kyE9zQU;2T*wb#KON>ZzfxE+8L;H)SF9 z-W9RvgM8E?(KdkcSh@PoEJzk=K|I0_+i0^8&o-oahE>R;>8d+K?($(3nPO5nx?035m z+CeptqdOE4u+FZ1bh=F7piQWAVfhyE6^rg*u^c;Q9211rX2zoY*e-6)yRAdty5}KLLL-X)Y56Q$-5Zn z?8tj#)wWy4beT#~k3tm;DUC*{dNW!SKD+Pg6n8XK6Ma_+m7vuvOKX$Vsj895kfw(; zvpN-OP-#`^;m(ck4pdFCtD^2bcZujmZ?ZY4ORTT#oki#|K+SGETcD}gyEF>wF-5z2 zd6xip(sj-ux$XzgRJ{_)OLK+LCUdDa8Y^;RkX!o6Rs`eKn0gD4_Z~Pv#zWOL_<$g6=0F^sH2oIevnY5KZyfViIB9Mq3==(a@%unYIY&1IY%? zFYWr*j8=B-`(Cezqskd&-L0wB2!YY&heUd^9Sv&|RaH`i%`{IbD!*EQTIdxaP(&lE z1X_kjNEmxFmeO@g({zGeRfl+YPg^Yf#yBR_HP`yayT?3eB$7y?`J-5PcQ7i88R7t> zZ|!(B?il}ya%M8_)^s^~57AXReEf3F{d!kjl!(2t!_?Yx=)-9%Le5hnC?bU+0%Rh} zWP|l;x8h)}g;J-7cCBSbQue*>D_1pC9=|@A`TF;Z+BR*k*RL$K}GNIHdSlh(XC%9ow9Sisw>UK2T|=jWY#?(NKTR4WvQKDyT4 z_jS_-`8bfcpV#g8@zZ*Tq%d~J4#fsWRT)8P`WiNKm)mYIroBw}60c>3OZ?M) zm=sC~fr)c~s$&e#o+Z?(h`mETA)ee)dDyA;%STnBSTe(JG+R{hgC4ruj(1)el+7}M z4qSEfl{PAh{=|NloRm{dSb2Xh9S?EIh8SGyzA0$RPN~LG(qh}on=GMPqB24VEn^9# zk?XqTI{5JRn&?i8tC~saRc#j;egz9cR5l7@&M``@@26zmZOL|FS6!Bqs-bCqAQOx# z#e#aNm}Vn&!_ZBET2NLQT3j*+2(^Py^Av%}aR`jud;gV9kq_P9sjGGNds}0Uzpway zt?%x~$YDe^YS3k}7qllZpn9l(w!N#Owlx=+RvgAuLAVNg&>_}bvNEKv zroL50>6DuOXl`SPJX!=yky5MmLu3=x(e|YVsX_~rRg%5Eefa1`;4W5mQ(5)MqIP$) zBz9C3^y^Dv^ZIRS1z-1tY&mCXN$LngCuP?#gmmqwK)ubA7Lp2Z|1^t>3in1QMuv$- z=yqV zNZfbQhw}(6)#^T2Jt~se64M3aGxz&mB_apsFi9l(2NMvkA=frxx2hVe-|OD<{rBl> z>oWZn=sP|r7+8&lsi5zSir@S9rXTk3;553(&L9AAK~58$+M>UzZ^(jl=9^TNX~c%g zLRHBGN^}2ckyh#iRC*H-u@o1E*sL7G-ql6Xh_&~fs4x9$RrW269;%sLdvS_Xc2K5a zW$ZilBAMUP+HI|+tp2eGFQMF_{{!{FF0wP9y((HFK}ie~r6844#shLI8#bdVOI%Ik z_syNux(ZEE!F3}pz(uE^)~ZztkKDg@bvo>-jQ~6li3WQtY8fQJ9Uc zhFB+!n-x_JZAdk`vbv|#&+d`wme$?RZdFk&(}As0cUA74>`vhxejGiu?;=%GZ7%W- zV+jx|uvs!f#3FO;9VG{^gGD^L)VfyJCJs2FsPEa_HG-7deZQ-r!;3FU2@c-9Gj@a& zQN47F<*vHB92Aj0g6_JxMOsq#=mxNrN=R)quA-texTGYb!pqc9)nx@4S)Cc8WM^I_ zhsi5b)V&22;%yCNW|x85y%H~mpl9$c+cc*#D`xJ7e-roKLA-6SLs`#Q?+nW?4FHm5fZ-KcEV~wi0CrA%d*R=7* zZ*x#qT5FA6O@xO0xl^#Z6|#wZefNDMBfEFWA!3p@;@b3uJJ+@qyRnMr#OIRl+n3nM z9L+aspUv%2YKn~OwUU&K&XsSoGW=sLy@>uPMSb=*(r#` z#s;>_kR2-{L=I>HfsKkGl4|=uY(s%qPq=sY&RAQnx^UR&S*g-Cr$H;;m(*Q)$WXWJ zJylnN~_k=g(mS75i~bK=fs?u-Fvr4 z^n)uC6qH(1rh<*qR&eOZ(WNp--S4Kiokp12vft2n7)N8afcUl{K^R288OZO7?H z3#*o7$~5647AoIE%KVYXuXtami>EgrHHEpbrk_U7c*n(9u(=E~g9)h{Z@-7DS$3t- z(M_i)yEN)Q3f$qTidu{7raZFQ&%2GVkc3Ec53_B<&%bgEw z@lkT1x4iz!_mE*=-m4^Dh^ACa0ez1lQYhOcvHw83DC52b)p;j`qgj2ENxbs%o13e>Z8DQZINh!$RQ1@L1`P&O;%Nis*Y(5liE^AI$}gN z_@Pd1;m#(iD|b|_Mk!9VR1cL9bWsqf+?(ZNh+I2M?CbO*qnI*GdfL$F7OHkPAj5s2 z*BwhLrSA;fL~zO501Sb*lxD=y5lMPwNM?eW3QJep@f}C>7k>Vs3BB610t^CUkn8 z%}je+TVPP{!@OH6qr;m;DNjQSk?2X$Q@YezQ&QUnKmL9?q?vR(XjXWKiDEYHYUutD zNgOae%*}asbpr$1E!{V6XLWHAa`+e3yMuUjd*Wz@pIaX&V(zIv8aVJ-v#Wv`fz^44 zX4>w^4Tz#6HH%r@tv=jl<_)|S(Or&jn%*M%fB*0Q%We_RF_I+eU{>WT3mFJ$8BP>7 z*YaznO+AjU#G%Gh{mxkZEnx40wV#vJdcNbmvbNNYyP{Z~UH4Uq-Pn7_9a%e8_Ydrx zklS6@qY*s51zja-!Pfh=cMHaJ^0Y&wZ)}*ER^PvOycbeMMe2H8ujk#o4O!4q?bW-K zy-+)1_r1Eb4Qv#t361ngigt?;)TV)|sx(>BsM?K-s=ce?>W*3^(Y!MvD`8z`t?q8c z9o_DZ?040z)&#nd_1afhnqXyAz1F(!xMIg%k@5b1|NB3`pV22}{YH1(*X#QkJ34wjE9)M3Wp$;Z6Htxa zRn=Y@v9C(zM!t8iN@T>3IC3N3y`TGjcC{Y|)Ra`KA3`V4QARk79l);pdjJ08lCG(n z;ga3)-D}snYyES-SH#ZT$Y|`Y)qxu`q@`J@QHvSwR*cLz{WNp5LX|>}L&m4u9Mh`> ziGfjN(5-`wov|uW`@Qe?ekbx-{T;!M-F%ja+H@`KT`({by8);`s1QoEP}PyuJxtV8 zU8_AJ;5fu*rxvRj)vUImGKY`z^utQEBTKsImIFXz3qUAUMHh*#RqrRl$OEAjs{^1= zf>$DkiUJgE_Lb4~Bh7#&1-W^e4?VT+zR8G5Hw64EETza$ zrBJ(VS1~f4>-V6Ed$)Gj07;||Yt+5bY^k4&!ptqbQrwMqtL*;Fcq{%A^v_2fi{eNt z+})_Ux~#UN&`=jKe!r33994zbFzrhajiaSpT42St<8NtaBi1`J4S7*RWA3$63$od} z>QN}^B|kBYci!<^It7omz2jZC6*F^#t|r+Qxp6-WR%wZMlikJdErZ>6Tm=!@-T5st z*FN<4JS-%arc^G-WtXHGTn)_YuHI?F)!ay5t3-q*@u>UGRS@m4qSBIM?aciw{O&q? zJ0!I$g~vFQNe0kJNFVnwh7HOx6E6wuePboM!+QLEW*+bNpV9$Z_n%hU5{Y08hPV(_ z(Kq+*_R44HqW&s`$nKCTMGxBD#!(;0b=^C6R%KJovf_o#F=GF$^?FAi93QIPe4>(Z zB+PZU)SV?wLJ|qh+_x;0Ni4Azv^DR%FUniFZJt$Dx$}AoVyJC#l=d5!mZ`q~{r%5> z`=9ooKgYlPt@7Q?EL1)jy9=57ry;x1Ek;h|!ulgC+MGJIn$~OoyqEgw%Z((Y3cKK$ zRX}7)24&d7?|cXKL%M3eXsv{x_u9`~-Q%q8`YQ!CZGZ<=)a_9b*w2}`#k*~Q4RuCH zZ#oIiqq?eYX6@eaHA|PFEZAF0H1nGR9G^0ExUg+kfSq@+o*Z_+f~|ur-v!mp%DMw9 z)boXRU8wi>pYG?FA@@@U^@O&9ozX&7W5H^5#dnDqr=g;1VX+%3Db@hRWTCU=XsTBs zcVkDbXBW{U`qdq@#~A-mk-q=hJGw+CS39M*-GD09IJIO^Km_YS6|c5 zWp6(SX1*e?x>oUV9-ouCy5tJT0??~lYXi8q(Aq4VKE!mt_MgwqL&j-VSSxqyYxDp6 zfB&x)>4zV4>>U}49Xe07&x`=djk)i&CDwk&^W($6&ad6*h+4jpxt>&?=ZB&rc4|ZA z`>(&QcO2u>2vFxxWp^!BwjC|adhYEaZk`38M08Zwdaug&7@yNe>)qMwRl&9o)|Os5 zEX^GuvEMll0r#K31Ir$#(;^}6VqGn|lTry|w)u$q`7!3Yxi$gJ)5gz`*IaaU;L55U zQYCKGtkqR>oF9YNx+5Fl>LRF$Y+jo#Jq0O*sYhUKhyqq3HH?Czs*6!&nH{|$Dn<4N zl;#kiYp4PivF_*Z$WDlx(!1l9`tW&_ygE|>Hg${?bPD^c_1gKJbs)OqNgcu=z2Vxm z*&7_4`zNDAMd!?_W}ytS+=@81LZR9%Ca#`>`}@20#_?rZLeR8V_6i!f z&t9vj4N99$rEC-_BC)eaFsgofyej(=`BXymuAZGV577xbiP-O}&{=^_^|K=*FNmtUp&j>W52)Pu@>6b za5?8MAop6JmsM49Wz+_w6&1m&7ghI_w`IPs;W?g5?$G1YyrYe)n|baLCL;e(RT~9T3A6tP-@BX;Xc`& zu&UMjoq?#luKV}*Iv;bg_6{G1pQPJ4kKqH5-H9&2gQAw-XxR;Pm`D|*rH!=BvVCXu z9`@0$(cks1+*-Kxv=roejye7Km#Js1=lAz>ujQIH2W=RBqz`?+o`3xF>dx~t^9dSz zckR7!{l2o}_&mkH0K_0uBv#hdn7}HeNy)x(uQI=1za^IOXO~iFq zXP5u?H!VUMN?5IC%`qOufR+py_R$TH=)?B2GIYzXbMefb>&5%JcUNan_W~v)cGcW} zKR^8V{EcU8Te%?AQ`;INdG`)!Yya{iMc6rUUtL*)WEs|$RR1Y=8Z9d4dk65Jde5kFo;>D5M31xTv{hy{@WWxidEBDb88dpH7|` zK?UgOnVE}naVK?JS(RdxAgPCpFWuF#S!h8E%~SnGOyQ$>ci~6P7C}myiFfb4a*0Ta z24ZDPfk9YnMrA=7!T=R52t~b9uZ+E@ZilM^!&^Afn)_n!W7p38U9Au27;h}ekRPr1 z`Jtf3s_Yp%R(?0q=wmDhpogeAs*zG9HVP}=`@ZiL*97RZxVbzUGT{_0fryV*R)kff zbSp_{t9F*QwjSMZmW&3EE+=OmeMc&wkai9WdNaj`ALtEpTX)u4{zVAQ% z{M&!E`T4s3dvp!|fUSfefn4h3FlNZ!v9&~1Ht^L{a9eololZdc6T%_IXLm=CcDDH4 zPr|0UNWI7GIPHC{Le4f$$)pt6U8|Owg(`{pQ#jh10V*Ck=e4W$HMCWl?W9q!u6MqF zk^~+Zh%J6lRAsAKNR$4FN5f(`GJ3r^K8f7dx5+T|MwO3Ybq3(8@s~y{K__9r*&ZTlCKrwY~##i#RE?t|rQ8sS_?k3g|{()lL3tBJY>_9OI~x z4mLJz<|-h3n8vc|8p^SC3-rWrcdthN{u8-s9n3;rx85aYN?8>ChFnoBWtDoxjc!PT z^cS3c>Q_fB&eL(g*pkY;0utK(VM z+V_A9kIL>S8!eQ~0V~y2uhReafBdg&Ex@ufWH)`Ub+31>DCpkteqZRM?WC^Kj_|2< z$MyVc5$aRTS|*@@d_JGKQHN9k<$4@S1<|dW(iMd1G$=t9k*&n6jLfdK6%d;;XA9jN z>e-8K>O({*uBHkgxr3tG#?Q zYh{&*InkqO4WW3M3w`Jmf?Uun>=wv8d=6!?p&X6w4xiwpREmr;CDt)i)aqKv&4X%2 zSO(DLZsHHoAiLU@Caff-qG7J$2Gilly&J8Kh*$=J#9bMw3-XG)_xEeB_jO%aq0r%T z*aU?d0svB`st?I(32{WM$PGWu$NDj@i?eQN(9Ui_kOQ>jqPV&jOR7iC?rk&W{R0Fx@syCKTqM8iQbh4>VR zBm}sxAo?(uDmFH_vcY8b4;YF|)1+K<^RBLV*UsqGKZD$AbZ!B%tC(mYyGQ@9$^GN2 z2!Ok^5v%T4nR!QLv^LP0Y?h)smUW3(Ymx?XNU*bVNYE^3=y>P4JCxF^GsIM)H5-V1 z)kZ=R7ozhL=>wjKZj6N~-Bv*6TD!zbbv4`PrxRJld72Z*R#zuv7a^9d zfI0%$0aG#g+5Y%w@u6d?8~w!4#Qj>C3Sd#gAEP1Fn~L3$l9Vc;(9qHGs%Tb0P=*xz zoX-2c_uAbOlwxDYjz6MafJWVom$(3CTI&o=JC1W+WS3+i0rb1 zIxEw>ACJEs$KyPwjLu&3q31a&nEPETV=Z8@yU|Hz<$Av}b{jG!R>b|i*L$zH*S(6u z$u1$sczm4G&d-|}_g@l1J{-MYuivk~*1odUA3h(asLH&A-547v(RmCz24(Mk?Oh$V z5|n;?{^R&OZ7`8(nDb%7i}(9_<-1MK9#aIT(|HqVWO0==Ei#flbPi?`)i(JvO_^*7 zC7(3?fBw(^EpwGbXCyRRV}0*C*FEp+zTbbn?yFirZ|#=c-D+O>eqL7!<}uFsc|3*# z`}h0bfBz9mv#)1#GF(U}m3y-qO-Zr&c(lk~S$9?M;){YY=dSy`H^iB_BBGHy?)2Oi zdHvjzjI64?YgbZRm2_=%EF(S)o~zoZ$Ju4A>>MnIY70oGpG_;#poo{*kJI8DHl&64 z5Ir+@bhfHNjV9`pS!A11MwF(`DZ{9kU#NlJrPVO<5WLChkTg29it>m(tN5PV~D#oFZJo;?~sMqMi+Azde3&M(I`WGK0eNeo0|GC z=Z|krWT}d>s}^YD6x5jK@%b@CbD`U;3rHF6Q^BpBiV{Lko!*X8rwmLEr>$7gTcjx| zt>%XimE=#y85;!w-3_EGl&loUNw`9cE@M#3kRldpD#FI#oa*oF4h(^4kW@{xZ8Wqq zvaT!REnXrAb9XJYPy}tDvI?9E6BaRSeo*Cp{q8Cq9=;h#b#+oP zm~Ua)n9{Z1&vkE6Hxp>-kSQbMj=GQ)32KXojFT<6H(4r_4pG7!V$w63G(E>Jj#HFo zLOYGh&Mi5nKZgF0PVHH{5aH*cHk2)JtQNh@r}T$8A(HoNufIybe2BRD8rb+r7=bKz zaW!T8Mk{%^g9t^->U?$g`)N<~KdXz|$25Gc*u~#vOT%ola?ET}q*2BaGQk(1$Ss%1` zz5mQB#J%aNP-aCT>KHy;8O1v?Lyupoib|OuVuuLD1`3U+8+ux2;=f~sYU;oSaG)Tv~_Um_Fr9R~`uf4wi_|7Qx_D)q5LclDd)p;mHFoh<# zkvs0_*nYUV`eU5`IHwLIcCK8JNY$dScs}1BJtDIIG z#gI5J4CKbm%b;C}9>L0<%V>s>qk`-5c&^s^^bJWXrl{+B$0c?6r1a zoWztYkFa(`d*vo-nc3^E^{K-SrEH1-Nhi|ZtF)>sAWT4|C0n+5MC@kC67IBwn*!xs zg4V3|3QBi(2MuXBF9xk>N73DtyDK`5`iOV!xKv4NI8>w+3h{=U4pS-5a@KjC2USy5 z<~)QISiLbyopJ@8GMl2}LL#B#Xf4CNTRov1(qNA+ZJiIrsPe>3Z7o>7?za+E74e|d z;wG{tbQgyUvMHOQAa^u~+0wX$CFnr!+?$CFe4tq@t%rj!S`R85D}8FoIeK=u&{TrL zuf&(PksLg$76XmJq(8cV{lC6a001BWNklwTa|oeF>se4@rb+9F8Jnab)U^KZ6F4=my|RyomQ3bi->U$f%!r90GH*zgbJ)6 zsTiDEbB>{vBMd}J{Vra;R|j=c)B*@3b||~_Lf2iy_88Qhxw95kk!(4h=i?t0NLqxm z?o2JlkR)hTCM9eLD}W{zkh8*cbgXONA}14~-+b|t?A9&^W$$$KigkCjDw9wp%N*ib zuU|c$B*K-Dq>1u)`5Ru!+(J#mOQXWqHWoW=eDZNVrwvo}+rQR&|LecRD|h-lO21c8 za_yC0yP|Y)6mrQ(1$u8Mh!?rK1tn9dEz&cv5}8((Art-&_8#|LuR_vBg?3l|O-@ zXj2`Z=VVdpc^(|`^?v_eM0^k!D)#)~mh=r#9aFivGOzrv|6G6W_{V=dKj+zPq;`lZ zjHwt!{Y@sC(b&-dt7?&$3=U6smWr-%d>qF#s(Jhk^2sbpR24LPOhvI$4>6+7YU#=2 z8&M}2Sf{b3T-mWRN_X=6B6Rhp|+Z zbk@D^wYrC@KmrV5F5;wy>VctzseP14lQMlYQ0a`>&!#FLQKfi|!3@WBTY zfs(*QAl}6XGpmTvlbB`FkV)uWy9@T_t0`u5+kajIulZo!h=Z~+SDqWRZ=^nc(q6npaOe5 zOdirAgY;oz2#_RWsss{6+C;N;9%D>1W(HJsJfz*%C3dJx<4M|qtR9iQQwXqAbROLe zN)~1_!2s3JL!ZZ(CDpsDKul^=>_N<&_i9`@l*mlf6l8;k>G`2HV^?V~zRO z^*~(2DHFsz$FwO#w;2ly5wo3x4v8vj9G2e5eoSpaOS5^TXHu`|JJu_&gsXgkhuGiGq~yZNVDUMY%cMWw4zO#QA}|#r@60UH!v-riwK0n+L1x3c0W7iXwAVXV zy$I=v?N?>3?YaJy5!)@@vu@<(ioi;LcYYPBw)*={|0)g02dR1F4UMM_bV%~48JqD|1EDFVQg zr0wYOZ)hN+x+lrWBAxA7D~ps^EZQQs6N5%Wyd^22U9DA>EFnzxEr@RjS0zc=gz^xc zM7xDp4{1TQbCV^5vZo9)Z8qWqV$}1K<$;!_gW2#sXi9_1`?cDePc%hj5t4~A8O1b< zD18aB8Z(s3v%JVay{p>5gSrz{+W$TTBQPt+ROK8CEd)&)I!1L@>*PnOxf+DPbpDv9 zans=)iNQF8V$1_`1f@2#7!cy_avCz{Npuuu)es^(29Kj^FxY#SJO}?RvrCxu#zHD$Jf_-uiA|9 z0LoVts1OZ&eEi^Poi)$Ho_~|$7{(s8mJ{_iRhCUlYgnoMpz~vxBqT+Z2zYtiWBjnA z?)|HSnQGsQ*yPar^N0O4X=&!I4I6{Ue5B6ZEM(&V%gi1P_Vv52ke-ZE zn@W|rQb%U_`|W!*4;@w|s3F4$2}DM%tB4OwBk*`kJ4{sdeA;p9sdG*{4n3xfLB?g$ zLyd`9x*$_|unwK$FfLUZkB6GIST?>t3If*0c%1TVlJ3&AYlU}L!^WZK&*S<0@$=AB zWQ!h5QUYRPv9wtvqrs*;9}m(f5DOFC0PJ|o$Fx%*Ol&j;lOFS!Q-!9?gU31T^O#zd zN*JdUNg-si*~#$tuI=3&QJt*-H;I6o7Fj7t7K%uu#P%5DI3B<9kpKIC|DUh5++PGn z*!ErZ8&MvK+V1Kq#TYF!^sQ!+c%jJVL!DqsDzf7Rc+6rDJ;8Ej?eQDrW;VEkyH)hHshMiL=u3h*qkl`(vvNKEh0Rv zcx>-=ua3K^s-b3TAhMwkRquYI2kVi2Rcu43Hj#1@MfAPab$i{_yFIAT6~12keMgC? z;9JyMckBg7V`R5Ls8OBZpzQQgg0dB7rBn3s_jO(AcV>Ed?XOxZBG=dZ&#z6|lS+}q z4Kn2xF;V6jWTZrcACQAB#xNR?!K$YG{rA^bDY(^XjIDa1s@ zq{dUon2fkplVRQ3oe5=S?FA5#bXx_!TLD5(K$`-v>`LNqxV!44rUsIVI%N#TpHwT6uf8X+Gton$g5E6xROgYNn&3D=iA%1fHuTQz5FN z5OGHAh&JM9S2n!pXef)BnWk1Ap<1Y>Y^f|pa5;B48pK1B@2~66fBlPvDu1u6$A9;a zF(o$4X6-LuFFKxdK1kb6ef;gm&%b{>f1E06G{$_M$2`w5KG?GB&gwo)riqLpGKg7B zq^pISi+2i*ahiy-i5-LNKml#ta{f4u^GEC^9T~LWfATQZ^Yr|3yC=oo7Ae%NutGXb4r--pz_Yh|pqpAbLS#o|e6^N! zWA8g+aSnlHRyvw$9wdC`a^#g&5lOW(v$NDu)WFsjlOuzPnIJniDk{pf2T^oxX$19h zqRncRSJzv(6UZjUO}YG$=3ALlf+gK-M0slW#7VPvJ;N+W^x?iN+F>G{t)}NsZ4lR!O)4E}EE8Igs|ies1XUHPxj=VDL6yu< zf$OT?P#GeM%&sC*=5dHkYG$ILGKj&WVbsb^1b0!gN$EGJ#k#hjc^oZ0(~-^vRKGfU zw|viGDMCH?+sieCyAw`Ledk{9y}i8AcigvsT^W0~F`J3*6pt2c)f;ZLf0;=Pd z%4)8Auaz#RV$2oU_42#`mnmYW%F~|nn9rse1dQk7AOG>=Zy$3GQ9d6!A3vE+dyXN~eP8>1d%JsgNzpV>*8A7{x?fzu_+WupnViH# z^E{4`_1f-sp3ifhhwxOHpU3zq%q0j)PgF&R$NFk)5))!2kd@kTJ`Oo~j&U46Xv~Pa zyh)#P=%6N*=z4$MvD~*```zMfRlTXuY>_=ogp55Y`dZiCFNzGW%B%hEXwa%ggdl@E zt1^9wfP|~0ny8bQOdfWg`W(W=;yO<|KXslu26HpS>|hC^#b#BbJ(YcTb;5L(N;R02 zd9-L1C22F5T8hzH0rYIaUSD}d5lF>&vUYUj-bgPe0vT9!IspW*?xamxzczN$1bgi}x0Wc$h9=_ux*g;B<9R;mA*&>F)tQwy zSKs$sUVM;pS+~!6p_%w$vENyMJgS+<+f?R{!NMYilqAy0^jPIZp`WLKlrWBC-yV0A zseH3g+h}m+%HLETCGSvorIW+5?H`*tL$XIE$KRf+G_7sUZYGF{WlYLF zf_)1U(bzJ7Xv+|-=AsmvVuY#(Niz%2X&*M9*W)X8Va~|tKi`eN`a#-%KM!VgqCqlo z#DLa<$5-a)qH0;Ss;=7o#cygAo;nJ$B?gId?{F5AW)F0y=`L<(4#V0zymRU}1POX4 zPt!rvCx{>M#r=et?nDuH;eL7frkR~=TZBkPbIocgDMC>#!0CGz7$wXF211neILT<5 z?51mP;XpUl8R*h2JcElE6T_{{Y-sPi-FH>pUw``MaST2Acn%5buSGb7j`n0VVn>pw z&Bs=;WUaNCb%?M)<nFio|t5 zHJXb z9cVOX7I8IoR2W)^L>n?S%X@kU`2|n|5z+b% z(}&QyD(N81aTcue5X7nU8rhspc0EdpjVimYAH*Qso zabO%mO-rPX$l6?akBxDP0lVCLO!OIRN3T`*F`kog?d1MurF?h!YR7J>Vb(1rBuqk{ z*44o^S-|RMAIv0;l%s3wfK8+QH&G$-oh_lC$A9vp>pV>-$M$zz@2{%gVvluyNj1(N zSsukgPjm+A?KkasK0kCmIz}MMbBYaPui%b(&c3g8U;EWB(46ad9CUs>4i+u<@}0fz zZs=pk$H6XwfR)Hu&Fv{Nnfx>!q$yND-Xs00UUYndn$R+ytWXx+g}k~M@4OU5tGp@oZ^41~=;02v=NQJanFVPS z+fI8l-Pd<#x7~lg_v2xoKR?ceeMK}7%x1=V1|`c)Vv--k$#rLC_McT}w`zHo|7sy1 zdR10~&?FtY@`~+4?J=fhS1{N}w8?99XLQ~+bUx_oUhX~B<`^m|d)UvP0Q6sfwLU;T z?j11a>5qw*ARMe2{i%|Ji5y+^uaxWgIK&(R8TIRR(-VsQPP?Z)A&$fdj z?0);Qiv)unb57wLUW<;XGJM~sCEd|Xn$^TaCb6p$(h1(eDCR%cRd>vBqU-g3yWnHk zkEKUM?Z?X ztm*Q6zfn;jgY*0k)ZlHmdq`e8d&zY@8kl_uLgEF^==$Jzl zXbv7_MbV_)9p<}ELUR+z58`634iGc(M3pxAzVBNA*7)l8fF8_c`i#6@>ksXN_0g8q z(m|-^(iVopyF%6^0nKW-ZXhW(i&l4cI~mvp7i)psc#Qb?TJKGp^wDJk=y<{uD>&MB zP5b!x`Ob(8!q9($}3Qo-;j{sH2p~MsQ zD!pR2kbQobx8GmkPOpD15RDI;bRKg!-Lad~hA0y^b%EUp>+Whqi!4@ZH@2Z#_t&-j zD-i37?&tYKv736Z6)|;#=xUnH1MAg!r#4u>z37$gRbAU>$Pns}LK+930DVw$S9D2t zmt5c~Z#F(2)_W<>{*KOiE5Yp8?8t5(yHt@Gt2Xh;V35;j5Cu3u)Y%{!%n%7{iG+I^ z(a_**zXu28XqX7^_oDSB_C||I61fVa>%yH;wxIKDmW8!Nnbm~Cx9`<<43L5{P;5Yp z0KzRdgTz!YnT6usk;X%~BeNaA2Eb&b-n7B5z(w8Guq#+t9VefaPm~B{a&kS<$sMOp?0%SB59L8p2~O^nRHYH$-TS*rR>ZC_X!`Hb$bh*PufQL@GlTf+-DBWe`*gQIT$x@rcGw$Gcj- zm8Avh%JLAhz94*-cIV3)Dm1wBEae{{?>Sdvqo)# zNbT5uRYFRbm^osVR3)QVQe`8Ph^4*1O~EUYilvK$nGbF`dUsp07L}G~HEOVS6QiJ# zMDA5@P;}7-cZ2g6i-J(O1|&Lt(_wJ`b-!Q!c7mMGA9I|~=VKiIrg4hU)Cx4+^>tkv zU>hNL-xmcFN2}zu;89F#3FU5x1IPFnf4A#?zrU{KxBvO;qM<~I=<%GkGTvhxjQMZj ziyABPs$|9_6=Yn!Qa!T6n35~_chyg(s1B-6aC2PV6GB~{pzJNlh1$E#j0)ktbqu&N zAWAJo3)CG!f=&ughILI?ft>VwTIV5XAj{EY!_Z_!VYM71`w(U(vTCq*tAkLPrEGI5 zO^(R85+}1!B``1t6LqF)()=I{=}u54Rjq7Lr%9VVfvUQtU}cq;SKh_j%XbfI7P;Ag zx|hfOnh!FW=?MuYVY2x!uv9nuMt4@5*7NA3sJ(j0CIMfB$ab_*!Av}TFMpgLo$=Q{ zzxH)A3&t^tOsR}&wo)ky1MR>{JGlgd_h=|pHs_!Z8N7JgIOoY39{WaNFn?){SEJU>58>g&IJ?cMWXM|%b_hp;r0=7YZ>^_GW*VL;Ey zBHzem<~>Hsl&4K?Mm3$JQrCJBHUBsiMb%sa*x4*1R6%Wmu2|7y3?}aMq5w;V^tD2W z)S5*$fs=%2adfqUsk{HWV#)Jy{QOVC?QzLC9?x+;#ZpqLutl2l%%HV5+ry}8|0POd zmE=pxbUazI2XP{!z{HcjpDgelos6n_7ja(&QqkgfZ(iYl?FAh*G(jhESFaLb)?A)W zd`x6n?C5*(G3E37x=2&Gy7B=&v(x>n@QXYcO$v8M4jFU)Z_(o)YnPxd<3Cw#-(L+R1iOZd4CZ{m^Vtwc5XSgy1aAr0&qzB*;a-qls!~s~son?Zk>7 z!W?vEdKci>0Q%CRXh~_{ddKb^91J3oA_I{ig|KfSD2{=sTD_9&9D{#6>TgehLkpH=zcIL1z8)x_E`$`0H zi73^xG7^wR?4&8h)%WjBqfGVeMs`Rds6oUeX6@9G#g+`QWJV_!8U`k=ke;CQ{pw09%o_J^=4hBN{5nEGD=toLe#KFmm!x@vP#q;U}h?$^U?qWT=yF^ znxz}gtz4t~+6m&SDs~;jB>gfW)!9kjeem*Ef91pQfI3x-?227Y(pbJ%$hQuPlP70D zxep^xX0;q9wfp(Jx460~Kc*%NWFmB`FO=aqXd*f`E1w*UFhuXpg%j%T+;7Uv7i z+r|)3?jWL%&xy3AY}y=Lk1iY?Kd3`b)uCkF)rk@;Gx`c2^i7h-1qC(m>+GuSI#X&aowA_NaJ`69rpU; z4~9j}<=5--^L+mJ@!()IvKv|CT)hd!s?^0@G8kwYCv$@C-J5nW3F|3h6>qAxs8wB* zEkW5+q_n%E2<~}f0{{RZ07*naRNH+N5yiEyfgIYoW7(R+yESf7Dh7)XNOp8q!GCYR z5lo5{KDuj?gKKmYr`&GWH;+fgnj%dF>T07k`oyQm+Bk#aZB`DD|M_gWdwcdYmQt4hO> zl7f!FmO=pqkO~s9TN!nF5NTn4WWLga`f$I>$z9&B#e4~QMcaA8FaPx?gmti^njvvY zDI}qiCkyc44SL%`}bT`Jz?9S?` zU8FnFUDC0;x=dFW!q|$zR#Pw<6`dK>bP>790aEI;G+-omS18W&BE8M>b$DuW>LcEyDF#&|6YAI zG z0WhgIq1L8ACVKrsN()OGRTaaNMD_Uz7XA9;kKez4k)A)NO??a-x$oEh3ZjF@G!0x5 z4LnKS#FfQWUd7Osk?_v_Mg2qa1N=ohqa^Api(pgrZtZRWm0PQdS{e zOEsa|J_~oy?tGXkW(l`fYB@DKp6v-QZsNy9NJbJ76X}?9@^AV7S$cOQTaskiPSrl{ zvG>k%s=E6=0Z8zmAc7HK4xqq11`_}Q3>hN0pRTHtxg)~eJ|MCu5n<-0x>i?yA@i(w zufNPYLuw~Ox~`J&@%r)nA8Z6IRa6Rv14DEYvEq{RtoK)_#Pea*mA%2N8UhtvybKac`WR8d6q@)^oI%)nC^oTc>Knj-MaLklZ)y(aK!6K*USi zb$V87NliKAJn#Iq*XyB$E7$6rckc7^ZBVNdx4HitraV9X{`Opb~9i=oVL1e2XLv8`yW#v7hRa_M$TCsA0st>oy zNx3mRdrTbYTzw+hp)Q|8erV0Yrb5d_w|cwEYTMzIoUiyk-k7%RAWUHeKUBzG+mNLIY}jtp&H>;*#gGjnI@TB|n3 zpkgO7I?q4Pdo4RS)Wn6>B3npeA_KfwhBj!&tyP_I=N*(}F(R5PQ(_Cr$}qH+)_K?3 z-K(leuvcNAM)ZP)^;Gi|O6}_1tYLuaE>Z|_)ZObp*N%n|XVyY>cU+P8`#!&}_lekc zpXYm>E0KGjU;p{}^={hZ^_;_48@YS!iiAB~)evef5ajOe*yx0&b!0;c)oQd?3$U)0 z>$=Xb_qBdCx1?BZF{B`2tc?4w$PzpBc*qdxZJ-{H`FKvBq6ys94K>=MZ0aZogf7C) z$f(`7RIAMUKHq=*sndS{Z-0M11SpoVHt~J$c$8SI4Y?tido&t(NtlqvBqg!$U3*nl zRIbidyA*&Pwkhqx6xG8B148MhscEN zicT3jWB++Zti9j+GiCVmx8ujpzkU2T%-N#&?&@}{Y>28(8KyoI!#KqK#*X{^7k$ex zM-N-`i1F}aKEwvkM?WZJ-0W zqW4BRSdEZ^)XrS7?!C^cFsBmh%*ax4Da-2nywHcKBfqd0I@Hw6)uuX4hWX3pAR@c; zc-b@;74f8SG^6UwxPHa@)sRhQQ7aW|uYEk{-~RUdm=F1wdJvGL6u-?RyK<#8^IK&e z#Al!jF4X%zudmfvpn#UJh}zYVDYHt_D%`iK6tyf+fygR!AHqhrO1XK)y!Th`&!|Xg zRTcTxyB{!S?Wp&Cp0!i?ZS6ilAu8`LEVKx**wR8Jr4NWpUnOU?bh2uzxsIPEqC!zH zp=`QJJ3>}fS7~G=nv=vgQ7YnH0nw*wiwQW@TojtEa34@h*fFM^B_@6J%BcT}2IbZF zHKv%gNqgR1l@et5iayft6YybDyR%`_%H~FiwbH`Qtg|tSElApwaDlWoCRa0AvYofv>P# zr{t1s$aA}@^%%?KQ8o2pQ4-AGia%a4EjjVh0aTcJcSN99@T%63%M&RFPl zk?K6nUHQ|HWHuf^^_}-TA(1zxQK) z*zhHn>=sBt*gkmeyzcXyW1Ig*>d+8ps%tbA*;*82xZpS*z;lK4IuF$n0euc+XVi{J zE7#}4k3J3ql^ZCjJS0;DK;C&>=k=P$eZ~8Hx7eZWQRdH5jbQC}qGmu6vhGF;B+k1j zouVRCEhw7Z(t5i);)M>gS}RV*itO!9IWz=Ig{*zqug`z(_nE)_qt;&QCRKDq?!7NiG{)Y#W3^l=ED*ik z{DH{F+G9cSxh}*BFNweGW;k>z%TsIZ8|u zqFr~ys#f@5^^QW-la<>lQ@qXHkDvXwzRoND@Z3?A`W=)tH$RSty>yWiBg-?QQ?;^z8g^96m?c`HJ6<#s`(5&dL?ebreaF2f~D zR|rSDvjZ8TZ+3G5%4*+qT4)yim5{vtxzg%_Vl|%1Z243^B%7fa1+`;@(n;kTt)PH>$f0iFEFWx0L)kO%u2`X6TUpbdL*isb z*LkO64H7<;Cgmyq*qmGK~(!kX!h6?%_wZ? zvUa8Z%K*6xnI>7mBp6jy$t~_3+S+dF35d28D+y!~60NewKYmUzRvq(6urd?QR>6dK zqqRrXZe+tK*89A#QtON_+z|p!)kd$4k+Ko%rs~5V*>}ZKK7CAhbRNTD7F}bnEqS(> z3vSK(-fM5ap2Posc}84)0=S@CJF7f|E<4+30@$wD@##H=%o^P)lIRFg8FDl`Vnu6^(IUitX>w;u;_G^{1}-a{lzueFi7fU^?ruPkA$Y-WG0>n58n zrBhQ(v;&`K0@5Ke7M`V}>SlGfHEXdQ7;$H%?j6_X zg}w3Fv4A5T>_W2OqM7?w21peKWTK>`e49e>{KrcZU9th(1eqmWViRI3W?^J3pEA9+k>STQIvg4DR>tX=o*LL0C1eplv? z-+nx5hgPAnQ$^{rBen0Uyzb@WhY9x;g)YgH3!PG1Fh$I0By{Ngw;y}|75R>4g^y_M z}TZ4%D%7ajJ{C%7)SUgqF6|9gqhh~NxvFz#Mv0V|se|?I`>~~K{q=rd_jz)&LS=+vDWEE)f}KQX zUA%_L_!d&inwfX!ADJsRB`=JUVU^SL5VyD@_b!9>s_K7@mVIZgf}+3<#tEAFBU!oL zozKEv>q|(`x*NE{wKKgW_Kp6ge7=5CajQjFW?R~|!yIZFg+bV%Vn^PEN?iA@f~AzC zA9XeMMs;tEV>LfzW!y=^u3OBM@Aoe-h0&p8k73~Cwub}^y(-V$eu|J~doMBI@?@y7 z*%4)SNb&v?l#8ajAVyJfwZ3!X9xehWc<-BiQ$zM6S9F~!QeGYI*@zUPBJTW4+&U8M zs=7aeHoAm$^T!dEg6+AkT4LsWaXWLts>P%N%|uDQpHHhEeP4ZFJG<*N{sxoYe`KI+ z@Nrlo?yvj)wQcAS>;O`Z56NfWRu-mikDhag0=cR)QY!Vn?!s-*s=`(3|A0Tw^FQL+ zL!S>$iU1NFn`JtsJa{7SjM?SV8xY8&d1|G!p{!#EmkC=|j#dmQ0JpMeqaK5Kv%=6^ zyRF;}Rb7r|S2r`O3jyuTDU}8$P*j&5dffZ-e)E_wvuI#PC(@$XusH@s{V0ZDKj3j_ zWF|1joZ_vXWNFwAY~EU^y^0qwfkM&QWjOrc3~dbgbKDGzHj3*(G<9I{o92CJgp{x|RnM$uCTIGwEE{e+pgT(qToDpQ%!~h0BI? zb=?KrdtJ*?EIRLOD}1t$h13n9q)>KNA_F38wYBtJ7^cFw^}ctsZZ;jy+BG? zquWlYj(e4!WqaKrjg9+W*HL5S<87yVJ7w1`Se6E83xqI6eS4jgYKO59t0loN4e1=f zEf5vLGOxH{<2fG4ifhYYwPs1C{@?%of9bBZ8?fW?vZ*3%<9R%e$K&Vt_}#{o>NtO$ z=lTA8UspvV(MoGX_7EG;jzG1}$HN{&O$0?r>H|2UvcD7RzvUA=gx|KXEam05>SMKX!PDn(nqL%N4YawNV*CX*>@pHWL;E>C_6fL zCD!Uh(aeW}SDe9!SXphAk=NJSn@ryK^_8p8T;N@$N+;1>CSlPbBRiUD4*~)-+r9`&$VngI* zLsexLTQ2rpp+bcS>dnf+m9?Y{1!7m7xvtvpxE5W;Jcj6a*wog}tj;K)UOWEP{8=kkTp8WTX4USvByZ+I$G&-A(Xp&{)>?P%g^1kyUUxEY(Yn@k zuPvyo%u3c>Yxl0s=vq>x>Lnm=NUMR;-Qg}OUJ+_4n!8)nr3-g}36Xkh*VaciyLVI< z?eNEQ9MaLsG&uC&A!=xmgj8p8`%{Oypo&Q}!vcIh>=>hf9o?#+`e0Rd@G}+AFGy5Soj3Ez~ufpqh%gf`jctD`kglR}o6{MlZzx?b~M1W-Y$+ zURSJp<9m0Nvz1XSA?rS`3(jLoQ#6OH-O)DMWCaV_q*Y5*xu6;u7ZDJ*+9qXoumi%L zzWa{aB3;emW(#^!*eL`}ny{UB^WNF_U6tRp;*OwXcI_?~urtw4x1<+Se5tVVDGm9q z0VQj9I3uf@%-`oQgPtW2#HmuA+k>OKmPIf_{~Hj1tp+~4${c3A%3{_E(B-0D2gRzFp=6B*;$r@+QE$wEw#s(!~98o zz#3@9ID7&HGd&LM_EJAo>+CzC4wd0nM6?Js4c=QL7Kgyzk#{U+z$68V;q(h}XH{Tl z5r9cZNd~GRVvUGSapQN-Us7}^d`PQ|gTtk&$sS^`;o5~-5JmT{)xD%!yGb;Yr^oC|xb3b_k_2D>^c&-@=kEE0yt}JJVStEk*s4R*=flMrwam1l2z979E7S4FF)P*|C=N=)lJJ=NnusznqV zW@fs{Q$^Gby0JmH*aQuF!N64OfGawY7h1%Uc2kWkbg4YWjgl(TqUKQc^%eVO39GXb zx%oI=^QT|;udl!U>`3P!N<|;`^4a2ch#NOmRG@5a6O*Pe!+Jry!H&-A%(BwwbBHVb zVGhcYaoFQWyJXegsM_K_+Ob(A87NevQ8p;L8ovaFWaS$S$bk^@7ClrR2A6V{2+$Bh z2l>xP{lEVA|2Z}Qw*y_B5H*iGs4%R(R&n%16KIWItui04@#A$IGNmXFd-^a8eI2jg zobGh0icx9RLmckqG#f*movFvwRdzuRJ2O7 zWmG!Vh=FZnR$yIHf$W`k-DmGuFpx){``QA10-aG2sCDN3D^X@+8c0-&W|rPOlznvc z>T2m>jm!?>y2VPrAN!@Xzw;z>lprH_D-Z1~)Ir=oEpdws^aVh@loLT17xfX>sxCHq|CX zifUpuoMKrWx%Z8=w1Fh4B7us6o>5=9yCSP2vMYD5>aa$bZ?z$y;v54uEo)_6((lG1 z#C;5dNei{q)J|fRnWIF|669^FsO-Lnn>SgV(YaH)Bljv8hkb+S)rW?v`8?ccV{~^! zq+s{T)Q~B|Q|h|jEb;lI_P5Kl7(ONs9u^9TwFPNntVBgngviVm(OfGV`h2>N(netz zV4Yv2(LdBhM?-X-d%b^&ZE4MD;cazQnf4Uz(o#4hiY547n}UMUh^_|qZs0X^2ui;1 zwMF*Xh{Dr`tR26;Zd53R_pZo@luVP&hGwgoPH`4?F$jIYq24YIPO)JR(1bl29of4H zpUtDCN*5>)fCZ|G>A!dYW9aN@)9sknL#;Wj?4dp;MHvYcOxOxUNpd60(KQMLgDtYF zc0>sWF^uFG;#94QSl8;6>L^{`phxD;Dqv|-%1fkT?Z_%qgSxl*uCqeAT`NUXycI3o zky%*~?QV2I3aSE;EVQzV*gG=<0MRjJFm>$(NlM0b%C7nReLO~<*Y($lonsv0vuk%I z^cGDl1*pxc329-sXp3~52oryjT~V>LLFuq26_C_ewVUzkaN0cP3)(w2A`gQNX;Bq7 zC{1LRnowLA+Ec5FpFtp@IH`r*8c7++pfsDQ7r3)c-QSt^=O6!3p<}-CIwH}Y$hhxM z^TX#yDdt@3&+D&W_kAVmuA%OHB}!wLRcv37X=G=vszl9pLqv6ph|t&%u>uh*5!k5J zw@}Tyn)kL?zV~&-AISd?DbWfEGPIrad;mEawIhffQr5uE*qs-56$h1C1#}rYKi9=K zI%Uhe`LC?f3rt(inxj_X!y}A04Q?T@hOPcnWwgxDU-ej|WxHzrJ>F zk@weIDZ?8p6BARXF{umG)8`}LRD~mtyNECW!#U}zH z@D0r>@h$yze^qViC-VCM)n(r2MqVshbV;_E))qVAGt3&(rNquH4GCEnqe>J-N|Mh&QI(^hO@6Y}En2(PSxrDOTl>S`jAAdyE=ke$Y$f3lFe~P>70}-@IQ(=H& zn3?N+orit+L%za|Gj}#&!|(IC-kUDFUGIDKFF>(u-PNcg!>TIYLDa5+J98r& zca;QX%;?5CGer(HqzT~KR8U0v-jczwtGKTRhpJKp&sWwB<^g|~Y|4bPs(=L+Fs<*1 zJ5;nv)+$S#*6nQ9jL4)9abxZbD37QnFAU9g$VC%L(;dysipl`R2-O_`vQ;k}=!*AW zzeMacXC@KlM)T1$F)wJvSyxmG3Tie!KExIESFwdtrG?&kBc%&1H#yOc%I-?6ot34d zrMNmE$S5j0XI<+gdRXTi1TS|EW4z)|&Es^>W0Y zi83vTvQ$bnonxSMBoMpJb>l8GG! z4Q+tXjHI+`g)u5MZG2SaGKjwfk$l6bkR#<L|OZxB(NdsJ*qUZRD%MMyCH1tD%w^VmG{m-Pt_kX-1}=C*UpT03oPbk zD*yl>07*naRE;0j%~4QjcIm)(ulU@5iAVv;TH2VM*KQTK zb|?uRY}LMpwEcWNmWhr>b`v(;3m>s#-TnEW|NiH%|GIYO>M-F2;erMK|@_hD>pMD%Kilgs+EnQ{vq56EEl@$;}i5*)+Bi^){99~18qR$IC zB_9v{LmwEgr^0)EM85Cb_eR9RUxE4aF^4GC)che~QuL1iJoYJ#tF&N=gyh3!w?c?& zWYeD1JFeVe=7%5Wu3e^fL_flgvOPoovMJf$k$%3dXU)^4s$sM(1q5F>TlM=`ph)RF>$Fe z(voX;)&12LPaci5ZlWU14yKK@6;T@!0W%`av_e+ytdOM{J0oEOii)aLXxbpbNO2_- zDr~m_u!OZ^vBBMUWEA@in#-B1m=2vq`Z0SgR%o}C&P z`xcIUc59g`0Spd*X#&z(D_6_&^*kh2m5sL1J%(?U1*!EF6)8{4{LK2raB!`N(}19oZz(V7(SByDN96RMf?; z;nUPO9(Q?m7_IFGx^ZviOYQq%>{?5js(y>?&?z8)y@Bw@Q;gDgYIn-0Q5H4!@CU_F z$yl&KSH+5wS|+xk{_|b0E0k$zqdZ+8w$qG9m0-Imb!Hnk*QqI4>zB4 zbi3DCrjY4-DNbeIp)K)!*OKmsT18)dwdk{kiJVqM%|aRlO17+N);M%X_v!}cNV(%3 zUw>Wa`r5ftrai}xf9UHuU(cVCi0gCrjq~2?7v?xVUaud1_#ETW`=D^}qWu9>4vZ$1xoav6m_SO`bpJ3saBdx&84F=g%L%@B8}vy4+rqfGFtNpt24H z6_Pl|;vmPD51I*Bhqtph`go0?eg4 zfys_h)MNj;-$*ys-d%%=xlm&0#Myyu0s+tbYP8ji*sZ5eHG4KQ^VvO7`i(yZ$IYgKstgD=?8$cbE8 z37PC2ohAP5+@afnsjyX7&_k5R)=kSFcyjMwwYn>IY?q^TX6#NWrRw$+huTlEu3RD` zAYWKXGxb_wk+%scwYeyi4pg`}hpt3!Ei7tRGkc2|4OQH6WMdqyUc}18xAJ9BR24d; zFK*BtBB|NrR85*9hcek(e9{r`M15)1OVJ&&bMtSK`n=FG}kay;@>Z9Wny1LO*qk5yqAuSc3=|oSOv`B5EG^I1| zvqb)Xn%-r{mK@8rn{z!#v%UR9L}q0PP)FU{({1QOBuK#h4P6Kjpg$Jsk(Ci~-1jyk z*Fz02{ec-ka*>OiW57jz91rP!x2&c`>i64u89{}`gAPbnT5;5FCw->{DM|Uh|_Gq17k{#J2z{aHa#a;wDN!Ytv9Pek+})m-R|yYSYMG1 zv*Zw@kElH>HuY^lh>wTcw`C*Kz12D(9adX!sg~ihiAJ5JEzfnV%{;>`DzJ}%6WP_txA-tI!eJOd_FGKhGuK)R4Ii+`xY9QC5V{Lnt-V21 zS!W(p6Ms+chMX8rC`zx~y+aJA%GrH&RphlIi_rjTv>xias;Z`|ib(fGxHPL4VZf9>|6qI%#G`la!WT zryu!4D;R;EI%e~(2xFP%3y5wtQaG|##fJS#$X_;A%h zi?!5U9*?izzxG$^DR!EPc%hn5FWoy1Gpl~rs^si0lXOn8=fayx>hYMJI>hYoH((2o z+H1Pd|FZ8N_ue~#mTAUYDJ$m?9n7l|5v*F3pi0-+HKF2K{AT7fib>d1p zV&M*cjKg$@vP*A97*-F!1aCCU#j;FoPwLtVv7u}2t16~-;UhCUigf8vW{I zIbsJ4^E7n#`(t*wuQoaZmDPAv8gbl2)^ z_o=qtcQ*{YR0Z^68E^BsbB?hY(s=SH-bMeRk1O}?IKsMX>RvmFqoXS`hE#{AP&r1= z)SrEf!N?&QFuT7H*{_+l#d{u) zVLCrtTaai46eiAcWeanqa|4r86=Lc>47HmDN_Rb}ribyqJeQ7964WYKRPC?WGwp#SGmMvPt8}o$TBz((zZqzK5l|mRDp1t{&$YXjJ|0~i zAqtbxr1VwGzF=2p6-$khNZ(!3yF4ugfOgkfE%J``>P?M9p1pI)TjXH2>^rOFnCi#w zT2+RMa3WQT8)_}Wyk~H_hG4jzR!9l{I^2(`XDN4=)E0CtulL{A)b2yG_WrpGHar+e z+$HXB2}_Fb<|}p}3@)YG#kLGZ&EX`1>NckYpsJ%4*PHvI4b>4Dt=)wcFd zIdI)e_8zB4?a!}2rddZM-E6Y%$hU|>6BzN{{i>cr@*H^W~w1c*#g=RKQWaMIl;#HD)f007rzL=2fZt1Oaoq8VgY?FvawUp2l z=9T4RHM=1khrT5iSfbjTYGqtiUa&dKRBOe%J3;ZGOfBhD$@DH|N?(tB97|8}Trd9GR7m07SAx%0~4zE))n$3B|9uf3=JxIY8U+;c6F zhae-T_w@VspMU<#zkUAv_n)tQJb!cRrVLl@qAI652^F#(5V2NK*G8pEQ>+wn^-1VJ z7q~NK?hSb-AnN=UA}Ya)+d!9*#ughQbGo$}yS1coEpw5l$wz72`^~kx7TkTXOFGod z1+vC!F8%(Pnld1AsWRI^8OuXOR0=C{i#jc6ZxJW#@P~@wTLTgVs9mF!W^o@O&_`38 zp1n8n5RELxKC$oB?>*0|JriearE5kuDRn5_GgA zg_Vv?EN%!yRJ7UHRmXEo8A370_7!!zo7S%)TK5a_we2}idGcV>dM5`T>tmdePj=mF zsr1uEwXS%uF43w)wP12@idc6<`XstVK<3X_XQZyrpJ6G$eck%}agJFaGgQ;N_p07M zRSLVi?pftAkB?$?J7(^5gO2L&%1-hHfd26tWct zg3d)`CQ31t=Il8HYp0UBdF7U!rd3XApJ9!f$}YW{szZ^)9RgOD>~|yC30aZVA&O{t zV*)`f_N7rx&B$FZ*IAL*F7LyX?nFmKwd%XJ?ACdnEs?P@l%+(=)C|Ec{U_?yAoDEw zDZ092L0sS&wR`#60l9fPsjyxJj}9iqwOp!t@Ga4%rYhN$x~X*Xk8Fi5o{nOk82(I*+4lg??p?jAUb|?%c#xB?YBQht~UQ z548clc!*N^{VD3rv3oRN+)nQAqnO^+lk*T(VbeG$iHAtL(A@&|M>gQ*QcF&{IDr9=lSvL4_2Bf*Qj7yW?mx3!)o2V3+fJ(1P$)f zR5Dq2=Dt#|WFsmym92RuBSV;vIKrgaM^-sJ4C0_rltbAtsP75 z^``qgAi>}?NpwJ6)F34diV3_C7Q4Ms!^PSlBmk-v84;s5P;D)kyR$WWdbtmYSRvWhph|Ik)XSr*& zFmg!Uf()^$>N4z`l7}5f_gFi3Zhs|F&0XBZN~O0by2Q*)4-;Rtvw9K}$YyDyrHu_< zZ9=e*maS^;IDL@CJLbF_v-P(ALLm~_NqK}4#mJ=S* zB|_U3d$cypN-3?qrKF)-c_*}?)l0eya%F)k5=Sn_Sl-GyRQ4Fg$~<;;aJ~CltMa|> zYn#KY>wUlEC}n4#j~}LsQer7xfR~_m?YwquAoMf?OBuSTUCX!&2#?^qTl6FT;JUBpFUR$+ z5Zq2MiY!?Mjm(`@ z%Gj8B4dk*9EBgKZtOY-wv@{G-H{WQm+^obqqNTjqJImIF#7)z*+D(0TC%07R?k|OU z6O3F}u60NAs8*Fw)5O6Q+DWpos>IA&;wXi&E2Rd8*WCJj76~NBMz?pn>-(kG`!z5z zCOUd2T?k?PY}x1uky0LeoLjE_{_^P)T~`G}9wm+3t*QL0p3l2BLJD`1xve*PSHdx* zUfVjMns;3nz||I@)?RQ@4|G!&)_VQ%sWMa)+OQNW3Xk(+>g*Pc_5R}>i#=j8XamLR zi+Gwmo9&*NccgI)SUwI&sfi{~d-txpy94ONylo3^+1lL^Idt-%Xg?NL?Ju}d$2X%I zA>1l{Hkk4PX7^sTTD8I}MDeCht0A&Oq!OyTa<$htH>#ur0`tn{8(TVhcj)8eRAiJp z4>NJsom!GMgg}+)QQT|aclQCRjvp*Y$w84ZB2p^ZeEJF5g;pgB+KNILD1p>uH4OI% zV-$Mt?q%5E%reAx-G&d#y?_5>|M=_kIet`?Y7)X2-e-2ep?lU|oQi&u3KpPK5R9%y z5#m+zdJ#`X*1F1Nzyh@ht8e2Qd8d_*wYKkp; z!)9CWx;mH1(S@ib!>u>hr9QGGbDO)#fxPw`1t`9@TI$2I#9(d#AE01E*|Bk>IS_H( znH`fZu${f`MKe{~dC^@<^X8qQU4mZO$tDD|fofK#aF3~d;J)I0lS1tj>D_D-cO9c8 z*J`HvFmM3+fBx_P3le~^Azj#60U?h$RVST90GlR0haWb^m~z_p{4twT_Sf(CeK+>M z{QckF;9q}zqNPNqs7^e78z1K(J-vrke_nrFk%O_66^lryfb^#DpouF;cI>*N z7?3+NNuhgDwS=T72dS<)=1^5?p_5w$g0>Q*?wyqx&F;*!&d9avzV`d~&-IF}Qj!sC zZ_%1M^NO$6zXz^rR;~43JJ_AI$?Em`yuYr9Yvr}`>V5TYd47m7KUdIJMaNCU&d7q* z%o08VD1_u*`}#Ao(OtDWq=J=FvG;!6yJL6dTgEVPfZbZJTAh1UzKW8&)_s3gZ`mM+ zO>0!N4{qSjq3VYSP-J>jnnqKoOH|*n_IhXCJ1Z&W_wLArLTtIScki895!w5G=XG1= z&iM1bUpwxU%KOGzpxt+Uy+7Zt*9uhjUJ)T(MBU#5dgtE7eO1Pe==)u3b(LysQ#$r~ zy%RF03cI?q6g@hcl6p>MXGfuS?#|WObByWOkwKC=o#RkBRE8)GbeO@;q(I+P23kZJ zxt1!AsRl~HA%rcpC-tb^PPEJ{)oNlz@3=v<9o|G`NTWGiRSVK8_G~JU(X-nHTcxV! zs$#3OR40_*|Ad?<<>*Es0ea67>?;;zJPuQjo#C#-tWm<0W7tDgGHztC;yW-+w#HTK zb+6BN?Y$VOApk3d0MA4MO*J3|KFk95P8|9%fQ~PbE}7rhOo(5SnvwE%1wKvn)$nKU_qrw@oix4ArR+6SYg(%UccLOjHHjvADN3|AR)LkBCrUG`A zCZXt~MZO~lv6*!GxeLut+RmuRh3Z_(mq&!0ceNfas>Em{Q%`rP%~#DR2Mo6G%ehTcTX#z1X!>??yK^ZL7_PnNCR= zYNriUH}!c86O;aSO1pgb=Rh(04Khli$(@q_$wnTHdB1+XzOIew4?oVs<_{kqE(hFb z&Ztblo`ZrWmUJKGZNk6)#&1=3Z`Ws}Ew%=2l-!-gp&vtI8&WNSq=o2}X9 ztS5zyuDC^2n3OU(wc2Uf{$5LHJ}1+@B^yH4DleO=;% z77Z^;{I{^n3kovvKv#HnO_~P;yypL4t7!l>PaJmwOb+BtV%c%PInhQ zC)LQTu11Si16^in1Sq949Bz`@0KIzG{_0{w1C?b6;m&S|v{Kn73K`xsGxPI73I$3b zU8Z@f%k(*gf+8thbyx3Qv2xe`4sq@M6@iWwd#$L#-tYDGkFO{xN?cznuD!2Vo8leF zRu!0Lq2HfZFDfj%5+*gkpaU?rE4F>R9gKcVH$bR9NT5Y)nhyA|arp5x8Kweeekii|+1p4xc(s4kMYnDu>8a74+&_q$p^s_D;brXcp_f*6WY2bv-|RJ)Tc(3TNBH*Dkzs z%4tTvTSyMA`mi?1bxUl(#f7`SL3$Li5?!Aw?{D1IEwYY7WgI@IO5*ZD)E(La&)V@c z1rR02I7@s7#7M}7i0txAa?FQolcun5R6ti`L_^IGcp?jNLA5!|he}qPqCv2M z(MqT(0me+Atw*Dlq`A7_btN?9oJ!Tz;yj*x|GC!mJwN@vUO1r0se&CXRJJDXK= z+IUQ)RaQH8lP{)ZZd!?UD>^+9J2UqvokkvzY=tSxU)N{U?-gAC+Vn9VPKKx{P(M)> z^gTX47*(5b)W>-M`C6}d-S2pr{)+MFm1w;>KxbI)pH%hv09KWOyXvR#M~g1rqkUp- z-WPVQJtZ?2quZ+K8d90BYu(q^eCSS%q_*YT?&8owJ+g@{aei$A>$1Wo@cNp;KHsI<%Z_P-Cse8euzl*QSzjy-+dEN7cdJ6e%zgip=*7 zgX=(USW;)lQMterAsyA7ZNgFu+O~7Z^-*e#z3D8=DoXsbvW zccW{IXo(fO+nF39P!}_n&88JMndSy%C4FxhvRk#hg>k)eFXr{G5=xgr73`HOZhP|T z%AJF#j<)tv%Y|~h;uiyV{o%3e; ztvBgo9_cW+^=927mCd~`)WA3)SzD?gnuw|luv;2a#NaJzl4G(r_^vfwWkZP7y3-1g z@7Vj+Lq(?v&{9c?n4-`yPW`|B+y4wM&{QWCQqfQdja0+;edIBx`V?E>E1R9Q-~T9= zF`u9R_>W@$^|#+T;{E#k?KyvWoL;l35O9dtam>dUr$h-c<{`<S1dH~Va`+T;VX~u@tYHF0R~C?u^O*D3sfU>*v19LwridQ{ zX54&=p7Rt{b%;2}=^sYkcS74-q}XhAnyP34%h6z7*S%x4iV@gAnae|EP#`Ysu3eEz zDV0J)t?A~{E~$R{ITi6;97L4-wn82%12mKoN^FKkN$WOKvH^8Dec~ENlqL+`F{I51$^d_x}3Q;g283aEYk3^L@XrO71gWy!O5Kn^&Wv zN;)0Q$~&*G>)n}26$)`DWZE#LR!#e+J%kpV@CFGAbq7KJcpgSmw3^0+y}H!dp=_Hj zG^wVb*OhBGPP4~2)P!9q62l|W@B0|4$5Ubovt5RNn2k0w_6pF|IgrY3z2mu9PmWZjV_ynJg z(o=1GFhd})Qw|63s*W6zA&k!G5)~zU>ftAoJ@PP>;F8te8zy#44k2?ErNsx%F(6Y~ zI`5L{AE%qMVXivV2h9#u6D>LAJg2*g+f+1m6z*MB`*=vj{r>z}nZvUy(G*HalHKUk zLS?*j?_7agJ8<7*v=m^-Lf@U;8i~CFg-k(;bm9Kbg^YBZ)8_n!%z@LXmI~bLz^+`^ zN=6~xSEacBg0lUN+UX`{Pv}&%bv1V+1pMQ5>3{!U|7&Lniqg_qxeL_k%49V4a6gJ(M z9=TXMsv7O0(iokJj83ApwNi@mjjHT+5Wxi+tGaH`HZ7F#J$ZXC=8A|N(JLAkuzOv( zS6o(kZTzv~0;%V7ejKKe*N#;kfDFz;ptph1ExVqvlf1jVE~>$%APac}PkNF^0H{d4=t$YJmzBz<)MweH_#-2C6!EZ@FHtyB584-&sr@ zwpUiPs`O zg(|`ck-ed=AWw&;91MX^$5`fc0iE0=G07$CZ zJcd1=^L#uW)5bCU6g5?Uo{!^k3XL;+DjO{cKWcA7_bu-~-^tG%pLxI0U2(5ok+0gH zm2rQ4etmxJs;VY}g%wxquiVkK!~;mS6p8${Z!0OH))6Q<=0oR@@t7Qq`>qtDPivf{ zfF)Wk$i*w#3~p0wh#JwP3>o!PONZ*0+CJV`%)}s!VqzankLYE|1-^E6x z!MxE|H@XW$b%<6=I;GTv9E4M(IxCt2imQs5O3jW&XDO?ID{@0dj278ov&CEPj=f(6 z=<&;6&L1CBnYT3xxRVfZMrGW)@1{ngyM?>9NEBFUlw_CC)J#i?1o$Hv$*))@sfwL- z$11V{)fu8YYUkQnRjIw+yWZ%jEf5Ixo2y>ptX;V(X)JGLjaGV#k;Q7Lv?gjtR(Of3 zU}GaBTf15aRkYIQ7_RCMT6f%e-_>tL$Xbm~*Qnd@#m@Eq+VNte zv%93bGolckZ-%Ifk||Q&TH2NTJ^-L7D0xUJrHj_dMu9CYx$PnJLn$Qd+AhOsi3C%@8qRCrag4fpxwG3ToFbWD5jEp-5>GZ6FCI zcSTEzigqfwDdITXq-#ZdHO1%DG33xOY+{V*<8YH{m_uQnVo*0zHTPrAInU0l3{oL9 zp+N4Pn_=E?r-;NZi6UaLd&xA4X5I@MgErKppF>@>L=>j&XjCN%J|4qU5tM@*+Abm~ z)hL>$j`ki(r33tif}ywAF#ok`b_UR0?C6ZhZ!9*VksUjtt3nysvDd9yt`;FIx(B5o zCYA&`*i}-y>Oy7X5by5pJ=COpuc)=aE&*yYWo8wwOVw%JwNn+|#)6D$LAPLbSTbos zp7On3!=T<(%_?aY*n0~iwEJqUOs!^HSLa&jK2+Vcy>14ZDoPWh9xgtaiOBuNF6l{; zmW#BZ2TdVz!p1ygdPhav)Rt1zAiL{uJ$*LC2o_dX06E4O^AJgG6;^h1Cf61CzM|h` zDSVhU?#_FVk`WzMbg24wv)|3tUB)>5c+7dI&#Yb1=#TC}i z(*Nhb{a2V#CzW7Q@Qo~%3Zt8UYhNTHXg(g#YRwKm`uev&{^R$5*MFM7{PG}xgmZyW zX|jlHp#mLQ+|^6Mi<2~vDcgt%16b0FR2wSX876dmU)mKib`h0b`$F!-LN&WW!shTX zoGQ>AzhCPMd0KseQKqe%ZR)NwQ;nr6PJQY;&yVAA9)~J2iSRM}`9oAy(A2#fo$fwN zrnfaAi!Kz$MmE~ItI;Okn6$BouHBGOEmTKH5`~ajqC@E1TA>})eYbqSwbBCEZA9k+ zMYRjjrP?#Ymx<0YCu~enQVAPApaxJ2lpC74xo@}~LscsxqyXrS`@J*4%3OPQZlbD9 zSkR36|7d!9UR%0lNh=~V$EccX?fss6yJ;|Rkq`n}!a(4G4+d6aH3kwANSL5T{9T-G z-PS$l?7h~URbymkV9ay>LP<69E8+?BRb;mZ>%(Qct9L$Ym-vvX?(9BgCb4tv=kL9) zyjJcdZ!A1B?<}k-tnSsfOOCFMhAnng1v;}Yi5A?gLKtT}<~+_$-{}H9nyL0YPXpwP9hyT=aEk zb~-g%fQ0tSAl+f_Q0XumW6+N>KOgb&F=ISn(~dC@KR=J-ob#O1IYy6Wkg5F|f`s7~mPoteyMnYQ2fOkB@N-;DZUG8?$OCw(Nh>hSJ{U6ua0BiL^O^yNDI1;Dm0&OLl~5A^M08hy zt@O$w(SQnQiqzU&O-Y&W9Pk2j!3dc1ZL?LkL(a!JVw`{((KEII`(CER3}BGAI<17U)5F>! z?d{rS?l8b*VV1^x=N3I;gnRw%t<1a197}lS(r_i&4+(J%$V0#7wY!E{N>;Bod4lJ{}(^T@OCQErRDS(=Q~q` zag5=kn|qh){ZCb@nlKA6JGY8)j4<`ajB$L*Xr@H(y05M;!o3foA$PzG;-JNR%WU?O z1;!@_3`Pz*VP|Jk%lzTPZ6=_3_>Yfy3{!WvnHpNO2q&wus_W|e_VkdI{`61 z4xbP6^R(mr-8@boK}XnmeEziKWTRv407UxxCjU|Wt6pE0QET0=SME(n&ANAe-)cug z_jO-+Z$o-#XTErM=E{CrVz*V_#*1+TPGeh;vPP;ny3GW*u_VzsLINs=AQoU)rCr)P zd)ti9m;-tfa$w^Kn6f2nT?{&o!giBc3xpoqxB+#^={^H6R|;TK%IX4{$W_$?Y;(jo z;G_0xEvK8JbFgNES4rvQqifiv^R#nzU@gNtQ72f4AiRAwt2EE>IMh+4-kF`6JV^}dN&4ib^D0$!&XsgsJ^!Zr$bP;aaspi=)0;=h%N<8&@uzV7m2V?ZT98EFEEIMaoYPDTwE-LE?+1UlvB%&5yOKU;HBren zq^yx`4ZT&-bOtD}os@hd(C(r|)$UxK2gAn5TCaP3u~4O@7fP9`YAZKCW6-d)l_nsf zCp|<*N02d=VYm%=H4H^-DP2n93WWK|l9uG8i(5(Ts(xMBEuK_#SC;2)_H!5sm@r`m z1l>7eo?ln_zxh}HQhHCtyGn4I2Tdh~EWidDZX}Gwwet1r!utO8JFokXfBttre*TR2 zFP2VJ^ENU9a=~L*PYjzAUAo)-rNn-jDyi%Z_22yCgd$o2qX*Gwb001@xZ9iv4zm&G z^s0Up7+`ljWi9_Oz+s4kKxGNqweDO9ALEDPG)UVWGED(<~$?M#7h zY~4R4Nv^-4HffoA-Rr%;s3z(nAe)6iv{(bff>p*+N7CsSHU?v`Ow5!B`lMKuAjBbA zD>qTj1|#iG3P`h$xQ{B(e)qBdHJ2V|?3DUFb2=DsA8 z=nZW&%qGp2dePjhvXV5TgsWXh;5{gl#tHiZJSyFj08LTMm6i(RYpbywX&lTI3}8$yk?NHf=sQkI)x z9<$-~%F31>ZXjs_ZV>KK7A{1q)V1G8u!4094W%}a?J>oH8euL20T~hl0Q&8FGgO;Q zRlQ%vf@X3aP*j?f9l41n3DV35d5dJs&b!v_a4$Jv zQA@9`8*M0Oy{c}fMNBrT7M#L>6~kIqxCpU#>y{%lp}2BguYbIMfA>?Jt7`Xt>iV^I zt;*i1Yt&LI+knkGwQ*=umGDpx-Ex`+n@i=e$skyA671aTx>w%XRnL8Yz4p4G?6q;< zsJ!?0T5Wj1J1EeTE4L(v>DN{MfBmcfY7xc(pvLW!M(;x9Hrx~&-h%f@i_BLG`R!l- z_@y8I`KOPg!hmY7%;I({8^hx#8K~-ROvZ>{F}~!7=Rp02@J^cb!-tzZIpg4IqLcy= z!vr)q=7>o~{&8%=j4!{~m*Wv1BrG*>R1dVldGjXVaemj&7Yh`|~EvvyC_pXht zYytbm>(%AjVeRxdhlQWR2HVoS21JKP`G9#-2AX*?{;8_9kZ7Zb+;`@7gb#L$9f0~B zM(Hr#-mj`OSwn(53w<}k=J4TBhizqlXV%^D$>B!%@B^jRlf78KRk!sAa1qt~2|2nO zls%}SHnq@e@60E2w=Bt~Y^knXy;Cbw<;PH0KX0}*P(zI8y!#=sH^UFscN1Tp1%=mDaPimC8MtssD(Zg)88q~IZy;fG&S923n zUCNc)bQk)WUCQoJ=%en0USWr5X1CjbTxBveq#hjN?94}%fn}t?aD|WNL;x_Q4OyBuTiu8T(Qifi-g#|v$em8IVP!PC9MA6TtlE{`xbLdot-8OJ zPpOsYwY!(}+H37=t^2M_WBYK%J9$+Q0uK`MhCPS|lC31O8Y$;{(&F3W1&(T#e9n(K zPIo$;2q3Ro*z53K>wd0Rp;*?P>P!9F`|2$2ZKdEsW*5NhUWLrsT|MJ462)PXQnE(w z*Y9y_z?$Y**o`-o0wqrAm9NZ;^ZTy1B3KT~BKL`TO?&`(OW;1~c43x4Gl= zuFPG-EyC(S%?7E&-0fdx@Lry&F|`E1PyB)p{U6 zYtl4~VTYNkTS-2Q0W|$+wn?nfopw-+T?=))L@UtS4|F-%S-PLyJFQsTKvudYq>mb<%m%zJgVrlV~%ta}y_B%KPej2*!?Zby$uBMtqRhBNT#OhRU!d%hC zX2YorKHV_J!zWB-c5==*0TqHif%OEOW`C0?u&HB?2j?w+*3M3N9FVI4q3~jG9-npp zQYI0oE%P=-mDaWOjV@GmD;yzHI?_-MpVMtJrMHT<(V{h{(V$MrD?4Gd0&ZpL-Z0}R ztWD5ud3h&`%WW7NSzgnk%y!FK>bmphT9m?h`n=5vdsxs-DhXtjI$JD>ZGG3iR$tfZ z{VraH3no|(eXE8Lj?A{y5i+7nDbhJjgtO*{o0LpM9D$C$Y7S@27NP(bf*)}(ChZ&+ z5hh04Hs7oQk^*!f%;#Z2=;byCLdCE#Y{<8bdqBz;W#{}8aNX*~&8BNm-i; zFCwM8E0JXGW;tl@PHJVf(FWsa$Py8ZD57He>~Fwg(+O)ZQl5-FsK6 z)p9o2YvsLjfq7N#wNlqR*RD-+aH;oh-QVket~{qeTWuivokcsWX}vphfgWaOj0xJ> z*Y59@a1-qBg8!R;{a-6>E7aLfc2Ulq=xn)_P#U|lHc)wEtsQyi_|P984`P;^X?1Ns zPIv2~;MG@G7SU*x3KRb3Ckuk!x56L_d40o|O>=gl8Zw!aW=%*o2+`;^$Kw$`*=6W| zdh0S~`uV{)P3aDchmCWLv_!V;om+8!en?e$oe}f+ke{WZ&oQR?y;<$BIpX6nY|g&e zXsWgMUR8Tb`>y)#%DZZ>#>$0;GmK^3CU7eOQ0i2}?cnrPx$ZA`8yf}pNm5pjD~m$- z@X@C3Mz*8CPAC9_mU~*inTRha;k5DK2tR9RO3tZ4g&AR0E+5uaS>@qln7hYuOnTU~ z&+s3xV>k`d{Frk_Xa+vw!!lmKzuh?I*;rIjZauVncQcxT@iY%HLClyoI?=`%K8Ddk zt=ho(_;e1?k2!?gS`ZzX`P%oTMvL4HTS9RI^-^9=W)>5+#NB) zoDA4uF^)3;0+)q3hWRWX$~H=_?t94GU9Et^Ni@6LhR5{j0Nl(*AUKa6M$<9EDY@G) zha5gVaBp?fobH^as#4zED~pv-w{`2jfg&ezsztjTqz2TUVf!539s`)HIvB@b)vF3& zCSTn(HF&mcZ>e{VKqN#hYX0aExL{zT4#cp(GxtsgD z23s}ZVFPrS;RKM{X2X2AHEP%1tpd!BIi}q!{eS--{`0*Bs7(bHwF;{MMVoEyT(4cd zQ`gq&Zf($qd3N5{wX>V&THJf5y6O`9Dy(ZnoIYCJtyk6MZtm6`Ep@$Q5?58X4zQga z_7NE7U2cSoEn25p6{dWc^;;ipMyjm}El6QlR&Uc*wl6=!d^WT4b${;~^YiaNIKsqt zt|$poS*lERTEVVMuO}=?q8ChI43@FIR%fRbnC}Jc7zU3Px(8%XQ7KgJV6nB^(~j9~ z*Nsf;95T|j3PP#BSTg@mt=wtuO-XP|BP^&WGSPrl)@B7cjU)`Zti4l(X9KcfP~ClB zyE~hSzEqJ4uiKag1anL1(%RW(ehJH>#))vFAA8@|@887qbG)0@Fg7>*6(hjtUK@Mu zS1w4X{k69l2!2Bgb%;?)?euUnD;K8$p|&Fg8?BSZc__x&el!7jfn6IQ{BV~M7A7{k zuDw>tVnpBSyHU*DZ{ke8zF#k;wC-y)d-cBW1W8uz-P8qUVJNe^-jOcSs(f`;Hkxqk zZW$(N@JXG9ox{4fn!z!0<=%yA3R;9j^-i@lh%_a;m%6&tmA!Xk8O__ITWEv%_?uJ! zNbJzPP#3mqMUxf&?qWzYQW)AB-BhTDc$apkbGpqfgv}3H6#ze^J8#{W1jam?&%A%- zDz|aCnX6=|&THk}RqOu#eSddWw;gqBy{^u?vND0%S=dTLgID&h?&@uhF-!(yzXjFm zuqJ&g3SYrg*48cs8B3?o6cgQ{6(7>gD#>$=csq!Di6f4d{f zNtqirI{R-4&fP|vbS8>Mx|~gQfuJ1FQty0)&3OC=VAj3LM7OX{3k~eoJ%iroVX)cz zXAb#DgXa!V5drn$HM(&|V|SL?{j(a4hI|R8u42(=wC!eL8=KK!vQ1RwVWup45$r+$ z6Gdv6-Ah^5(4@yb1pj~Sya&ZvWATVXAk8c zef{On|M36e@t^#&&;KZY{k!XV9Ul+CcD)ileV!mivhqFbM-XQy&6rJEg&%XW#O9zK zLkY5_)=Q{lxw_0Mh5E8M{P-}IRg&F$A_Im(T`TXcam)h)B0br3cXtKnHoS?zna{p6 z_!-_n7ly3OkTr~nwtH)Mp=K96BvxrhG`qI_^z-la{SWuzu+LE?udZWSNlP(^kYu&7 z2@ZU8aBIEn#I7grH1D-AFgV#6?t9MHTELCXW&J(kEJ`l3+2~seyvGi?dG1^8!-wUo zsW`kCZ~yFDn@&e?BahrdZ_Nk7NYy@TOMH3ywR_if`1IN>8ek2;%$|3;D<0Zg&lb)! zdxXX#p9`-oM{=Vc;nn-g(j#m~q~!0#izL=Do8!?EEaUJ%c(*X^dbStG?2VVq2Z%;j z`%u$aW>mMz6V=@Q7Lr#oCMwxYk3zSy6=Cgcn6_A)0Zm{UXW$F#s z10G?}sNCE01`Iei(t5dnie`ew|8>*{eJHrNhX?Sb&`uDm!c^B zb3~`B-4E=(are{&QFgZtuyjv)7-zm{w!T2veI;gWG?yL<&49RX=zs3p8NZm zdoxb67``E>H0**qmEq~;T7_K=YuT6@25kwu)0#esPL$1KR<9>k*UH2tt?C6Mj__!- zBMrN+x+~YVf=J@ss+;vm3k)|u+?|#_M);9R)e0JTGzT3djKiQR&pr%EgXY7W80NodEuXWW@?q2t${w}Rt8|Hzx1X!>}7j40p zQz6RViGghvO(M4fnCO-LDy+R;ue}AnZd}y`tz4~6+uaM9*@{gSQoWS5rCqOXq1Acy z&Q`0o)YV=4n?kn$d0l#*^}26VRo%aSy}s^U+54&2uC@2|oonCMTHibG zbzjfDcGi8ZulsdDiM96qET}c8MO=IB>vgSr<+koK6|#B657*e8Alhb!4JTw(O{t+( zy{@{Sue-D|cG{JFb>1tlS8mVnxl4^U0bU-{dCX&s2>MTQkl6ro3q|)(yvG2i)n9-0 z-XH&LL|@;}0E<9$zeUGk4Gy1&)AZubl_r-VUupmWU4T3WI1Hc67Sh5@naEwz`YN{j z>6Ww}e!#r-Qd+kK;IXg1D7dNBO=EEC@Q$E|0-eB+xbF+976BY1#FMZQQH|?s(KKga z-K!kY)6=Y3my&xgkm?x4-XXUM8|W>vLeLsC6ZcHhtaN@P`b?j|$$o%cln>cqFT zaaEzfllRDsuF{gxV57F2KH?`t8%_0kHVAubE9hOT`laZIx63cyvnh3CLN zbzdaNz|QO&)ygWCa!>d9F{>>%+|9$39aeE*0tNyMJIon}<}qN~**1p!47i1tn{v7N zh{JFgQNCF<wAgZ>Zqzet@9IGw^ypMokaNH$W>rD2IgT+8Roc2a6yq>eF~i5O4eV+v z%;)eq%pz>kvV#XLs-+#)Q>XQ5j-+7lhdZa?5}w9D?t4E4;62B75vTGX*RV9_J29uT z%A5Y#4RQq#G#e~*_wF*ekHN3stNNaY<$5D?v+~w^N7umy+C|Z7a15Ua(%+YG=Y<>l~p}0f^Oh2`@v!KHk-gB*S`1f`?Yp% zX?5Fr^L`c9vPZ{({Ca-l5r6kDra3pg!;CbOy6U@}GhkJP?%3wT>|ti@lw&fhp4Dq` z7+H5&T7y8J-jE9;tZUy&nN{ls3@kjCdX5oJn(yG#*&fqF>e{>d`d-(oZDF90Y;$up zq?9);#(W33ooE^|j?=W({cN7|@i3t8Yu|s#b*WBeuKSM1A3p5*`USmDdu5R=D+Mh} zo2h`enrzDNtGhA($zna+B)-;#aEp^H+x?bOqa5zAgf=bUxmDhdeB`wQtWm~#6 zRjiBcv{6`jzf_r8QfJ@l72#&p-86I8T?rnPt-4hpqw=Zyu5`AXG9SnB;q-pv^?^7z zj$(3etfqhnj1dllnqH)n;TQ(ML^dU2G~7=oPP0JV*)%&W=pi@QpxKN#!kru@L8}s- zZYDb9@=21S(Yyh74+4O>A)HP(3^U4-24{rP1X#IoC9-906BY+EMdJ)t*f?lV7pA>$ z`m|y8A~*Y>y1Y7ftvh?;ouI=JQS1#*PBu`zX(0?@xIZ|VKvs(dot6Ze0dtr~_?TR5 z(B_zK=EF$$wnE-Szzy7BLXDQpEQ}TwEY0M|z0o`S?p5*zk|dAA-3G=nCPPAv_?$k4 zgjxF#PZ3#()|P;tf$Uy&JU-?evX1OZlf{8b?Cm6w_e+$=Y0YA|#IN5M4?j-yJqCY% ze*8FwyB~2L#}VK6!~c)}@jp90ALsD_=0L>x_w(^Et1;~H`7_4pJmcdWACL3#%Q*37d&B*Fh-wa z9&l!4hyqPPRMnE&kMkHOUC`=O zuF^RlpP!a~zp7T78YZE0zl#3x^V7xW3vb|(=`q;V`)#w>?ZB2->2!=a);tji-(VbZ z45vnXgnxA1g_OA3B)W>G#sL%jc7MRFXl@5%kZ&Xk%um8+*olFFVOZ0gDpkEwaQm3y zB;H$$+IzolSj^9u4@?>m*(5(~ep=AOtfq>lMK};@BEsKESCAoWy2V?l_~s@h!{G${ zt>PU<4_PHh53}sLchWOZgb!;I92V0(XF6T4XRulXzT4T zgQ{9dk*im&--TWq`}u4w(y=yhAA{jT>WFQlyE@=174|v8+Oq|>p>3or&;?n<2chna zd4?m~9MfSW{VLyNY;)5*5kwt*EkX~Q553hGve@aBz--Xk9q$1Bjzz(KF*jw z|FMSupa0W;!CqSG5+_}&_gZ_S+c5UsiayV2IEIUsMcNpccK$qneEt#s|I_p?OS0rj zvYo1#0q}^(+`FpIIeq)`CBiX>{0$EHAr#>!Q{)P}Z@*4e?VTCn4!|B9Wb+?f90r)` zTBG$bjwabuK_l_4w>K8Dd@!0emZ)Sw{d2AT+R$shp8N0Dnb+^vInU5sKGRcNUVna^ z=Ouk8#Xqmt^NHhjJ8n%xdn>7U&3(N*mVaEYpU)qsPp3Ait^%4$LNi%Kk1HzcE5_8V z%h<1<(JnBrs#QseB{EA<>|`&!la?_zHw+b8iImA)Tuj`) zk_-Vs6RXdF!iI2>tLP9*W>KVWNsnG81G!;!Yh!c{!}xmmV4;#Rb6x41wAxuKGLd`j zr*D)VP>k^D{>m(|*2W>R;H+!z*2ed5IiC&%CFj|dFzmHrXQ9XtN@=1>bYvT)*3>A- zaADdI?U98qv8o}nc4@D)%m9>ZA`E6Fv?_DPUNLu+hJg}7CQ>RgyvkKJn38BC#;~M$ zMb))7_HuJvcuvpon&;`BeW-p(0vh2vLt87Fu-%#sNLc3bQGFDb9_=Vk*vesDKX=P2ci<(%I(RynFmRYFORS1pr*o!o6f=ETF7-%9Yr*T zD4^EdT5mM)KRdV3FZk(7*X_jKqump7F51m(ct%1@sO6|+Rh4E&(xtSVfnBkD?Ux5z zKU5mxN==B_mZn)>&)qK$@TMfeg6JB_jzT`D_(m|N2RG* zS5XnR`|Wnz-}^(3?(l2-Cc9}Bid$;#=k@zFUq074Uwf5LUh8xE<-yvV*Y)}Q`8rpv zMlH|R=f?+I|MvZtyNQaTvbReMKCra_?%U5O&oA-G#Riq0KHUkZ|zh%=tA zy-_7DnVRoSnHBrmj1907utE6VuVNz_qf7y)Mwzixa#hn&?M8v10dHzV&Wb2gF%=vX zA-1ZBbe4iG!KySsEi*4E>DF1B$)SzSq*-eeZCWK<%v_NL5o+eO_e4~tCzdv9Nz8Nm z4D_bbWh)`-m0()V4ISe!tt%EVy>!zA8R@$fw4{RYU_oH&?tAWt1QOin{sIO+zM64@4qEr+T^lD&=TV*9vn`vc6fvqGfiV(G4L1>8@7Ks(| zLZ$Q@h7v_&#j8R*wbpaav!o5S_J!)?CM=R1~m!%Bjh7`03ohqeT znI-|GJ5pOoZrv%F>AP4|uqMNq1x>Ot3K?caMdT`G5ncgHveF?!(G?!ntdB#DIz%9# zfnAfTQW9TG7?^6gqy<}G3&qfcXg#U5H)6xneS6f(I%8caGZ>j-YGUCLyHIrDg(S1V zGsLASv!IltZ4^oSnmN8&ka7#Q_VuZ&A+mz`SB;F4tR~ny%IkQT2zQ}G zBnrwRb2>H^AP9av*Jmvx&2Ft)`2^fltZP4v8a0xwTMcO&imH~C1&C4PtLU)HTGL+o zRVhgpjiP83EYC7E=^0k4tsO$Zgw_yJ2oY);E2xdu(Nj&7#&ktNTQ#;8WG}Yc7`^pM zW`rnP8@=Dhy=!*`dP8R^rH}?#e}i=*klI@7T|7J%5OD^5H4D;68y;*;Kp0D)wxQ%9Q@OFq4*1U30WK748&$RX? zH+zU8eFrFNy(%j9QVDTmS_ysC=Uk<+rRLIiu_Slmn~f5B?p@^Kfpz)oGl;9&6|V6) zx5jpE7wb{Ba@o7SAK$J;YiRdh`q7n%*!is3?Ci!B0QWk@|Sn(s-jh#}hHHeCNM&_P{tC*0eYUwk-984)m(KM=ulD8r7AJ?^) zugP4j(9)3q_6j>}oVm}n z^FF%dh(oAN*T>F)-WjM|;N4PDR~gE6Uz_*Vtcd+e23A9qDq!W9XDTfL_cYIjUI`Bb z_&h(AT=yI6dB{ZTnQ}{(q-XS{10zkN60Fi*(pc4ErN~Z5%qm2pDlJhYVy0)YYpI~B zT=O$iSP$E)d{e&ABWf&>8S&+Dvj8$bH*YQPhPLynW1FT-pc_lXgBqx#Cqvs;)W=j) z4JRljR4VEw9)VqG+2p%|@faq*YGG+M&W` z&3Vmqs+&pp&H8lX*l%z5Sf-7`4(f6H%dNFuXP`DHYLDXH>-BtHTYmQ2P_$YnP4AC> z3_~M`kAYC32pXFO{ys55%b)>`~9ITVu9LdsW@v@n5BI+rD{bRtEpCG z$wH!~h81&LCiZ7ED*_QzmEL5pwSHgdt>2rx092%hCN*&>rCH~3Dj6kWTCq%B8pG4F zOE)6Lzw(JDQmp4_;_IiM?d`W;j@$e5KW={hv6#1NqUBmzE^;kb()z73q}(Z&DstU2 z!CvAcOXyN1YEv{&eb=t9X?rs51{1+a3UaetS|=(&)*Wk=WzZTYL{@+`o3K(vq80L- zD|3w@YLP(U5aubAx^?l^!w_MqY@h7yF1-X(qKz4T0j+1al(pX4ZFCiB&}up(95nP4l+;fk z`k0c-hZMOZuaRRE0J8VYky^WVWDNbk{*V7{p17`0%o8j3u9Y6K*Ie`ZnCn#uU+{^q z8hBJ2U9ESJ*cUQNC3aQpewa1rtqs%Mv60%e-EZ%|e*50Gb-h&Oc01<$y!<&vQ&m(+V0zBw6}i{i=kgp`!aX4&4UD-qRw%xZbaSuR z+9}8?Phf|8X03C322h#v<9vNQLo*WRbNO1^pXc-U*U#tm<8@sx&#SBiCfc>hUR6nH z1&d})ZItVZj*_p{lt^Wvn6xxJv?Oa)Q*9_BIm`wmBU7wPr!a+V3O2n|uu8M2R6r;) zs<3mh!1StJu%sr@%SJ%)1>n2AQ4zZwpg36wgfx)#I$vwa_rHDn?KjcuJU?@%n5cC_ zA$Elp8S14hckGL1YOQli169pbL9mL>25FMv@^!_#z-om4I9;hM3%SO}VnDuLvN zR2xIg3ma;s0E;;i2?>Gg-iYU3S8R)2alIlY&4gcultgcGzw0on)?Ovh8$s-?S)%Z& zGf_eaJ!+OHL`13Dzb3*j5Y-BpsPtaidVdpXStSOkE7^kf6&gmY%86puofwtZ-jft% zRcP#}x{%JDAuYuuXQhV-)ty>Z#-$x9N|C_Ibdw`XL#B?#`N-HQFJv^ZeZVJlE?wdCvWOz0Rk9K0o*NDk(uG z(zVK*%NeABxgjNCmTEWaca8@n)w-xvOco1Lz7dOBf)EWs)~>7|1;X@|scK(n3}i&s z;VF!ZQW0@pYpxRzkpWhrGAe7Ci4e=LOl7))D?EUhjE zHdGm;*py;qM*#3IkQ1;Z;IX&wuR+6Iu=U4h*z@z1IJwtrFBxyJZoN$Ge0pJ8>*rpL zD%|IusA5xS)jpBE2w-U*^Esc0fBgP_8`d)5Jx-p!*t({zpOr0vIhm}_aL)6I0u?c5 zdi7hU30ohn#dAKNr`iy7iB>z$eFeN^c|H)=%2k-^^K)hztxLCuKMyjT8#2 zSQ=K7h3Jh?&1IdeSbL{2!?}%AR;DNQEHy&ZQu<5T-6=w8cka0DRec&wy@QJ)@Dx4l z{mA*Mbd*+ZwBBfeo!Ho!GMdTPqAO8Sn;;J11}Syi=X1V(|Ce#_aU0{VAOHT@Xh*BL zQ&ZT*W2e(ZP@@{eBBj#qokx)gCpVORn@TUuYrhn&6T4S*tJ(!ebe2kbxcd+xbqNHb zrZv!J*u~v+XERmp#cQuu#l8RXjXCQ)1wBNfW-%PdpioRe%<3w<3pdoG_SR|~1|?*4 z-?<{7HB^+gm9w*#n#ZPUGpo}*0HA8ExLCIv(~>7X7*g{Wp>dskUS7Y}kJ z(GAwT+sIaXlX2rsb{5x3f2O{XhsCbqR}&z+R7qrUXu)D-k)kNv1ycGmQV=%)g(0dc zD-!-Gygi{u)Qub!1v$lR;6|y+!`d#|xtGVYsQvL~JsFGTG@66V-^6szMm;YY{K|+O=Pa z?HgH}x`)BN1L!xSDiw2|=SQjLU;cKlm4E;9qYU)tI(HklN)gEI(fZ*tT;|b656}JD zA->#?`Ou+4^t^w)OZE1b-meHx+)BNyF~9yRS>J$so1f$3`hre5PD(~M8Gk*Sf z#dFeNT|o+u1q(ac{l>Vid3yA5ZIfETd#jvR^?sT(sou*C5e+-arrDugd{?EUN5*2N z?3|83Sb9wEI<$!8TfHKZrZSM3`%0<^H!f?GkaL~=k;lP}Bv8lp1>IK+6AYteU)0vq z;Afc#8`MDLMCB=3)|>6QfBya{NBbXdI1M}i03ZNKL_t*l@&4Oy&!5-1rv?r!Z5>pr zNNJQ}Ew!R1Q!7gCiqZfT1zgo1)wT9&*^(B5L#~9Y{+iu4rb<@rlzulv>@6x)qK%S? z;#Nk9mQYD`w33BZ;ZsA>-gaJDDJT_XpXoDwC?l;l7-aEhG;k#-QM6zf)5WPr&` z5L-9UO*==6kX94^T23%SKN;k<{q`o0V?W zi??*AOdWS^cNxx#TA3>n2UOl#ZN9mrzO`TMZZ%5fc4VwgF(l4h%Qv{bu5w?yv~yIe#=oNNU-&ig`*%oE?{)!n%o{Y9Ssmjf83AWGr^3~Xr}!?iJ+$DjvdU>%de&O-FnVU z4^dg+*h$l)$@67h?&EQU<`)!iUvohU&@S3;qaRe+YgYv&i-x^RUf^Pge^z43{V{Hj z@A-^~=btaiHmRZ7kbb@9ydo;y*_Eo2QhJ1K<1}d;$Bp{!es7OQoVm}Ie$$?cSaUKt z&%XC-UYFPIM{2XSzV-3;_+?1E&DWLbC8zJmrNm;xcz=8JyP^3yKY#ql^HxSx?fpQm z>+>_%kN3y-U)%fp<8}EG-tMme`q)@L!?%uE_(<#j~l_R9>IGv@CO7(d9Ubtk>#VTuz zo#}8Kja2%~P%~-~FM>g*bQEL#V0apGiF3#u_WGPZ{^Q5D+durnfBEZQ^k4q_KV6gK z+dFh?QaBQeX;O`~(??@PoUd%Hg{mT?>QF*h3lizc7fqMl$Pk-Cc34XIhSIz;eH@~R zsB#u0h$2nP2FS?FRB97OzG8(|0|g@Lg}o!H+%LFip&di;hJ2OHl{4$*ru`eo8aAr2^$7roB#@dlP z?N_lC@haW~qaUP#8bxa`=6m%G{g|^PSbgBFn^Sz}*Yfg(VsDS$+l`P1;u}){@ZsFC zKd}kq^xE^zy@bDP?24M7We0Ef1C90a6rxvutBjGKT>%jft?<1TYF+1yit|nGRYO!I zD78!Wl~?l)=>ZCeQ9(+mH5IXnUls&`xqtfJpo#R@A097MU9ao;dd9lV=iEDQ$NlmBVNH}sPsI1zedy>>Q~M}y zLBjO@{{8dxb$xooF5P_Y4^`YpYx{CLOwvuE&8RCQQ;@M`tvqALe7UbHOP3GU#xah< z{NwerIDY&7ZLXKSp063v24p5tGJHTXR7TRW5GaT=(E}Oi0s2m(pv1Rd*SRcRfBn|p zy1nM><1Z4ij&&*0uNEhsfwLclzhc@2EVl>CbC=UAAwRUq4fZ zY1?rX^LYRD+i%|nE3RkBlJWiCdB0b#vA6A&eB9em4bgUMH?KA0g7i0y%5-}?eXN z4OEyt$Px1u@rnh66kC?&hV>B5VuzQuEh(Pd2-(e?Zh=V4n{e&CX7)SW@``u`EVs6j zboXNKx4>FiEpDwq5do+F8J-X8Deiky?`n{FuC=w+%Fq~1H8rB3l_=QkV5Tibz#u;8 zij;sSLitEh89^DIirj5*`VQ}{AERDb<{n?56@9vS;Y*K}>!#M#l+N0%%D~!@ z$O$VXkuMiUs(Z+0752Oc?x;YuPrWRup6ev#xIg+}6+l(0O6zxCTjJS|A=5wC+KEch zMagqsud7%q_c`6HqjaT;XHAU?#!A)CTjygYj;=E2TpRlWTDU0PNOz5M+g(y+T`!Sclo@hASmM6s z@@m>|lHlRVsHapHkt$jt5lL8!{Hiy*guB1SZol4cZ;~_RDy@WOiE1lG z#+;Ko&k7hC9LnC`Z})F+zy9(U5keN3K3&8FSX;bqIihFPC1_`ltMQ@K;8o(uu3C-{ zKTmr}inN=xMO6zZb}2638P#uhyLZ&Okm2u zNJ38V$kN@VOscY=EJ4Q?#D2=o{&v`-EN(5E17b2NFF#qVl){44t>3;(FC+zd>(cJu zt~IXpbvO20%&Kdi?w>BJ9fpLeM1NOp$4%b!E!Qdc$6x>9e{S;m`a!1Af}zD*_Hn;k zf0*7M`TX$BXT4lbXC)AZTWi{sb(Uw<`S^T)^Bd%v((UVg>&y(c=w zRaQuo0@!b@DI#{0W{2&J!uX1^(uOq*!*HlNjce6D4ZMw8H>@kNsiT8vwBv*K* z^r4n97ZT+ojp&lnB~vY`KF>oPmE^(%k= z__yo$_UkX-4|Gp&hSJZGf>O{4C9C1DO)oA!6F!dpkyM+!aadXN6%3~fyduMyDAul$__;3l6?LuaYTdg0VLD<60#a)Ic-%oLM>C_^ucM*2 zk_L$J+QP?<-19t7*H+^2J=fY*{`mg>cKlW8)Yo;${p~^ha$gwZFD54;NDFQ|%-T@_ z=+(7q-?rYhcJmpvBZ`@VE!I&-u7%*VYHc0bn@SybFX?^Y&SGZ_t%&P~8tpg;qa++_ z=d!CIw8GFb>h*fwBvWlj(ew4{91o+d{Er07{L%iR<3#8*u2YAz7QVz@Z{r-I&-E7)tv-j_|(Flh5 z_PX|#Dl{vuHm!JsR&k5qkQ<@1P3n@18C{NX7&72t;Dkc*(KtLem?pL)_Sy{1#M(dV zW%0oMjqTR8b?wcLR@YqX$8@jV%^r3{X7=`I;kBOPL;_o{pReEbzqMS?&u7|OZ*sr$ z@peCMZ}-QoUi0Ih{{7$n{vZGHum75n$LLfYtu>VIVK(}qgoN$>tsRde{`~m!U;gdS zojxO{Ko9L|{m6{x@+ED>r6tYjix6StjLSVmdZUpdxL&&D{?^naFKEQ9*yOOCRw?#S z0VPol9b)O(RNr=7DeYaG$MdzeZ27ExwR$5!+j`uUqkN;BZGN1Z60la|Mx|<}RK?mp z+GKAP93D@}7egc%EuC9sX0e*7U4C87jGx!X-+%wx|Mcto_x{Jf{n)<0zmG=YXyX{Z zYllihtk_W|8fCex9ZiqH?sBuVBkNE*5tqjy(WYNn%AnU2-nFpyGq;E!WRpk6e=2GP z>aZP`ofqKRt%?YVwYJR}bv`$%-S3ATkl4?U72HO-K40T5kMG~Oq~U}_vFD2Gb*gEZ zmNqrhs#@nCXU+XMdZcKFanJc$*~&OHSGfmorn+lXO~{($^W_aoc!72sf0M(`O!b?g zc13KEjcnmpGKfJ21qcuKNtzatSrLSLglDt#xjujXJn&9kv3H%v$}^jiZ;`T+@<}vz zAcBq?xKSI)eY(H?w9vfY+hf#v#yZa{ueHDTH=uv%e-S%$Q7v473p&@_*JoHi9*^D+ zjVkvU`B^XQ3OePZ&X-apx0crZ(I0QWd498*G~z+=i|dGTudQ-IPsKlAB&vWWkP=9)V`r`WW|CYqn-~fBRC?R4qRA*56wC ztd|9VoB(@ zN(PG-KjL!nHYq7#IT2B$6*Yq+@@XShuV>D4Ci&}}fBTOg)c1e>r(czDiQn&cZA!dy znOlKITDaK)R%AXui*E(ZRE`U0RL{@n|B8&aZ+$I{e&aUt^vqGxIOn#-`}^_s{cZxR zg3kyFi&YkBWaX)m)8e^KjJ~_g^N;^QsblXY)kw!^LB;58e{YBC+pP7VkRUdDVa^mK z@QPQB2#;E;(!q#U3;~hbj7ZqxlA>2S^J-0)n7IxTAS^GdDwaqv$$j7z^R?1t8x>Ii zYlQzXC;RnN@TYOU3@_~WXIvb4dsEFS%IZ_tTPa~zPA96dGi`+=u8MNE>|9x^E`W9H z`{*j1AnmTy0WLdv5w6Z}`?t4Wwk@8|rPpKXMYJ#@Vq@CwKLITcv>xU2Or@k;Nt6+5 zUf%W^h~(DZsGU~Tca@R3ID<0T!-^AN;vjUQDn1jh=^e;&r$hjiq)6mvMzwM4tobmf zXE|Ekc;iT>wB*$JpgN37;2XPnpMU+!_ka4=Z^ygN>mPsp@Bi~Ze*gM>U9Xj-`!C<`Zyz7q=$(_eNg*sC znLJM?&!{qo&+BFEw{M+NR+sJ9{ZMd+)A+@AVPaKeA(ObgwyMD@G$#?9Bj!p8TR(y0 zYt8GK#X_>{^mUzI`AICB>iuKf-|iKll-4qEW(e7~PCIe&&+b?a)18@WMOL_$t-0Kl zd!%2lvug9hEY7u7=T=oBg(glU$@K=YZ3`7Ec=kL-!u)e znBF6!UXQ2C`MP@fDH<77W$n0;helV=KYm>K_2>U`aOU*fw-GDPKNhJghgcC>yWNCjt-0LA$ZPqUC4A7w>PlzaM_BoTrX0 zOUXGk!yO99Dmz(@LG9(_zED2Ti=;Xnfs#RS211)68`p$gkgmNGgQ?ZHhb_BK5h0-& zPf8Z*9Xib(ui4%X>0UpsZM19xBS=Lps-Cq)S>*=V_jd|1(rQe`%ElX8|mQXI6&lJ*qlK^G)U;pV}|Lxb&d!(<& z*MI)c|L@0--ydJk$FgG^-~RPim3_O9ZR1W&fb>e=JZBRg6cMi_Tai*OFt$OuMLLqZ z=%zkVPY229x3{AyAw8o5R8T|`Uy(%17r7q$J0BHZaG&ezkC$nXQiLxvH}ecWdjEER z`}lSno0aK79V2Iy5N(JR;jKue4Q@3QSebqNGzWT4j;Y0%MTta_t(*^{Z6@sbyR@CV zPz7Yw^4>@J<(E}f04^?ONpM>X5FoAk@v$HC{QKwUzuU)OKE|KEUw{3>&UO6qr`yN` zHevh>@mWN*HQtuJ2%%`ixiXlJ_ug_9Z>=9&yWBI9_kHg}B)%gO0-0q*bkjDzAD+?n zk-^35IWJaj{S_jDO~l|(*#=_;t5OqU;^|Ifiao>-yW%ly2t#{OH zW26q76Ez);x$8-(rFY?Em?_X&XMHF1Zdc4#z>eFNQEj8v23WWE{{Q^H+spNz|Mk1p zHD|sZ`{eL|YFBN2sG@@?;zfC#i_9iOMQ%+YL!ffQJBb{}2j2`l5g30W8eK&D7@{2W zmBm3-R}gh>jB7a;(>DjWr8I%0*79+>a!gVLn z13>B(i{QQXQcMC=rP3jwHY(!&@tz;8Il^}X+V zcW>)@9HYRiXp?bk!?%m{vIH)XdDO1*uIgSw((gf6f(epI15LHOK(cLGK+F`L6sRWH z+?67@K(qf_8@J?Hwmep0)aSKmKAKHlGDla0bo>AgtT`DxP&6jy|` z8WC~Dq^P*+(nM8|_=1FZLv~ScKQA63{E$A;WOlpu%eKb+T@=!R@R&8&iSg)FM z(ed&2_EDZ0X8WJt#%P7>CQd(fg_A+Fjjla?%3@m<@l&uo*+y1pcoSHa_69rB|MB|z zTbSQ}{Y&Wndj9^waX&_^xs<51$2I3Gsr94F-h2*+=!+w1k1MAq&bk+d-4hN6-eb#dvPtI-tHvwB{&wMLtA zN8fj%(UfoR-ItH;2)YSfg&I5lW&eIfB(fq`_^w6dR}QMFnxqw>#VD{Q^Uy+!I=PRP zorGHJq+MA75U}09gVN8_2N?zu*{rPH24k<#vJ?~%GRe^Iw63zJ4yKZ_Gl+<~5K0sl zthwL6p}y8R3&OUG1{sBs@f0t^N|4A#?IhjDOvmpD=AT_EBvuClU5Qr4xh!9=KTvyd zg|0>*U5tycQ={cmNZKxz#t4lBHlYEvRAoZXe*1V!{%OQ^phF<)i0qVIMA@!$KCV*t zUX-3oUNsHYlZ(X3+B%oFJdPne2uZ>|Q+4XzWowGO-=yfqd;eZihIZ=|DZzo)@{2gmz!wt4DV3^c9I>|8C^R; zy&sWr1FrpMWAxFid~vdD8w(^Gi7=8dwB4AQwoQ8zu4GPzH#FV0&RQjb=!`OXEe{V% zP=qoPL(9Q}YGTvV98B&-t^CCD^qO;BV$_4O=J~vqJ9K>f)3@!|rEe{zX_~!0YiU%h zWocBSZ%n8jx$>N+S+Iy#{r=k@zy15ae?7m({rz^|@Aunr`z9Kl@pG@e(jzr|tuv$z zFk3ihTi2?ju@Tcq%8lYEa)sMneXjMO)hcm5zIe{|?J(mEMtMd+FIyfFxhX{;>^jqJ zNu{|Z+VOTsKIwIFm)mjwWjpq7be8`U*e z6r*p%Z-1u+qeqi!J4#(Z$e;L3lhKwcq#sqpeyTp_Yp`R>kHkik}h- zuBdvwemIh#*F>gv5tc+Nk#clM1-9G=NUe;tGFpO48w#wWx19NnF>{UHkBmuUwiK+)cAy*VotU3?iO6 zuZxI=bXDGO$1b;p2c4GgE=#$KXzSxPw*B~adE)DbBx)3(BZucq3SKR!vZ$H1+Ep4$ zL95eeXNXF%w6^X0o~*=5tR}NqMrL*Pa)O8qt!K7WozT>+ltx)yG=q$)5moiMYv0E1!%z^Grfn@H?kJrx5fJLfc<+Zs z*2#aw3>~|UBi1YCN&>48a|LB(!xexbd!x*?+(4JkJN@GfKpmQ7P1@c+2bS0U8qWAOHP7Y>fZ* zfBjcZaLVXS`!;r3+nOskChfSAs<>5)nnWzU^@F&qvfaOb@7kz{L2;FXD&Di`6%$ps zfG|jR^7NBHXg6CFWYQ?8k~NpwYqqkqnMCE6P0(mn?&q~;Shi~#^Q1^n$4EB4;b<#twtjx^U6}3Wy+&R6x8O*(uMHS(2cUmv^Jr+~hd2+gRnU%kv zuG$2+rh%MDvkhU=K2*E3{r>U&+uLQo|MrjP=T{*0CPO!-25BbC&#Nd^>rVUfOnabA zWsEHxbb5cUtU@gNnyAt?oT=eb+o%V} z8d^zQY`m_=B3$d}zSwfs`TDv#wreBW$4z>@ECWDX^N~OLP+`f|J%p~{O$E;0LMY^d z6Q}g{Y)U$~K0F1K^d*X!k(vJLNTgD?>1>#|txS0zgO6lcx|J0CB5t!=vz?^t?X zuOFZ1G2XgrzJ4d!wmwAvC>~V<;f7OKD|QRqKR(`n`Q`KZ!{-GqpouG{fl8IudK)>i~)G1NR)dT;8exz_R}O*0u) zNg%YKmlvrHyB0E%>r(Ew!9^!^CWf6(#MIKGu$)lTkETx*W8UDqkZZ@biBR+D-Psc& zJm^N@<=1K38rp8GwV`<2fQZ&H#)L5l*wB5CyhuxFqr6isn>Le)6BiOcQBMuhZ~Hh7 z7HUl!L)0sCCX#a@Vnw<=eVtZYyXj4$ksk*MNVxM+v7~4xRvM|ynIvcjjQi$E>$l(j z_Sb)W((V8Fw|pCA#(aS3B~x_Cg;#GUJ?2fKeWMDoLeX&^!C9ELQJhqc?KfTN&6QS|pGeQBJQs zpX^dqujiHV12m+u3YvC9FQkgM#zFelB(0$O_I)412(koe*X{V&h`g%i=krN*bUoIx z^UJrZs<1bvw!0bT3=yy*sG=)JLprL~D=V|Tmu1Xq4V*jb=-^fx@htxN{ZicC_;%~; zJO>{VSSrVsNxQ|&5>4{iKQ}P6rJeUrORBL8^B{F?@;v8jI@1rUIrg2YxWtyZBLd(6 zPKE{?GpMBBcvtby(GR6KA3x@|zii_e!0r6{v0iz|K|Yh70X?UBMU#n{X9~)5O7&FC zoZW%2Sf9^n3A8av2xU6mxIMzQ>uWJR{OIUR_0o3Noof9gnmN|I|K+>%`}Lo{+4*VP zUwCF$kc6GTqu8C&jaU^6{IaH0x9OJ~8YoaE7orTHLR`-hkp=h!^^#VO!P$4IDk6SrRW{aNjMYbom+4)F}22G zw`&xU-%M6Jor;RPrtrb679oAud|dI@$T#sj<9`ct2w>T_#z-!>sIc_Ha!{Ip&wOYI2ucoMC)$s3o0I0@`gxn_fhKQ4b5s8btEkU9&LjvB_I>G%oFOuOc? zxrjU3QA3Vco5Q+noe(iWKk;$JLpchsiGEO-$CKs8*`cj<>OfNC#;x^GmBy_kGU9TI zLX%s23txY4`Tb9K#hdJC0}LY8NV~4NjXN`nA=0G~u%EKN)6V3nE^wAUTS>YkE+=j} zHZTJv;=XeT^@O(kDWznJ0%bWdQLQ9lsP2h9FI&r_5qptGF_6*6+rF7y#z!0bw_GL| zO`4~pS9PR;Aqe064ty3RdC{0y2y^8F`+wLX~( zcI2QXfrb1Dc#}ebma2^XK(jE|>is~H+4b;3M8{0ac&=Avp7Z&S-yeG0g`u73<5p!} ztLjLOSTFKCb4x_dNz6nd^ab5Wo2S&8san-7mW(9lq+aA$!kW}jw5p1#Byp`EEX3hN zx$~eZ?rm(NZ<7DfHfr41I03$uGIjJirXaF)rKHE>9E}rl#)@TCGLs%#h<7L@jjpN50Hb8kVBsW0 zYntiYJJZ{CoR-pC#F|E;Xgh6zjQk`{VGxVkRY5EgIQ^PcL?qK^1PF4c+Paxd&U?{k zp09igy~DFSYyarSyYcx(Ma;{q^1eq{4aHPb2{BoRq|CG=^N=kp;A+q_G1A&P`S&}iH3J~qy^ zuCE}~+r3dR0<ndj^ZQH#KL^YvT_|t50S0*XSLv#^OqL)NV+9NrzimDZZC5Q;5ZA}6-YK7Lm>Aoi{ zbJdEdBn%SgI<-KDO5+x^6C~o5=#!U~^furDaBo78bYz5QglO+ztm2Ctxrl0G*&7$7 zF1xBurpB$`1(j|3YdMwlSSu%xv}_5jCJ$prX_s>1>uQb8Dq-nV7NJ>7g~s0R4VuU< zNn7tCvZw}9+>9nu?tHi?_ELV2=ZwV>zG}7yXa~5y0uJ7Ue!5SbVCU0H8%d*B;37T# z+yDJ7hVqz8%a=5)vxuI1%3z1)1C~Wj6O^x%^^}=C*#&{?>(0d$J#h@avTn{F7&01#*;f zCSx%6P%u!*DaBygdJdUS^LRm@UKaCeU~c1eoaTooS7>mAy>K40)cxk<{jECaRxGkxX+oI8?{hZWQa`&O(HiG*n^k zZuwf*X+E0TnT64mg@Tx}U`ZSjiR3(k|?a8tpWErCFKm=&S^pn7Iw%l15yND@$}yk9lT9hh)u_RDLSA zUI!~VQBld(D=L$fETe!If)5Pfcc#>VoYcc;Mo`i8LPLzTeG0+d8ZF*4nOOG>RcHSw0v{ZAQ&lutf|L z9-sw0*cccTkyO2F5xH4vRsatpyckird8~Oo&Is;~Xw*=p&+obIWoQxbItPqq@O(P*`tSw1| zC1p_%P8Ii^IFI|R)bd7xmf_O-_doxOYJ*CKUu%MUxx*j#ZwE6GS%B@#)^4h~URMNb z7q{z=AAh6ZGArgv={vWk&eQ@M3!t@80Yw%W%iRiUn`G8?npX<5JR`1WZG90wYNDo_APj-vbG*^qMTTmsmo0`wdd`A8zr{R5@I24LD2#zqTx#7D;I35 z_44(P$;=BA`*qQ@F0dZ3D3vtf4!auMJ9eM0cdNCT)@|)!kjZ4xys^N6CO9} zz4OUvO`@}bw(bqMoB${np$%yH>SHhFc(%O=z=iCbWaSpi%|*0tckou~%uc0PEJ&h$ z#-qxrIzv*jBJ-Lgs@i2;TzI_fihTQiYvo~I;Q-!6PNM8}RQYVt$Gz*VIJ@#Oeu+Q* z>En+dx3BXxpHj1O%!SKW8OSa#mwxnJKv4@bZPJesV=q#re(bt^K)2Bg$&;KNB^&o$ z*lb>o0w{1B$Df9b)=TE0V^0#$pwVtzlwR95#;Fy&y?J(+L{;WQvMpjR9B@bLU6_Gx z;SE>Y)DD#Oyrd}7T3jc$$VQN@#QgOjiY3O6lUZjIGvSv|CLcd+Q=c*dmR#?NUi_;m&n{E&cWNdIjd*HjN5%PETo$j+z+!(?Jdy%DUg^ zdpmM%jLxD3wA*_>#&7@Q+24No`17C6$M5Ik0mdS1hV3w+Q+_a`#}v}NiG;YdvIio}E5tpex1nzvp_nD9(PbJk0cui3Aw{T_qL~ow{YHdA zuGym`G6;F^y%Q&@IE~G!B#EdJD~&=M5f0E&X((-d6_bBep=5CRRIv6gmFvbSKi}r;d$8!DvZ^@JOv{OsNNRV{_wZ_m-J4 ztQ~i)J6Do6(t_2RUU8}5XO^I%xH4N&MwH^#bTFGBDhInjiqc@>ZOeHM;k>_ZEZcfE zn|A#%8yJZ6zmeA>_gL$bNos!V_d65qmTV;K%Prf{DlxCs$Rm@KwS5FzZ?d&Lsqq+; z`1tkP*g8yKr(A(IZLC{m)gs4BA{yU9w&lSIR71=p)kZ3awuLKv#d<{ov_X0=7rH=iG*DNtrkS8)ub)2 zq2SWTgdqQamfj^roGH5{Qo;tSq%yOzA|u{= z?tabAQB?q&4UZ9M5264z)@oLHZ|1!TGqGr?gbrP~u5aJ-hd1{85IkUVef(9T`KMoA z*V!z`7r*x0I~Jeooa1OsdPF9afJ)DGu3FL$D=Of(4(j3wqjHz_-o}pHi21r0l+SHH zXTeKO?QVzc5)lzhmCGB)=7-$T*;*UMBVz@( zHov`n>G0R<>yFbmS%$Wio&j2FJKP0WxuxKKtgcNKeZ=UuOiNxdg+*>$qvUAZORdS>AA$(o8Ll&lNT^g$X81Mo=zw^qsw#So zaup%#Y#AT|U8*{(ym_B21Rg55eLnQ)!}`3U@Wf5Eno!nO$tjhy-QD1FgkKt$t;w|)x-(Bne>lcO(x$~ZD zUXS~&o37WTy|v!aoac8#Nq+?em8$SQ7z)|F2@*?xYxn!WJ=Xb} z8zyEgQj&*C7ME%Vv`*VI&i!4rn>^?N4R+DiZUJJaDXbmcYjdsmxISLrzu%Ah7;jM@ zv37!L?fPw${2uuc-&d}{af8_F^+(j%b@-3yQP<&3lh?;{*Fqgh@xCl|o`LI1KN66& z1V{>&&^CN(?#HKJ{^{5M{rBH~`|JPwpC8}y*d#li{>gIgEt=Gzw^A);I zRpEO>3G!CZ+{w&+mbRy~?sgMfm0R@g2ZSl9nc_5)k^8=Dt3O?Pl<>S7MJ>0i#bdtC z^W(bT@7AENOUF&kk4L*d2J1do^zm?E)LEe7aO2jO?t_tQe+YcZ`><~1rBXs6sSvl0 z2jB1edWkiCzv21qTBp0LkJpOuZv4)jzaO{p`0}UsKYwYCngzIu#TBRu&kj)UZWxuD zHK9$=%_+iIESA(RFY6`MQ|VjWjKa#+n)(oC)tR9q2nqAMz*ZKDt`dbwp{kT*CC$vO z!xXldwxTLB>VhKHe0`iYhIVI#Aq!a|t=%l8ggTJxTkNT#k-F-GNf95dV__#mWk_vB z8JfTOs2ZVVQ5z&uGAjLR3PDl3GHuK7qc?ZYm;U&0jA(9IN6gnssEA8#5lOGfB}hqB zwEpNKrDd8~0#|FYPG??_sA8aanWqUq_Pw?HaR`(PIwE(ibB797Y5-$670=41N^{+z z>yx+C%xAJ7vqhu8k*Jqc<@BJLei_HsAtDHw=g1#5^kVTg_@fuZ|dD|T%4n@O31a?dbeRen%X)iYP& zvi7ce^M0WWI;x2p-#@?WN58J`I^wvsU;pwm#JWoEYty}%$@S{5z3~|L`~A(E#d+r3 zKk|P~+tC_wG8EP@(b&+NkB2KDAGOf>Pi+*i-l66{I#%DYgSKBE;q>mg@?xrX(?;dO zWiw>_?Du9uFvbsn!*nC!DoClWC2Dy^*17DMC&9%HXyfzRCv<#z>sbjGwiVLm*XQ~A zNCWg1Wij`j*WSlQ_U$)uV*2K8^vKBE>z|C8@2PMl^tssUcZF zWEMhmfP1YoH(MT=${AHEIEbsrk{WQ`Sbg)KbuGe%0zYsbJq*GiO1?%ZTaR$T4-|xlNb3gv8HE= zaHYajt+YvN9v>*lAoXne)_|oO$IW*#K34iw){DxUDv`9=ZAei4nxagKH&N#WK>-+DD{OSEqcial7&UHOCvfHhcMY4QLZgvq9D}z?ax|T5Ay0#lEa;IL~YAbdx zP*{ozve3;^HE1p+iYkR6vycm#IYWY7mz1j9x=Fe;fvSQsd{SnF5!d3yMd4&~D>ZYD zW(m>e_rWdhd&X5$1!K#Cw|hSfFu$u+wO5OWgp~wLTYpn^g}Qk{SMI(eKc1`Xr}3bj z8|5Z^Rl5!4Vf$&dGeEl)U106rOqLEuQ`=TT+;;#T$I zd_o@O##Q+-zkh#Wc>kyI<;zb^TN|v1T%aj>`}wDYrH!G1#s<_&34zAU$UQIA+ADIu zW>q4!x!8yIZng-A!lXn@B{q_gZ5AmXul)G-TW{`mn{%yKmA2pui_IH4+T;Gy&tF*Q z-f7YU)ou^SWm1V@7~LR{K0Km86_ZuW!yTENUNAAJ|#aU;q^8QfIV!=Cg zgK-?g->kLA``f3V-+z^!>-@GiTJLusV)vyh&J%m#ro(%0zwF_y(FQNQLFKr?jyK8d zE=0G1k|HIqCwfzUak`JU+B;v@3rQ~3<0RMjry%&=M%+aVKXQ^HV2cz20_5&*_s@U% zm%r>C|Nh_p*Ll_L_AqcuF78oXrz(24s-R}U6TL~QbnV!zD^+9HiUQpoXVIR*001BWNklaqVem zC2Nb?vEwjXK4kOF7&?l2^tBV*5X{16nJB~3japC=<-4p&I~<#vC8ofq<+7Crs#Vxt z8#v5w>URe%R{_`+Laihuy(nw~8Chu9I)13|76$3^P?Zf`}>zqZ@2D+D;DUeS_}&@KGGWW;wn9d*PbG-tQ3mSa3*zUDUudd zhEPfZ3p>kLq?WFA)u2FR3rrf`uj_Sw`_^s`k;qvgQdlG1I_yokDwZZ%=FAM$v9ncv zRd?E$r;YoU+qh+I3?WJxVk2@_39Kf6x> z676WLECC!!YSG0aks;*@Aw;a;Ex>(U`JCr^ zv5j%R*>H$g)!JnIaE7-o*6xpDq>{b+cp&D%SFkRKS2tsMJ>E-}uU%0yK&+4Tf*HJ< z=#6T|^A&4VWM$+gV|}c}YR6Ba>7MErF;ueY>g}E0LK%|7j^ed5NrYU93)M=(nyNME zXr?!rqEU8J7PEGxA{i#uMVm6jbz2>O9vy`|S!wOF=-9QQPF70N?QS-j{y-f=2-jN( zjIyySn$c1uYTx(}qPUtLCO6q>d``)atMhfDPL(QL^}NE=wC-q!W^1v`n1x!P2K6bj3p+xf!g#IorFHmWTj$2jt}>I7CK9A=m}^4XR?}XQ zB{S*pCKef3>P@vVi?Mfzs8u3LwCWIWK-I7tDzH|Rgrq5zLby~`U8OCxP!#JT0tqRu zJWsK`BERG3Ki%x8J%hRtTdOygo3~%?ZMb0Ek3PE8{s!6BBC7J*d)8(OHhC0G>rB)S z_j}}WKr3rOOog?VhpH84l!733V9m8v%tGf5@oWuQCJTz46jIgl82XWK8y)dF_f$VB z1B})_i8%ZNb&;hsfhSe=W{n!YKmNX}-oNzXYb9C$XH*K zWl~2WBZ*8Zs(o&ml~KNU2+lGo@57q{3k=7WQn%VOQ4S4M!BSK$)f!Bf(lLC8)|yq< zu)ZWRe>@O_NNJ)>eyk1gUmA;YDsJMEN*O+4=?*rRsM^S|IG>8&q^tI}1oNstcUmE8*XZ3EfB@3=wIIlcvee5jQt=oCkC1OxU ziCAx)Fc=^5xbdN_)5LisIdKKTj%m6@`#iL;XnXm5JpB*T+qPo!k6wDY2#KuqxlQ5>&GZ7gjSiH?9gw zL(^3sm|r1HjqbzLh{{+m5v^sBLdDdbD+dM!@ikaT7TR@{*@Qu;+}~kFc|%=mpF*$P z;01Hxt$`~e=q61$wRErf{rR%y$CtZ`$C(lEX1zA!)|;Z&&X5%AB5Kr4?A$>bkBXHQ#)07im8;<8c1NOWsf^)RvG;z&PG+rrSE2f~ zsUZS_N@!rkwu4Osmqe0{5QXJ-SSdnwB}!uj@=~!_WSV(PEI|o^P8$+ zt`wA2@kP>j80Ynz`%)jS+8VL=eXp!}RF_zb!m5eD_o@{y|hZpC?cK!ky_5cPO7HV2@<8yqHM{cwNlKrd>nT< zxMtDBhgx8M|NRs|Td$@sFoj2*SCLkT9n!vce}D#FRSSwr`{Vaj!@X&)i`QCfgjw$t zk;QbF?e<)k_NQmZ(TMR7n?0ziEaZh|p_huGyqv1}y_t*9Xzmn#oMm<{j9~ z7i&WA39q~qnHQ#dgCYzPuq*OSXyjMJFp=$*)tgW)BMt=f^*tM1Mx&y##HJ)hd1e0 zC&-?ABL&Se*u(tMIow|rvtq$UGt0UnrJ_~y(TH5JSuHIg9Bu+0;Y~%n4zaMFlt$EC zOJes{Vj^uoA~Gop3$;2eFk@#XQyI;X(krLRMz*~uE@HVck&lm;v!3sd$J_g-+t4{v zyY$2Ic~u6)sl$s)63xKt+|Vt>32Ua5+=~)S%hW}T<~0_2SZ3-EY-#yhB5J=%db_t= z6=KporKA*U;f?3Y^DE?L;^tS=)?G^!SH5OI#A=k4`VUxZ#uCZdyNVO}l(NF+dCgRc zcpKOnPr{_xUNF+suiOn$+RwRHK9Le@udXyd7PE~6+xfE6t98punXlk3#{K?@ql%YS z29zx9kB`@j(%yf%9UZQ!o@%tn=A_BWL%X^(D{<9`xIT8F)m(c&@AvoH=Z7@xZ#(zY zo4OM7+EFH>a({dNEv{^@-rhd{@-Lrn_da)J^#A-H|M|y%{_7&&K7Cei8iW9nre@|v z(Q48k%n)2~6LXCo!8MjkdbP?-z}!LBiE^Fu_5JJjYn@bCfB(=_cRj9CXr=>A3&G5Y z+G5DvSk-T~ZsjGM5@Xl4YRVh!wGf5FT1M@n^!Qrku^XgRf%$|~b*r7`u(TpV-7qPT z>Z&P0r~{&?kg7ciUD!Ryy=QY(19By#s-&70Eq8F{gr+D}q(XsP?`jpRHcXC3LDB41 z`Fdm@!^|VMtlD6ini#aAs=aE>`3L9QHlOH_OX3wT=lxS}c`#RkGT~V{ksIhi(wLw} zSToDqNi};Hq`La;;J&Ewc!ehot1M!wl(45)>6pE2vIGy+Ly+qo~lZ*LO27WLD?`Zq))a4P32BQ z$t#57bl&ubZ#t2oRtiB%N_Fck1Uo{(P64rDiXFP2&?;0a;9(_2 z@2<+&h{lNk(TdEgZS|&LOrhE;YKn`Sh;`wr$)Y87ZX(&S%*g6`-6SWAK^37GL=xL} zX`*686MXaW@$LF`7-;PIR!u)VehN|9NPBGA+R!wY+L%h#iG0V0waCPS3 zxV#qA0IP5Ks2408oRd}V&2&FA6Fx*OcE~Jl)JV~+tR+~lUh5SUA8Z;1TVzFAYT^fE z-cm0KCObu}3>P)a54b6zCZh2c>tvM<*W9^VrmF$kP}9AH3g6OIWZZh6mgj4$jd7@y ze0#olN^8^GmNL0wt`A^48vLdb>v~3&+ND%-pY#0Vk3XQjjepj9&wiN)QcP&}fSSmu zJSfF>Ia-l@DPa*y`I1S7O8$8uI&e>=bbl?4#vZbJfREf+D*2}!ZBcWu`2Ju4@W-o=G^t<6NDH6)|9BIk(@H?PvQ z&ZtvS9fM-~oQg=ckLTs(Zr4Npjd|8(0p@ML--1Y_&nHeJik;&3h+6|DtaF(gDnM`O$Jv^7VQmv@Ws#;oQ zY*Z=%notFst7r@aR2euq5BI|pVZ9&bhFGc!zP099alWp~<(-fFXOUqlkk|H$=ZMov zE=WiepfQG)D%K8aG%;b6rHhpmSyHuiFPrcRTYRlp!v(T3fx2Zv#I+ri6DhefV!Aj* zwHwQND-*D$cvY(A&4&8pBmb!4Rm5u|*6Jd6+(lbfl9{{^>Z3))(z+_vbKUNrA3t}K zU{Fm^ULj#|t!?PzT{d){`h42$fj+ji4iWBfxQJeE!O(b$9I8rw#OvFc2jBJ9o9LTb z>fWpp1!bg5fkvv9x@SnTNtGcXGo+&4nt--h>RTz@twTuxqh&2%3!-$mlrxis2(q#y z#e|3r@}sr;ijIEXVs*V|``iz;T9pd=@j2x7$+VdyJ>W-&E7q=9mXf8puZ!jGZEa-i z#Z0q1$=nwLYNo8@hns?)2vrGI#BYXy>Y!EMT2oaaozb&qS);+CYR)Ywqm{dnik%uk z@0qR+z0qUH4`<;+kytE|of}-enRx3}sUWS3re1rovcMv0S5UiPtE$@#+3YQA^o%yY zh3Lw-NEc`2CSg>?HAS^-)$9l%sMfSOvJPgYq0^c*v6Qse-YHO#)moE0REwghFei|# z3y0c)A2@4@GAd>j#jOJ^D@Y-m=q58bR7Hy_l0=nMt3CJYJU2J->}@6>s!erWPSwUM zYEdlUL!<pB?aa>k7bRUwf}4M}BVC=AdJdSqfT(95%Sh?*m!_8Hx zSEd)W=4k^z|I7dO{{E-?r~5pwzyI6czW)8cfB*Vz(Y^K78f0XCD=MOQL@XM{Mb0=` zPKoRLZ#CuZ*PlLpdRr^cc`-haif-D>E3T>?U8rr~xQ*lXu%;_;K3hwA?<>B?E2!=E zXhZb1r7Cp1ch`0PJyjz$=1NA^dG6BRkK4_?tB7fLaMzj15=Zk#*se+`BR5c6$S5h@ zdTO$Zlqi>F#FDSdboU8Enb;2*XjKl8gcVgRek}Hp`-=TiGd10tQVDhw;a*u1&-l28 zy*HDbwg!OOg69)C7XymnDsi!vn#@@7qQ=DcJa)0hd_!uA84Tvb!yKcWuh zvY^elt9F*=_63{IOX@6ZrlNZ@D+>vtC#%c>Gb{m3ZWQh-L5|xJVY}-1lMz%vLflxF>D+{<#*B+?N zifdu#60?O8YU{f9nICex^@by`+w$5odDgCH=o;B5A`)%v=SLyp-nw=nV43W-Q`7*R z6b4k4hFY)vniU9-^_t8Yj~lg1Hy7%nA8-B93$!CM;&q7~>rfTD$>6c1ALH%US=ThS zbw%a}C>_h0I#;H^9%aZ`AAkGz=Xq9T6TkJQX5GYsmGrhvZHGB7J2d91GtJtr{qe_Q$@|Yn(`+T? zahigon|Ja4uBq3zS5v)z{`C0r>3&zq9Sif;cTq~fBYs-KveJ~i{qosgpZcu>aXfzR z_q&Vjctx;^*lRv>S7vR?#$e1#caoU4B3;7bc(T3U*NpJn$ z4>lA30nbC$DQlM$wNWfZgJOzt3@ML9(v-KHbL}cg#Y=W!t9ovk9u{ynTW%)czljXrklWzpLEmL4~6*N2i{cVeTB$4wtt@q`{e zT=pEd!_8^YUhCU6``hF0x0t%FwKcn$=|Ru56(q%jn-p`yo3_ggjitfwYC|cAE!s@G zH^Y#;E@b)9yS(G~k5wP9pKsP2mB@rRqwl42?&C;mW)f8uyHGS!QIXWvDl;goE}6_( zLNdu271#r!%AK{;OspvY%*q|p%*=X~lt>qK%hpKDeVt(!B}By5d{sVG9dT1+yw3C6 ztbyK|bEL9zYpQfBZ`L51DOJ9G{4mmX!Dd`D#GL^4m2Rt=W?B=`%4GzpC|8vw&yRJ+ zOBK!faopV{6R41y`}wlb%v!CPQE=3yiVWqZhM}RZwV-Kci=ygXSuwNB;?^MAN@%Ka z-G^9z*omVtZQF~m9X-!iaX{N$C6BRl3Cj1j?xkKN$d!@%`FdFyOj03|lPqPKPx{-S z3uL1jpWpaPSBj9nlQaj-Gxj#pe) zgwH^oF@U94VC%^MDi0asjhZvB#Du04=kvSlwxvV#cz@%2YtqMO9-p*m0*|E(pB-rw&69ry0q$9*Vq zj02-Ic~t9fcVFvnRlL@9>)8@PfzuL(b{)J$2{4-<=9+eiIo(^+F1>Ywcvcl;CHLn` zHP(q*+;!#(yB$Krnz;hHSV_IP!A!ddQM-?>CdJV0O7KYi)MUju$y773UV@F4ahjD% zWDPxv@rq@M!MbXtXm6H`)T(U+Nof?lwL*$WQk3BOj(!diB*UbUB!U zo!}*ariRp0Y$Q53Szx5lz}$H?h=EB%7H6<(n`AAA_>V?4M4Jn_iU!x<&E?H3UWl0S zV*r|AIrnB3M^c(yzyNQh0#p<6+u>{POjAfQUf(d@-+%chbIMwCH&sXz;LezO)gjGA z|1pr3N-Qvwt1 z_gg#Ma=TKWwR4jy?XVk@TTFx!A&NpUC{je`rl6FlO0jM-wyoY@vQMt19pcJVGm1*e z=w-%B90C{I)dYFbSzF?-7TeEU2RB4G_ zHdsg32;h}z5arl)t|ZDSX8{(sEP*MpwWNCmDxP9=*SKX$-nX_O+JaTVc7lf9-u~PT z`|IDTHUh~`84yV4+fTnZ`RzacR=xS?x;!m4>iC2D(`s1;(Gp3m2*f1Ybr=cHgO7e?3JaeSr<`VSlFiwHxd?Ro=Y;_9%kBj zK~zOh`3lKh{T3128wv+w{>E&XdLb1=qKg>ka|zV@Q0el9JHuI zr6oTOzPD6q3qUiY5M>x5nwhyLQI#g%Os(`_!MoD7rjFLSjjH(gzL7ySo6_Mg+(L|!jbLIFtY zB&?|D-fPKDBSp4_q?!7P*WMxO(U>Sr8`7F-sqe@Q5;X`9*#eQMSUdIttDBd|mSs83 zyh6OBVT^$N-~ZSDN!iRGl3a6VWI!dDz-7IQ-=FhZur2<2eoNN4y?1vvjDDCEvHaG@ z%~W7U$$icu#%x;#moP!Md7BkDfb)))EWkiPi zduF7n$}GH&KoBHB6_KAD8;n!KC`| zD$u&GS9iP3sxH(y<8hGl3b*0sd^`_x?K`V0XJsqXv@_RzzxVy7AuPKRfN2pP5r`7o znboT*Th@Iw1q%Z)pB&>b4r5lzT!gY7&tJd&{hILok^H+PPM96HqBI5=A9VcMOc+mP0!k54-|@Cpx`ADpn^#N1eoi>nIVL~wU_$MDk>PMeSm79mSDh8*f;+N4{DS#Qgo z8(uTEg&p(fx2`!XCd4+c`7wU|r+@wRx4-jzSd1~wagOKb@4r4zaz%{u`HVSZ&ht2r z-^TOrpO25vj~Fv-&VjadCA4$@k+1izd|&JR=lx#V_xJnjAJ^JRrJ|M>p?9pO7c*WYMcT+r!g`c?-uSxEtC`0}2HPd7ch>a002 z1{sA;>y{tUu0mEK+<9W7?ovO_Bk>tuc4hCq^UcG%W7x2Vnd4{NKHagwKz&-Oz4q*& zV|#N8sx}=lO*H?h;Q#HeFyk(3Zw|BAN@?sG|VlHgH&3?WThbh>UJun??lGWzy+JS{t6~ zYQ8we1g^RpJmZ`(WfnYgxSqANy>kBcY<||xA(7|Jclx#Wd#&B*c@T|CPgOe-b@h8# zYavH?M5MBPCnc;B#<1~$y>9i0>7A8yv~+E%Hi$_WVvOTN+pOI?1yb>NPGG4KcJF-$ zFv=>c@imY0@%cOM`~D|3R`QP)!^bgjJbxXJgWUJZ4xguwgHxaLU&eguaXw_w{j7WE z{k^W}(;KP1_cr-4Y%tV9t-EuzV(lCe3^(&R!@JcNN)WcZE2SpQ>cfvS4DK+yrw`8G zie)VKC8>!wza!r#UqOa>q72 z%Pl;`hqXwv0(m#(^#plei`GPIv)AgTIe*e@oyL}pS#H>Owa^9}ZrdX>B3PoOhhq+` zc}_ul>joQItB#-c&O!2UjPraR<3A9VUItS|q6@fhgsF)#2jlVaJkGA$WRC;yTT5kg za@qCu7h4|Fu-AQWRLm_}EsD3z+c5G!4)R08)mNsrfpdbeN3=ECO#NO(wBR0b;s*)^9itX;@gV^3{vq4Ok5;Ts`%GUlaOkp5jwF~1M=4i@S zrxQcq~2OV+U!o|?LFNO^ul|KXv(X5*oF7>88&@5Yt}~g zYqgbRxUeLIZ1`H&_x+Fh;@(%iZX8}%_ok1|^}06oWQ@E~;E4ru8HB79yRn0nayCZ3 zs)LzV$9x(4*FUgLQD_W3Y(#ODmSb}Dvn^+tj$BTNss12em`>)3SIE#1@sHZrLI^~&#G^&|(i z1_)6MagTE_=Jo1hV|+@As!ZLxvh1cE5l6+#$m8>0jkf2%Lohz@@sx9K^j>E&Q4w3) z*LAP!D+r#`$79ULJfVI4^>6$A&wt#NTKCe`#3WTxJ@YgSpHpD zjt5ELXP%LD@2yw$|89Hm@jzu&`gG%Ds&*DG%K^_^dyK23b*;T_d+Hb`8)3SAU2FB# zgJS@G6uks%J*rmQnhuvY2fd@r{b6VOD#ij}epn=t+ECwnXI?TF*txsgb`AJV8n#^7 zKE(__WCxj~8o`!{#@%4*O*@EZ=e>D(S6NpKDb>E)c^Mk=m=e=A0Z)K`|F7x0MhAU+z^0hgQ?HM;Wn7NzcXFcsH79>#0Xj(L~qy(JRC)^ zItt-k!`XP$kEyIib;~pd^Md_whISSP>B9^}?OTpOfv^CHKz6?|RJ(zd4St7BfA7A}+mO<3Ie~eOp#n10Tij`(C+e_l9M-fLOO@*Rcgy zb6K&Vg;&E8KISxWugofI@4XxFF)hr@r7P8@;5NCV-d&*k?)%!_ME36fp4_@?Ydf-c zs-_#^-Nx(t8{uwxJh<+J={VPEtc zZj9A*$+dUi$oMOJ>eaRPb^r4CX*89G1i+#rL$W(c=4lOVdks01>Q#-Y&F)ZD>FeEI>MX zp>Eayr!kL1iC+?Zisyv3a(6oIaHsm!yNZVhQ_IY7o0)7_-|S3G5y={uZV>M=?z9JCt5>0HwplVDfGk*AWyE=WDA%R# zRoL0u+_~w(Im|sXVw#(V(Bo(Wt;(ezZf2aEZd#5S!%U}4W13>Fa`w&=@Yftu7)$IH zE1NGGt6Ug7LyfN0XlXKn23yN^7JPM)Elxqh(%>@HNYoj2;E`C%>!3e@n{{tDs@#0c z^XUVYxz#zy%~~zhnDD!^foiQxD%kLLE4)K3e`=?Z&E0h?0zqwAQz!%kpVg?nl_aAG zsQhZVX;!?YY524g3cv+G{$YF*r(mW95ooIA9whtKDUj1fW#F5fS#lXhV5TKw?UTN^%L_g3X8#?T^6?z4!7q z@4d7yHLrj6w=mddPwML&dK{-swYS{!@JV|TsaY7g_bo=Rs7?&&CYpT|P<1H&^-)>Gl2B zT-0Che|-P-7d6H)>-+Wk$9t>C>ET0lQ}j9gnab034hI!?_sTa4ufOh8j)!8z@%+5= zHAfV!?_GP}0;Dl;d_EqJqZ8Nn|GvInuh-rCaz`8=@XD*PUfYgKkKtDc_p8?p!)iIIP1~;d;s^OSo6NND~06ELF?zRYfn3Zt%c4Ls?BJkbU$}aI%f_`Eq zI1SNzqsnBi!~fg=^MA`ETdhM3Ds^|QuI$}yh`c)Y?T)e*HrIZCz5jY&B3wgit2Vg% z%DvaS*80A$@7;JDc>`VJXY9 z6Mg_G3;H>{yKpCAv=+4(k81B+paeGzkCHiQAgIAfb7v1g#P%POgKJ=*4TB>_*XC~H z!Dyk{8d9ehptbfci7aQ38fY_u7&a(xiQwv%)nlk>CVN1oa_>W{GzYCnnxRBc4zVOji9M_b`}QBW1zr|XTPH1r zeo2@4>>BUyMkgmLveM!P@yZ+d(*IOLa zP^lyQJU@T?n2%4`fQL=*x847Izwmmk@9)3fyE#rAhZmYwAD`#H{OAAj`S-s|1bOdU zrSte0r=6dlkK>oY-{1Ei|MtKB_~VbSbptgI_xTLTtYystd$}$TkjPHvRuh6)O;Bo- zDjkjRM!{Zk0}M=p<^d&|9-lEx)jnbzjwzUD9cX@_e2m>!On5x@otK44R#DT$?)++f)SGxx)bRHgD}C*Y#~y%4wln!EEh z#0rvSvd6BK)tq5w)_Xx2H2C)`J)KA7`}*gfcR%Z}#fF!an)oXu!uH`+OXba1T13Wt=nHiul8ks9`mzR8= z++Mj$O=azd9X712V}hkzY}4q{j;iixKjg`K$=f}+JiDOSof^0EfV%rj?+uYL8@^1k zhSpRKHf?x3(RSy?PBUfFI&7+BXgIkofUSIa?;aE_F*5w1qVKV9LJkdvBaE;4CY(GQV$18bn9+ zordA?7|w_GuF3@5`iMn=;qq7JAf{{U+O%<7_O)s|DTpINvCZd*Q`&WO*tyoN>26&4 zS6^iB<9D68_Zs(nbY+ao&9Igh>G>q6g2AAWx5dh6H6<6r)d;W~f){wx1g zTIV$Pb8l#j&yP<-et-S3ucptu|M>pr|Mo(7jK6t`&(C;#e15J%e#hhQ^VfgQ`+HsA zHe>Sa*zp|Bsa)?rzrX&xv%l88y3g}t&JkfSWSA&HqN7I?1M=~7U*r9~5jLtl#fP@T z)D0OAv#P90YwW6v-7yGzw8HHjNM#JF%eBBYtC z9~MXVyIXQOiU`LWyh&yACgz_OZYta*2LZxN*3KC@Qc-``cvj|Z}$PY!f` zsW;e}<`EqS$M3#h#Bz&krSP(zs+iUz7I3$lTNBZ_OWHJoa0={vcP%p6qjGbkbBKxD z(LtJ)Aa5I)8|DYjGyh!IHlg7cJc42=-xTc}xfLe#RabE!<*EfwxOE+{zDkOGyC;V)2=q|rn3)@m3Dd4 zA!^I3KxM^d%+4}Cd*P+;F)jGF-gmF}Fl%{Mr~fb8=;B%= zYYZfzTo`8Ow1%2ESYKs;#W_lKqExQ8jH#_}t=c*4eE#kxWm>?ibk*u27rN^<7A+1G zkX;nax|CnQ(bH>~^|ZEO{ZZP6KIT&@$L{jtvrWOVWtlH>@9R=-jqX3@tPz_vRB(T@}T$>Yp@ zU$1xD;1L zafYf5vetdc-45eEdnZJ?T4q;4cUm{hn2CdI?7MW67I?}XcdGR2o%nt9xzp6%dr1aA>$X}(>G#f&*9bOZQzJ70HuoqPfnH!^(8m93*~cG0y5+8 z-DQP_k_k(-v;%RHxi>iAML`G>Y^*?-MVVA#DD%s6Hh-DZ1`&pAdw)~gT*1@$Lf_O= z)&-L+`wqC;{Qvu}|K~i=8%PjQI+Mr?wYK^#xewzocWBJxco6Ofjwc8^=H#3V8#difw{WB+m}z*+ts@4^+dX2Is3jbZ{uOYER?Q7b&TQPst#2zU`9h9@TIKT*k1{UEs&_Lf{+Q}3 zZL0wTLrkE}%zRhhxdq1@1JOB#+39=$gV?pNE9oQ7pz3TwbsMYNcY;nifgDbE--&ed zBkVt7nXL}%?qb%E75ZWV=Blgi0@RtRByEeEDX}-8`auKBGt9?OTM_|tKTaR4RKsBn zsMWpS#-f$vWK^wsziL4pAgk2aq{VU0)5nbNUh55p7YGgdJRKIa$~EO9Eeu2t#mED|8KG4XglACC_p2ICxV z#~8+r@Oj5V}IF55TaJCUdfFXw5r}rf?1Vp z^L%w(ZBFd~ETl3bU|AC2%CEn^zuvD*UGI8RO^9Qhzdjz%&l#USkB%Y6Y4Y~WB`r^N zWz|(XrA@tU%y~Q_BEpP6vn0&H7{hxIXpdGS-(A}IHEqxNkWg8wweEXgtJb@ee#Y~0 zd_F$?m~@XL+zPt0g&M||8#z3RFI zoj)$DI538cP%HBX0dAdHwOO=5pW}TB9L$M-wtyK(hg9 z|3JRTqM4fDVpJRupnV$>SfI?OaX}46^{rfJ=DzM~H(Sd>_<(+k_}=*z=P}stOuf+9 zuju2Y^W(4wS7O1&_Itfwx=%gLEAP(xoRc_OqTX=i;$1i%n8#caPGVK3jrjpHm%H9> zZ1Wa;7~-Jq2DI9RNhsQ4xQ*-(|;Q$0IWL5;9A8EFJI2b#~hv48}zWD%5+C9YVTFuV?2Mkkv0Qg zl~=aUFE_7!<+3&H|ydcm3yT?O_D^e>P;W$$h6Wf?DiqJ*Mj9P zGeo0N>t|7AXWcwMIG*Rw%zeQZ7L?;h4Mx4xx_zGKc^qzAo|`j}_(3vtj$xc1zf_;h zg)yhpyz&k}KK8yJ+8668xKS1Xblz5+kg>6mG>fj%a!x9xtFM!6onK!iEgkEw<4h~k z=h5uW8kOBB+IbN2cO5bL_es!v_z_Yia<4`aH0B0uwsWfhv*_}`kwg9h-r*UmNpK+7WxJo&*{wG#{4e|Bon{5&fHm(KHiehefQuAO(S9TDAAYsc|| zYi5B}aX7KAmD}kkZX$s_z)=>b=*l<>-fgaSHq0IJ!?Yt*fAHKmus3>a|$b zmtV$XIEI=g<$9APLc5tMQ2?rmu4L|)8)Jk3S3o;+i$#^Wjd(!T5_LD1A(|>nVw%0X zVfMiYEmtLx#ve+$fM~i;8qQ8Arc+S`b!`(*xUkbPIJ#?_A~d8*8yP+ixlP_JKf=W9 zg1Ng@fJR>|&oQOsZP=ZxE0+Ji|MmZR%q9r*JQUMo#Bn_6UdT#P?p%%cVku_C%=hbl zFFTw@1IBbSV>e@D9$eVF(r}DN#F4Ms?~S>RLvzZhl+&g)WuO^^{%O+SEFHD?uDaKq zSw8(o?t%9ZeLQ2>AQ`6xjfOtVmrWoZ0Zn)JLla}T+OC~h>SCjCOo_D#8!@-oZ3DGx zx9o#HsztS#sZ%Jy48{ZI1~}!pdqLy*e10BgyT0#rjoc`)(>tv#AXApqUASJa`={5q z(3l0!E?TrfefMh7h2HP4olT>-s4SddgcD)#MXz?0b?}5a`XM&FnFn8(TC-v2>cu_l_WEHoNbU3ITj*LT*IYj$&^I;^U+ zZYrv>!eM|mi>{4Q>j6IybZ;AjfG^2hUPQapRz-m}YBvs$WUVB54XvY;9f#FWQ4-J=R^X3lCUljdVS9yn!@B)YaC4*&c~@wS~M^HvNK*lX%% zXSH%?Wp(X!-Bf{CtJ|VewKh@e4bW<|2vXOs`;~jwovLqkX&-g3mH%$U;Um~?L2Sqj zAB8O4-IjH;w#?L>xs-3@$rOd^p~Fux zP-(@K)0$R*+{^gmAG6F!z`Prx!<@~Z;#8J}kAbdxttvR;st#ORb4p7F(g&wKtylVP zf6UjlI-!E#V~$L{a$z3P-E1k2_!toluiB4@@75Yr*;pp*qvX( zY;)^!hgG3r81Ppkb^8xtitaJO;OcIYfcYs|W236;LLA}0%Nwd04*_gh0LI-{n^!OZ z+GtZmxDT5ae4<5E%TaP%;O@5+A2qgVv0QmAOy?Y^?)R$eZfiaVqB3buJZZ0l3|?%> zWVM#M53l>yMl+cztu1ff0k}NZ=J#P+Z7)0C=G+S_L2pm*w(>8>`ql%?5yN`YykX=< z49`dBD-VPF&~`&b5E6+2v0ME^Sg|qoI(N6vqmjroXy0s}$1#oQes);r?KB)UcgmqL zxDrdD+4Sw%Sk>)u5ZqUq(dM%nuIUPPsvAcWzY*2>MKWf1k+Oo<*%XWiR2DwXw_d1= zd2ER&s}rOYaFWWqw`U-|a*G;p3ORUb$anVN>oJ(;@F_D<_3hP3X#%Tvn)R zK|>59sa9pJO~?OF)7z|Bj_g==djl{dk9$O9-mKfzs%~kbk>3A_Bn`Ty`pt}RKZi5} zur=_~JMg2C2CTIn?{DV_p{Eaz2kdNTK&66uW||L;?kbCFHgf~IWvTW&B&Ka^bH164 zcF}Iz8*`w|Hp&Kf>x(Of&2gALI^D(t;4qqLm3H6VzX+Cxco!o#l;S|$ul{S1)Er9F zegf=Y1Ni6}l{fO|mHGV4Tq{x2=C@^u~Y+KYN3qxQ_YO50Jq zt+jT7JbnqrYUogI+eudthT%m1)e;ID~CL zt8OAVa^d-0a`q!p8LG1{ZwVquOj;BPPCo8xxUV2fK86+elvpY?%JDi&UMo z5z+PbS})8v>;%Q2>w+fZVO*$cTGfSq%8te`U1c|3$aW4NboH!z!BWE~Knf9EU`udd zd5Shu$F$(-fe)xUhv`%PVdJn4W#1Y!v#-@B&831_C4T<(=dtbEj~}dwQ9ID>o=YZDWGSC1bo9a1X*Nf{cP>_94QIQ3Nm>rAU+J}KvjG5Q?wiF1+ZfxMSu{%KP#CJQ zJF$-8M?V(5bX$pTp;oQ?%6^8;=}vq5yW{jO@v>NNk0WNBY**!C-I+leR~kCp&>e%vF*)AO$9a;tz}Xsyy;^3J1Bk=W?rTTGu+~cG-6;^kJojr z=Y{F2w7bnISH8IS)qQ7=UbjG>uHGBhb>+vueC|XW!O!RWH1+ekpI6EbbF*6RQEm5q zb)s#=R6sG`{_(%P|I>ecJMPjh5GZ$J_(Tj8h9-D$Bm(^;4xICB&7vSVC!j=?!n+55 zZLmQ!j9rBFf^x}%=7)C{Us0o_3kgis`kBfxq$bv;caalrFm_g7tJmHZgXX5rQbFM= z1jOG8ORT~e1DFj2bKomB`gpfe?Ji%Iz28=C=3sR)=V*@f{2uL+t7 z_N+wLXu5Q}Pr|!sWUq$H;EnC1dgv=#UN2BboO1HG$ zy{lMQHL-m>O79=_^UezX5c`>*&Tprk?NfDoUlY+PyhtQ$FB}dV!HJ%Nv~?Bif~+j}fOHVwE_=Mt?{EPe*B- zw84A@yTg#!<<;9dr@NU6KIU(AZ_MrI4@;|Br0LzqQ|sAQ@$M#10p$eL&ZdP{F0&Q^8{V4BKGQGiaHw+6T z<6-uL+>h|l@ygd;_qPNAx-`xK_-uu6<%7RU14OkDqSO0oe*R#9sMdh~6=d#zm z*UoAfIPl5z{rX)8c>1u@C@Q6n&h^*p+4MLT?mz$fSEl~>+i#CI8f?ZP9Bsz@AmsCy zF!?H6BO56wrmNw*L~H~sFj=C+!w8)T57MTNHfk**Vd59RN)@f>@_~k`z^0kQ=nF7v zAeddcM}V9{hjqjhNLD8XU|}dFaWleW(*ZlW2LU>(y4{6g)fEOg3dWF!lFW#xc2>=9 z(ZVC$4)|;=-X;QiVUKpU#=yHB0@K@TJXT*&JC57W;Nae`yyrlltotLEt@q!5Jm$gA zwP81 zZn%utK8t3OxP_v-&+3#0dr;SCrGGA83Dcc@SB*HUJ?8xJ9{IxE+})k@!=Wn|&3>nu zzSc;OE!d{Z?U1j`+?N|lfgX>+cyLjj8$9=`cHU!@mABTit=x3Doi6%89cR@hmIWPK z@80?M+@Cskw`V?hAclp2G_tzCR{I;fch(o0EScplzcN$1rmBzAEJ;C5v^mp8?NDI>#a1)QM}Ji?cK2RF30->C#+`b- zKDGdUv)MkETSwF6YmMtFW1g8Bba=laar;4<%yM0y>aIN!%C+w6n&12l?~brpJ5S!0 zG!M~^8GoGY?8-fjBHJwq_@ontriB532CWv#GLC8R`F^_Z>+`d#W9G0j_%**V>M@2D zqyS0X=RAD`X>OBBb^9C`Cpeh*^YvWM*RG!hcfPItEB8mM8t-#_H?3~MEzFH)xQ3B_ zcJF)rwVuDOD_$9Y{`u$s_@DoJE&cx6dz_EQO_659s;1ldpRGe%rer z^=3v5N2h8k-fA+|=3SZ}yFR!`i$WYO0u)H5PUSeMdY_7LmHg&tcO{A35=#!VUM9OeK2-VhsB zMOwj2Wx=4Kl!zFIuV~U*4cHd=+pms4SQ%h%)Xn7bSaD%(PR-)X#0GBckptmmJ zt|FRY?@cDmDeQ})kF1(k!d!B;%o#v+W!og_QmwmHW4@DCd%1_~-usD~wUQ;;fnihK zHgNb!hg4?3t#vV{Q^mci%+fJ)LF-p4O_<}(&b(;R)fdQGxe#np8xaE0t9FXR-+UsK zT~2`TO*_rM*$gANw^{l$Rqw3Y7IF00r~=N$j=s(b*n2(~>(Z?E$K(6ofB*JvSU-r- zeRbZHEXJ^)?nE=rIoYdwr%pAe6STBuCpwFU8dH?3k?BVz-&7V>d;gT8n}B(gDpd}- zciT}}r35|9$78sk=V~{uURPG7R@WU5kNB;tx>L{h&>QTMYp{=aO9T6Zz{+1(S)6o( z;n17EzsEy(e!f2Sc8& zj?tsFwk}I54iaIlieR*!tK>671zB@?vI8CICAE;Svf@F~Mv7InVHnP?3+@c+E;a3( zhA+*ece!~QjmPOq)79?CKz6f$H*M<|JF|65s>?$SJ0F2Ataw~U&GqO0`1A9v`aD@Y zq20Zl510YZfj4`%p6S=)bB)T+11}l2h9x~bv?L^tIR**Tbb8^U8Z~#7JWXR=OiQCp z8mc^AV6@(ih{#G4&f)S=jU!vI^wX3Al4@mvv}h+Kqs^?PN{5vsR%a75vo1rw7D+qo zX7$IGM>x4v5Ck>u`|0+0n0Y5%{V<3Bde(pZ+cWDm#@p%V`*%SEhOasen%RrRz<0=u z9*4I&+ZY>uJ4cK1C(W>xUGD6$J577C%a0rbM-B3-Nb_gyvv1u@PY1rU5)onu#RJU=@G{(d2m$nt(FrM<+ zJz9+T0lWI+XZpiW%gk0P6NLOi98ESP~9O2%z-B6r`7D_&X?!C95V7Ix2 zmt;L{2t#_^sA`WJF+jGtJIrb=yg=)YPn5C3+zq37%NG*F4S^CT$&I~tUY!X9Vtbwo ztyv*~E^iEY;eN6#;gzqnMjW$aTeq&NR!tPBB(vwfi~FhehBXMgy5@8%7OE z#+TNk)@dO-k#+SV$DG&m%FeC)>$#LM?d@C4-@aSDSKYfmgEzmK6xZw0slUJ}AX9d)KLbAOjgHP&SHZfs6ISR(7tOomt9zgaY%{J@ zj5=eWXW2`({;b`2Cn({X#|t>FJh=T{_UTu^&*yTl*V0B4KvRz!AedT5cILv2)vUT%UI=4h;7Kj4><;t#z(J5zBW#2O(b|CAl*!?<}6w|c|A zLS!ySut#?lwz{RqBw<>;+j{CS54>e%j~Jxyngu}H?F){jj0KN|2SBGmKxQk=X1ASr zg`(Y6nC=0g`Z2s!S$+E6ZA&?s$KOfHM-{R+fKR)_kHiX2-{{j z+}L@WjcEsc7kaF!-OVpa+9DZt2r5%p$CST--Wr6$n$$`e=IOpzP(Kp8*+3efh9(|@ zAcKKcv6I77ZQXu6th+OfmrV6yyRHeX^2;}?vw)VTO65~6EJqcPRMl%n!(lrQ;)W}) zCn?yp#-X~phtr7Eo_1Jc5u6k1k?7v)tdEzDr8g?sdZ+JE?d9cPbrpjt%T#`xhtOFb z=P}fSgmG8y*G-n!)8XFV+A>Tjt=yX58&>y96tE25yQFp=WmJv8fw(L8TIycjy*{w5 zfe)E;x-jpOnJ7cIa@u(Bv(&q-=|^w-_2<9*_2-}AK;PnT95Id>BVxXBujlnqDTBLJ z7~0>)+c&KH^H()}Fn6u4W#Q)Za`S}Y$`#wjd_0C9zdf$oF&_V2YN%lA`BA&dl>2&q z?7RH1-gRGlp~t@VdX?SE#J~T1{alwL9X!r&PIFp9+w%RKk1(el$2T7~W1l02Pjj0S zJ_sGd!q`iF#5~^uwROSq)?Q=3RMGQr`{>QC$vxz41H%pQ!~+862NRxUXEvwb?_n$L zQ$Ea26O4#K#H@hMA)woX0J`z!;ca)XqA*2aFv>WXhHmo~KiiIBW8}w9Z@HTtZ_DMJ znRCVw)8{wetKqQemG)S(DvR{eaOQW7txDClVQN_K^s@5fK+oWkdT`j@o>jvJ!qln_ zH`D6;YI-%vIjjo?T|CO-M58-J_m1kU=qTg9rB0yNhI7y~vbIHqyHyf2oAjjePQG=c zv@L^<(XXyq9N||(dqZw9Y316__BCvjds(A!uMIOikiK3Y7wr7;Hq5HNI<&*ye!Lm| zXQj2SSN^O&AF;xH=j=VqLMq0=+WowUDD9==KnR~oVod0U5%Vx_w-84OP4LT%ZvCZa zk!7+G7WEBU#8pk}lR%9ZV<3UuknKYOO};IwZbqa~s4}Y4m;&9<(6!(wn}Q3Dhhi^$ zL?^>!fR5^0yQ;wmb(OY#5g6u#TR*d&-4St^8)lz;mw9cG4+j!$b$f=nE<^TdR5fM5 z{@f~?CEL`rm|LprRo$v8>^RQp%d2?VP*&A$O13)GwpMp! zHVz*LumuBS_9rx&&47q1h}Z>eGAfSKP`h8M_x&Mv&6C4UJGAe+)+z+G;x73p|GG{i z>Q>hF)10wswHj$wZ4}^qnI1AKuI{mS>p%Xg%K0sV`ci`{b6CqkwvRbwx5Hz3u{!#E zP9Kk$`+n_LGI}s1)kY=VvdvNH*4U;lqcwE*r=QLF%=yj?8`~UtADXv?czwWi~SM2q=*XLePTHW>e%wKjHDp!#f10I|<9>W6&WWJAbp z10HSghP%zt6f9|R(;dL2UfV+sQ<)}kvtFoKed9PCozKtkA8wv?V+8FRv$m}^ST{k< z5ioS3Z0LJTKMZ|QZFMqX(KXKbn>)k9cXejBIS%z%yHc75Y)naNSb5n98!-yQrUW@s zYOuD;b%5zD176r@K8VZdy-#%)x@&p8HAKsysXu)6O9Mnn5Z9JGal<^-#9w@uPp&+c-0&1i1ztI-h#G(eR06F47Zl=+6p zdM_4ntJDT>Z>)&HhEyKRYK<5{OD_!b`?b26(C*rTxeXi^;2d9#w}w#niU|G@Ute#^ z4xBP%Z>a;+^%I!m#I=#`69^g!xw>}cN(_#IW!{dJ%c|FGZFROqj8!eKISwU^>uME- zJ0_VusHzhZPc>}Z6@fj+VF)3`iw0vDadd*%V}NY|hW*BI{Y_UZGF);}W$aP)2=D|4}1C4^mJP)a$XI80Y<1B6LJ~%tr zy}NT^bVoOB&{S)-2M=)QgmAcHgxOn>X{wvD9)ADsnv`e}wYe;a)m zZ&h)SV_95P57e0980K!Op-zi99{;6Hznik8v8%Q(gcNueJPg^AnbR^^&7c9^$QYiSXYa$;_BdO^Mmqt-%1uqpXAieEjl;YR7#_lu(c|u4 z79MfFYrp1o$DO}Mo0T)Of*RLX0Ig$6C}xe5Tkfk5t5wlaH*J4~7EXA?+ByA#-{_(Z^{m(-V<^nXWR#IMmB8JRX0;fv(P; zmQSn(%tIr><;Og0c(+uzbyN9etHK`iMTcUdnpHRm7}f0qMAd?bhMbs0?dnz=^+(#)t5|))x`$P%hcMR z_f}$!5pK+qHdKoP@P~wr#VNoGEtsjhs?0#3_BogQvD*PNNO;l@L$-4kfELU#H=fx=%$*o5(X_Lw zUf5A9({3A^p}tl<>(kyauCAAlz!)JN;Rsf#meqoPd}36}hD^5imrvitLE^$)AQ}*u ztrXPHecvz)e?e{TB!fLH8j-qLfK7~4$vEd|P~G0y!(&XAb(uQzx<)mtZbOmp>y}_< z+V!%uFlX&{H`l&Dw}#ti)q)<^izPYaem5MHbvlBbFG?e_KJL%ErFnRq-)z^5389?L7b2zvn;wx9gwkpA0hZD{rOGaO~>58GAKf`xw>V9w+;o z_jX%yJC5Jc6q?^h_0wC@SV&6IZo>rhM&(^ak7-U^eeVm9kFc=wwDFMe&G?=~7=m%P z@+EJSt-bgCe63Pu-`7g5-YN6D>iPLuiTfpM0Q>dpumAD!aV=d}iTeKg63ieXi+Gz+3wR8qKhFP z!*2(aYnPk3x}JK(F5IuzfjL~8917fPb>k^Qq<43lpQ8J9o7&%VXb{n@MfKE!*0eUo z9z}n+sIKW&+La+hd9J}Zj<;OBfugMYR>Sxf6Ippyd0!X5_SL_Lg5GYsqQMiJi}$eU zd?>K%)cx}8t|$(ir+e64hK&HrOrA1F9N#9q0LvTHhqSH_>oz_(SP4w7wN`MM-*Z}+CJpj_5|;nb>1^qqEV)>-Ce}w|iDPh6jTl=R54meZxH0eSOy68$(A- zimP5F9~?IQc+5G@G3q>?ecSWO@{(EJYuzah)Q?}&U;$WSXpYjt6ukh`*y&N=g-%D@AJ(o*Iu%i2SJ)XBB=TOJvek_n~7%o zY8p_9%5psadgbQh?Kr|;>v`Qv8N?%|cyyuH^|__Jq5X07zy3%4$FKWep7;OxFa76F zjd=av|9t%)pZ7f8{^9SxzyI;aUfCr#T-SBKauebUdLHZhy2ALcag?vFD)}^o!!EU~ z-VfikP>k{3+;#Vevq$8v2*{auZS1w!S`(42HU>}Y+(4~F7#`oO`OR-Lt$D`VJRgUD zl~}JO6Wtpow5l_EtvhR%)GJ=E{qg#FUzx%j0?C6^FU$VVI$U-DH-%o!|fX+xNkZt>1tDK7Sl}y}}Vg)88ykP)BO)fZsNJ)Zk}~ zA)DFKR`IaIj~R|y+g@S2X)>cjWR=oLw66RxN8Lyp=P*^~+6>aIy1N?K?mSN#9=Yz~ z2Fa+-ov;RzM-=4D>0a1`VMn3H?s0pW&~CNmi3}n0v@h4e?$#~b2%}-XVQ&<__@wp# z&7@V>Tpcv&kIfPEN)K_es$w@{Y;QPX|fUH?f19yaMoI3)iFiT%934E zc>gi3>RkZGa_sAQ4!@q)zy7~}{m;MZpCI;QaR2}y07*naRDWLo@zHD9Ic3nl{H6TA z{{8oVh_^R?KhGcUvpw=&sI@+Ii;weleDMdzgs0?;H8cfS=E6%o%_Gv0ux5 zF8urT=LH+%J;UZaA2C=BV8q*_9CrOFROWPc@vr6qe5YsD#1Hx^xk+tw zcWix*Vc4262R_X7p{u-u(Qny--@9KY?BRX`wEGwBSuYKc#jLygBzVr2& z*B4dpSnB=xyc?VJ-udhEv*_~#$r;&pRfVEDK1=imMz#)13A`-Nk=hY6bV z7!!kh#JA(y|Hsn1>{_xc%XMb%9+5fcs;a%ueehlq6eK}vNRYq}5d;a~Ul34B{9`r* z0>pjnUA5NCjBs~TW1eodq7ey1gqw|VaHQ*goX_J(tc+b>mR*!NeS6iaIc!Fim)rwv zw%oeAQwa&eA!=pDaYh`zS9#KgTL2}p8OZV`9mEkFJS|=>K+Im+!;;!4WYY^qRfbp7*}L3bXyXa=_hsRRe#!!#0g70ec9b~od&I4%JHc%KnWAL2St6t@Eh8l3pz3#FlGnh3m zBzHLt=Ic#9>NNSmi4X%Vn(7g{x|DTdxQEz%bW@4v5zj|`?a{(O)il7ObOm;sLp92N z%2PP*ZtE?;Z6F_|@WwFgXOwQo+VV11X{p$6(9?u{7 z>~+OB=~nx-Z-9u|yS;_SbC5@`Y`Ey%FNtFwwXXZ;*GdXd<9dCjUh(*dV-WrE`0YF& z#uY>BI*-)xZ7}!qORN9Vdslhxrqa#{vyZ`t4gY>zbM4iR@6R8n9npFbhw}IPz8Xi} zmiQyWkEiWIOpLXgjQA)&|v9&Fr=LemeXApx2GQG$i4pCzr6nIzvO@U=lhR~ zKE{uaevC=>A3y8!PyCnv^7(K7_D}o<_Vj7jy?gQbam0_uZ{PkBj7wj=Zxm=wE2y5^ zdhgtwKEZ<)=SQ0#hQV)Cd{|(jd_K|Jja%RHz8$4Fq?^?e8t2rc-_7zkL{(lE6AtvM z#VRw48lusxYhTq%eY(D*oJ$5~-yE1ccdzu}e$dk5fR%FX_A%!ORrP~cmpi}3-z@RB zRJaeNuS&$4PHo+rdEF)O{3vO!8`1ac*B}4%XXbXSB+5EeUJrNxH<$&L7R?Z{*VlgMuksFdqtj3YwK?+>t(Q+6J6EJXhzH*PZt_TX!JF?#K zlcS~TRJEg-T)u8`m`~d*+hqr6Gd{IZ9ir&)dCYMlcg9hu)-PIHOC`Ap4TY3m2kq?M zj-o7@;FdRvu)P&20&2oNX%pSuzi{R5L+&Hs?%nNWFe?>o-O2SD&*vD2>QbZWa;*DO zKiuqERuvdX*J1N%wYu3i+RA5JtI1|{reUE1hKE?`2%VE2iRY5cCTls>UdBBcI$%9b)7zlVN?6>i_ zvYU3qG&`n8Fjui^H$316nJ}HxpW|D1_%XWIz8KTk zAR$zRgL96!*7d73&c|{8>W6>KAEU9Kk8wUv!cd317uky{Po(gVGvuM53n;PnB`kl> zifh+bHZ9K|wXqYa(zP|dkJCDT=I7V-_4V`D`mg`3>WSYUc({Fhi|ficI;B5;<-h#- z>&N$xtpk~T@8;7|(;m40}*29(R)f46{*7udzqS@jxKySt|K&k*I zt8yg_xnB3z%Pbn+Y6GYN%N-54!o0$Ith>FpdcE#DS9K#Z#~%jc*!Y-Zy%8?<+mWH?>>7BA@RES#|M?OX{VK^W&S z`7`tGEFGyRbyTk1ntDgpwp!|>%fbMkG09P>+4teBj$OY zQ0~`$k%Rq|+v*jIGp^J&nS&}-xp_Czd@@e!4Zqcw0ph_ooyKkJt;rm&HoUUDtsI$+ zH*F0wYrm>Ow(Pz`bE|X-V0BtdKW41eedG))qeU~R#WA}Ek%t@N!`x|VL?VHgfo=nm z`siA1FPo=wrLPgwc9){zK7=0Z1vlqZnz-DZ_#Q_BXbtllYpn}uUvnOvO#wc%7J$F9 z^R8><`Zk_WwR#@sa4QjQhS-%BaMAeS3}#w6T;`4@z%+JetE>I6nC5Deq5W!z9KEX< zIE8X5V7&@fj%b&uX})s^G%H}Hf+M05AR%8iaH|M`V`>0;f5`(nK|^tFpI$MF5O&>ly+(MP2eUD%G(MioJCg4EgnN71RSz@psZbF z<)c3i`$zkG3=q|w`_9}*f_R}oOklMII-~Oc+mC3XyC0!4NtkhZX(LyEOc>W~*cwQ) z@Yc$mn~WW{`3dl~KF*18Omg5_)miXfxk-#Xz`WR*#lH52*?Bz1d@I%h0x>uzr+TgK zg^19+zkW8-pFgUrd`B~PnazlUyci=u-qKydHsa(HzL~Gg>e|wxMVKpK7Q)$}^IYm* z^%z(QXik7{Vy%@BJ(j`g$%`PLd$24y1 zD|@t=k%Z+=y}eU)!4)`JM_Nzz$zyYDG1lgUo2p+(Vb}JGNdpV7%)$2T7dj2zW{rh_ zI2bX2%o8hM1!vW;?s48uN9oRAy;6K|Vsxph-G^u67R=D?gg(yW^wIFAbUPs95)U07 zE@rzLLbi~oCe4QTzTja4d0lLQ>P)jK(~Vo3Vb*3%7}fT{N_NA#YH6364fkYqLDt)# z;-IYFFiCl)$|}q@Gspw6x6km0n=S4D{cHmaP{AMPG$OY%$)GB80cTX_UVQ`x)Tz8h zReUEJ`O17{!^UquyI*@OaH3wdU9hmt-QB&SyI{Z62N9mkyNj8%))JF%N?ksI*ts^O ztd~sr6^~GIy0*ds}X(w}86=eev#l zmFTcquh)fbIIlnd`1R)>8Xp7retsF44R;K8x0uJ6P~Mjui}`u4L-F->=l&V?QTfU%js~Iu zq8n4Wx_4sMuCp(Zn~ttBt7=z-t5-_Sm|=tSk-pW!&hCao2sXOg<7u>tdrsMy>n__B zHq*M$*2~+yj}4{1A`TC)e04iFLp0u-zp_t{XXGty)AaDWc58UCbrZsVx2U{I9*+?R ztOq$pKRO1K z;XyXG@;=s`1j2f-q25jFVVGf0Lr4%%-LwkD5Xj86R&US^=%9JAF3>q1M3@Ew9OgdE zwn?nvJl(Ua1&FOys7MNfBrTJ>1JSd)7XkD6wtU-66qz0)zY=!6^WY@RRK(F!sK;Wy-s%-}-k-v}YXC(0j`q=CM=k)nJjxU^@dA=RC%U zVK{_Ml*4Ehltsa4VbWFy+@J<#_=$HLa+EA-!+gS9VTy1|!;L21Fb^B%VIi{~afG3S zY!bWSjkAR85;mg!oe7tthRCYh*qSEMG00;z3C5<{!wU9GgBA}qx;%U|Vkb%kLl~tS z-Q+L_hKU54AU$|wxQCzPXu?s?VGiB9@3d^HR+Sub)&yr+yTfKcVmA2}G&X(ABchWQ z?&wOri#iAyJG!{gj`ZqMF8~%Mk_d*XMHq?BE#4xStgePBK##C?zFJIJxJR&*t@>-i zzrd6+^w`4MKm8ID! z8!LmO$M--CwIE*WUe{}ZpI7ZqK)v(l&+F%(pI^QCYt_%n8GIQ2&0p;K@N4B@Il5DS z|2L1{|8ANd0GF@V*IoA}(o!yk+yuvxQ0QL2x~e&|x~m?Di4eSBb}}&k%2jn;q$O~x<_VJk+o7A7Dq7r zHZ|<6hYb1?1I<@A+YcKHy4uW-!zQWQ8a9T>ttTlSz&x6xV^SUkJAEq(5ko9>mATOj zx)aqshZ=2-!_mrniwzhA(Y|_^bfWJYJG-jy>(9#r$1$krFW6^$(K$P4gJWQBFr1>X zt`m4Q8#RlRsR70pP7p1)Zp_Z?B0n?lh+6asko z`4K0_&!Q+wf2HRPZF4^qt#*@l!^45{_D1}UG(@_lb*qRvf? zHZ@;Jv*GCUO$HI&*exSWN4H1ZQf1wZ5n+U2;V9!uT6?F%%N*T+_tEm!G9DgoS-Vd` zrXkA3VcMOUW3=_$0HlJ672TiP?_s|=t?6M;wklz&9Lo{L*|pGUyT!^rp>j-wC#&70 zAH5U$RI7jjhD_b>f}*O_tQOP+xs!hSe42e35*Y9-jF}t&*z`e+p~o?lmuH_Zp#?-)Tog1_iNpFUz5Vgof(J z=F0xEnjUuL*WKYpUN1jmL>QxXuHB(qXy-IP#@Pm;teeUrRI8bU56lw<%dd#0Ze(d3 zBkWoWm+VzleK1We_rLrw%GT9~)oR~DLxM%m<1iy0aDN`%w$SP?U*+?b4#oKPF9=a~=Jc>THW(saf+#+gc@yJ3}KcAI~-4g*<8YNO_sP17o6)$ds>_T4ZwALaBW9e3VXDnNI4Nu9TU1ko z8qgS4yso{cxeeS6hmCQ}^N4`PG14MueD{cgmlWks~L7Etu?`JtLsGKOLXK5QOtb{M}k2Z5NA=K%xE&DwDb*>F}F z$m55*xzoLX#zDEHlsho-Zt1tvOdie=1ZmbsRe@x?44!R0#yRcmbxFx-bQdf^sJgoyZt!FBh)Q%v z8>I^?@0DL!O%9cB+i)1$qBb3+fO&v^q@t0Y$!ek2zTXmn*K1ure|p5n^V_$_^ZDBm zVV*${ah%5yCm@1HL)Dw^?)(_>d^}_L445}tyH+{jDycLb z2LXgz%<29N0ABlL++|L1&`SeY1Ka%Md{d#r;Z`c1a;tqc76_Dq9x!4nZnrJKVDcr4 z7*8@=JA3X0>_Q2AAMh!bYd8qPC}@DEc{i$P#UhNH!SyrY|LOny-vn2K-Bj=OmC9Xm z2YXcZIGT;jjUdg4U!YTG*d9*z_fjoldX3InyHHV`sTc3OKkw^)4Ld!CS-J&7t_$gn zNzfYT-MWoA%vh$fmJP4B;!}e5SLU5{NT9vY$hAIS|B~>@2k_c!*Rm8^J{_UxO=p@= zS6UU})%5A(`_cFM`uSzUe|-Dl+1;?1RwWwVQ;Z&#$8lPFU-yxa9tG@5al)U5YL&@yf4%OXhGB|T)f+1zRh4duZst)QX6Df}^b7Z{lt}tR-b6A; z?1_ZfjoD+Wc5jnT(g4wo-s&4P9}PnhaCPolS0ibciBv4^!oggf|01ZH=*zv?>bzxw zo0)l7*HZU+e2`tQuT>+LP}wm!&N&Z{h~Z(_xtb)KmWBiOThM5MDJk=fm2!%-pe6?6 zBZj$puoktT!E9hbW$5DWv8$@&=FD8ZSD>V>YFBnwIfA7cduvw#Zj{sv#^~Ut%jI3L zPP!px#3TZy5dnM1C-M@PjewWx)gs_1?uO!sFqi}1P$j$O^yvrXly&CHO<)9JCZQA6 z%udx!r^PMY&018`!2 zFV~DlDWTwy&lU!;WnfKpHxe4;FhwaSIuDMw*LAv?Y`bj}kN7#B)Hw8@#+JNrd56n7ar42HAKqmyL2 zsd<;GH>(O+LUE)|{OcWGwc2JwO40^ahPBM5}k==_%X-Gx(f7&uH9cn<9L3czIw0Y+jk4g zx5P-@_-pphtjsOO_c04v1VE_2)I~m;4PP^YFmW41rrb>=lhX~8Ws<5yZwnCaX)I6o zl7&r9wGD@dr@z&tEjvxqV?!J8>273`tiC$$@$r2=vH!R#n|dKT+~*wK++pUymh65T zo7BpcE0vYt0-I`?2!M~BEB8-jZtxi2A3hs=GmJPNbCM9->12GcJvWUYi`CK#v=*y6 zGk{@+&Mt)qiM_Ld6>hLOP{xz}Bj%cdL-bZlIb6=YbIF zreqXQ@G6m|dG7hJ(Do`Y!gYqdu~`uoxIr?eA(booh?qHURXfeb#b#qf2nxVF;6wEJ z7Er9^wXb{E*L|(rS?At&*O!{>bMNa$jNu;VwDWKP)@@h7450OK4rA=1H3wE#ecmdl zi()0)<$v>-|L(v0{rA89jtDoQz8dXj7IS*ny>|L}j>kOa{C0f&KA#_Kn6ZMm3o_BL zxhvP+p+{9CE!?H1oy4O-$Sl$Il7+>v35(2<)T|01hKRPZ>H;e4B+zX0G1RF$O^yjV zNV1J`8PHwew(j0AXNE&DAb6|8$ZY~>fuxVJxL!-};UAD>Z5|wECX2HL)de$zI~&@a z)BR~Q$L>Ds$rP+PnpLQz+2C`(%>VO${NLLXz6R)KV!>X= zBv$WVS!?&W>kQ?_>1{r7sp}U_{v;rE+D|c^QJ|lHR*Bq z(%xARoAPNv?pJO!L^UKuF)kK`R4j3Nx0f1Dpb%;LT_#u*rS-*VD!+%HdqRCSXMYWEBFhAI_}vX+dP0w{9=ajX3< zhZbdw0Rx&IVS}0u57>ia#>j>lX{}wIZ9vdVa0=2(HbAfY1;`$NH!&QpPM2gM7it-d zKF!&(t^o~7L{_WuMco3M8=0N+&Ep-0lWpt-m0i8d?} zcKHms0Sc;N8ypets4A?l{rdIUfEj^b*{#jqOjsvr;TWv+IsEu$=53Tr4Uw7en9ZP4 zebL&{y+~_|ww7twH23ONS)hULhBvThnPJ3Xd*fc!x?hK0t8<~{^_6>VA@i&Dr!cJ! z;Qe-}^V|9S{V^hrBYghed!W5{_Wl}k&p8Ihy7l>)8~N+A^JRbY`}5!b4}bUX{^1|a z!+fq|Sd1};PaoqnSdn#nJ08!E+zVEB{aP#h+S?*!hy(3^|&De+~ z>MbspQ=?0{w+Kc*!yoOd8_nOSwnAbw3I;k|O`4c#FT)WH;U)**Z9o`c-Dj7Zw__OH z<`D=K%Rgw3u%=SUu4uTVoxWS+;1N>astZQ9AwzdsYlkCj(q_2eY>#tWeCE5Sue%$> zggZLDg6KknMr2#rn2>hfMom7{zAK?QNB?ne|Ih#NKNu(&jf^Sg{p!YydF)kJEfc+s z?o?N!ujpE`4w(lq#4gjNUX{C5^=fouR9gqd1|81PSLQCn5%%gz?ND!^3EaPay-H(_ zXx+UUSAZ%e-RIMN+Lm_{n@o6^4S*~YLmI1cGl8sAOJ~3K~(&8FS*eOa|bfIvG;3z?Ur%U;gN)D z8O<4xiV}t91Awvopp;aMIAuk*_jeludDDtu?`)adG>b6Q(ypZ4m7VuOWn!!4I0&|O zHJbyyXtXf%IUYae=@FdAHwz(ecXJHs@QLm#lO+_!z<~jHhl4cKFow~l8yPAM27P!g zRyAxyjG2TPC)*73+Z^O>m6@|KoUle)gdvvO5zR&dQ7utWsB6k2rUikfO~z29wR4dk zF$BPd+fl>z8<*qNW{2Scq?(d@aGuAEr+Hw6#~BWru;b|pDs0fAWZ*GRKl8PAuXvom z2NlRy<~^SbOK}>!?QUjW05-V01YgJ{5`)$aLETu}EeG5EJ&oRG!;X`qNw`@xlxBro zwXwoC#cr!=qkO6fHrk9<*4-skTh<%K9yG{WfCp_iBkVDaGeA$Mf|J44i>!##Enubx zVZZ`my>rj75fQ`9s#;a41h%&> zi$0zoZmmuq-y^=SyS`q(S_Oh0uJF~aHZfamhIOxd$#?ZvHQ)Qr!Z~>Vyg$EgJNtPA z8-nrpCRwf5&Sr%_A5va%eDKpGe4IEZq{c) zVs6iN3qP3b>*`ij15kHX(?-=+k)hBP@-Z#U@^$6DKquWT$Vh*fTZ}G`hWo*ohx;SW z^Z0(AA7?i1ESvop-dkT^|Jvx7baM@w6E;!ZYpqLC*l{B1ai}c5b zWmI2H0E5=F5pHJanj8ZGL$y$V&0%w!H~naHIN`Ikv{Ng^wdfvhwkwkivI`EIWY{r} z5gz7ahHau^9`iVShFja5X8r%u^ae||Bsr3uDgZP0dn4Y0_Z{1g5$ zxtn3POm*eUh`8=%0F;ZUS^3^K?f_KJQPX&WFz0-p@%{`C1jD8i>P<0rBkRgw|aNwF?{$`w^(i8 z!(^gFwb5Y55r_u59s2eft8J&d1gq6;K%okY+)ds-ay%wn)d|NO9OjPG?BFn&=pDhJ zz(!0T4>MxzEG0JZa+BHQ7&b=lqW1A){&=(B-uR#Xdi-zy<@f*ffBEZQ-rpaO=W#sY zgnGoFsql>)u1bwK0j;h~=K8F-Wux1%=g=cYY}VTMfSkz6Ipch|g{;{;eE0~VXtg6q zmhls;YPp%yEDUIAnbYBhps_J&kI`yP*)WXa@ZbfWKr~$ZH zm`3F`0vzSbzX{3^z9IfR{^Qz#tqt%oLtwgj9P#@2x<4PskB7TjcGQcFWz)>yinbhG zhS&l6HZz|&D$H#JEQTs7P4+1+tw?E@Q1`XPI1Pa9@0r<9>!_*cVRNOjA`TziCbS>S zQYE4WW@gmbr2e@=EzoB5Y!v!aD3Rt99(%3Na&!zIim!bwBZ#wUFtyTlcVnOCwvxKK z*+TcX(y=$x-4U+Gt!~Qq9_E~n;fJB9?-W3pWul$_Jm;>js{5|t;cg9oxQ$^S8ac*P z^VZGt$Kwc^x)LktvVqH}alDh~^!p<&hisx?6X;D1(yRe{Qa+Ft76)|AT~)O)InC_b3Q`yV5I>sO|+1%Ux9t4Q|*d zJDquaO9gf9l;G25LyKgkYT5ZDk7RKMTZO`8B#WR$_bSpb%xKo`rG}TA7-3igD>+VN zNWi3p4nt^6uB>nKob*$Kc-A=db7SW60OnN;ZeO8ouFH8D+ETYkmEp+Ke*jIMLOu z!(^>nxPZB<8_P7hBl9R_xJ{#CsMp?BWM`Q*{XyQ254~n>FF-uT!|U}&t@n8Laia50 zbr);Z_sm)Kx+<6XL@#BF2iaBZ*A3@6o`LUwQLwJsphG>goA{^~s(bCd*UQfzF}*UO z4og@!%qn%iu3PaCpVJkC*1%pwS0RAU$>s50cm=KXu)R%Jmgte3R6P#!$o{-($3e?| zZ#6i-SCR8%^$Q)p|LcDly|4f0|6Q6IZ$dvkB7Sg0_Y&X+7i|3G<5q?R(O=A?t+xx9 zV;}Cd$9bS*R0&mg&2&zWrx55Po~M1+EZo%h^ydgSqYQpj?pMQtCQ}AFMSe%zohe0Q zglBi&Ec2-FyKAOr_GXFxPBTz#4HMH$PIGVN?(C1uF@F9`=6(Nt<>zk2d^A61{;cbnfT%Ef&Vqh0*x8BOOb-T2@ja5yyOraq_-}g?VKy{UwrJ?rFZSrkrYt>7Z z*1}G$8PE=MCDrv+4d56I*-k;~?^_}~cONCUc$E)89_2wx$F0h&q$1QWpvz~|=6DVU z^x@WV{@l%eRn@Qdu$(sMe0*J><9cP?x9+XuX&kLPS#eC;VPo9Zd#}FtcbwI%VL^^K z+{`KK>ouHpjDi{6k&Rsz@jM0!`_zOO9!zc^s`> z`H?XCG1+W1j>t>B4VEt}(T+3V#cEAp?YyV`#ju61u7(mLu#L5b!)WcvhpM46XQB%o z&cLA9f;SJXPgnAoU2>I`H&8x7c)NGWK!NV2gQ@M=q<6ZIJl*NU(jP`mzGqifdkl0? z((pBsy=_Y}5ryV}u~6Y*$V8NgZ$8{NPPAIJZ<&RK!`wkpJ}R9p*-D9RO(6ul5-A%& zw^qyj|Ng)JE8}#+0Ytm?pbfXIEu(R$i_B>>d!Svt8U-bKXRj2X1F&$jp6Uv}n5%OH z$c4U74nj>>D13Wjd^J{g=hPw9s=gQn&^K?V3&zoTgfB?O!YIo5Y z!+nsXrfN`48v6z+#t-`OdVTGEGlA+|nH$Qyzdm2RkH_=zcmT{0d{|E^89mN}0h_1u zRQmJ%LE`>(jq^C4Gyun8p0jtW>2oq{xR1#k@)e`GU0wGp^Q&EDgm}|aWBNJ9ak?Fk z=Q!r+c8-YfVP@e?bLLG|OSDBZOMzR{gVX6fz@%C-R=di|qH{@*TeEGH`A{8V(uN6y z0x|+I%`{T;o_x`-@6b~)T$8cYN{I`Ga*X7P@_g1O7UJIQJ z-u0rJ38hyLdDG0{G|5fmvy0xB8DfrzQ!aEzyARqdnt23iU1=j+=&w(7c^G1{aescS zwQN@AXWbj!wO_dUQ(Or38H@ZhuMM!YLgnr4}f7p(J~K0Qn?)zwvz1*wwpxTJs2=o^{BCBm&F5aT@@whv-R0kwKls9+PUv; z=;%DuKIaU)k&j^$%CGBFdsTg>Y>yqbBrSm5#l9e!XBHQWZ zZ>T21S$kOq6DuzReV!Yy>?H%5wyNkM3rIfZz|P}r5Gu6DLyJ{Q(LPpZWc%PNUoX*U z$EuDB;~VOK+}O__@A>Qc_`2T5PY`S#^C7Q-CcJU%OjFSjGk`|rFh~zI_t!_>-OW(a zr+HO%F3MBiYS3~Eo(S;-uF$Y}HmZA5vDdwN|MADaV_g|D#shxaS;M{p>}vO8JYug` z6%MaT)s4Gzzhss0JKL3xM*>Z>>Qnoi!*qtxp{#F2mvuGvb>(g;V40wotM0x2tkQTq z-K-I?G9kVh;NWJp%Dt(fhQ~vAbiK?jv}Jwnea8$tA4+sB)X0Lo4Ma#Z-M+5c=FjK* z;d6ifp}WV_cs#~qzP~>@_5A%m<1yxscnDS9yXVh04y-?}2FH)LqjX&|Bb!-9G2+4C zUN3MrhIO^l{W1D+?LUc{k0F27)vdPJ(*@_5d}HRSe;V~oMlV?BcXk=L=Ru(sA`n)G$iYQ27Cb|1HIWOlKH){1*Pg2OE= z*EF@t@Tc`#%V}NT1>qvQtS{{Wj5a5M2#aYY^j#Fq(EtRMu5yLOs=cMIwM~bOkhXMz zwQP8kUFaWXv-%a3A6Cl%4==N$37SPeWDoKdD~4f!eIQ-F)w!zc-Yy$8uS(08LGo#l zh~VJ*e61Uy$Keb7?sqQRXa%x>51Zd#kpE5a=xsZq5ocKY`{+p~lD z31rlPjt(GRRW_A)B0?A zwI>6+ZKX$Zf)sEY;dV9+Z3^f5a*GCZvsT9X!Vxc@nQ)}#{-WK-~ke z0S)o6P}eHeF@v4S?WXU5Uqf3Pn=ztkm~H9%Zf6F@?rocBmTz!GS*Y5KK-XMC+r{ce z2(|0aU2omdd6|919=STna3gM5Pk)T}nl-~o#+W~|vcA@0%jBrcD%ClLP~b<~ESkXK z!m`AT*tt^I!}r_0e_hu;e={5IUG!TfQc5`zHPjfcag0W2eU%JjD6LVa5pCwvhY4%# zI!_#atOBqzKf(85PT$K;t3g4lP__Hl$G(BNF6>o-%MeN%@qQekUI@4GBWx>8xLa9e zy=|~+tnqyRdH(pg?_`|wAk@8~CZ*^Y2gABMRtk4DEH9y?RlDiP{FQyq5jI|{&)7HO z)%Ig30cIT$<$UK#=3{#% z|KtC3+@G(%zdoO@m(SzzI5mtV;qlWHkGE;#(d#So({!rWpY;zpjNV z*Rn2n<_^ju9H4J2@3xn=3m9zkvIzIb0@v57v_?48*9~inXzsmND`JL=?MMe;u$+>i z5daVHaH0FM9Dt`U+QkkUIhuaxB&vL6febS=%N)ae*1A!sQOGi2R>7|5e58C^2GM{J`E~ zvFVu!;M*0+-EA@$zhq|ffi1Kd1>ZC`Ce-Kv1qIEfryM0zA7*ZyrM01Hq_DZaQy$^x z2y3J0$NU}!t0&AD?ro$!C~8<>tFq;7QCLB@)8dsuq-6P3D2L-tpw;oxEZ^3<+I9eD z$GR4I`FJ2)EUc9^froN@LoL~w?3NPB!hk~orW<>oJ^C9*TQ9^ z2lj5;9F7Vm2AA;q`uHPv`mo@Vy!4!G@zr+7aOZyrlRPb(9oMT8AM<$oK56=VED5nD z1B!FLaXfwGTq}k9YT?fv(}C`*8h5VhI^z-Ze4aM(7{K+K)rqqOh31GzT`JT4x^ThT z@J6N&dhq$s+xQ_o24JJQ5rf&R@?Eofciq0P=>u^yru$R13O=$qY)9UUrQ>|W+uJ+% z{=OB)=3i9>d>eHForyBHse=M)h@D{GQ&pzTGuRPwdmGhX?7|pO_xt6A(^?XeBPdY(h}JJdw( zX01eb@#(JVA?&N@<=S2SMMvjo1=Oe^gPm{F-=>OhEy?`1`SxQT4^}o-ZrxYue$lH@ zdGB4Qb?w)k4#()rinn|Bm=?o4i0Sw3imV?3bQr>z2xDZpR8+$Kun86fD;%+5A-mgd z@Cid1W}H5zf#RxKpvUtFnAOvU!-zVtx5bD20hnhR*b4Kr(Thwq^~I#>yCNAg2)R|b z1Vi=?p_NrlOWEOeXtrUhmK>*kluCAcx2nbNj8@LLz#~XFcali-FSI#-hckhJgc}EE zo|3`6v!EKb+n-hst7uE(21;%22M{TlDSLOXY17ABgG7-{5dd88JgMdkg#y zhm20yabIi0u>{C^ac8=P)tIb3})pSdzbno=i zFzkeT)4VVqLhap+v;92dur!RS>gx+*wv>6Ld2@B;Vb7;c@7IU3X+tc;ZL8HITr@^Y z%DU-pYtWBy>)z6I$Bv}NX=gQP8fsZ|VWSz(U%59v_`G^SbMoCf6Mv@mX z@Xv^!?_$()7aD7?G_RFg>BP_!qIn!=^@N`dq{B>p$+l z|M!1ewT_>ERjKmNBc6Sp;5hX3dSU;a_S?XO*V;>XoT2eJyV1yNzi@}!6A!b~&Idbx zEBWKO&-bm6CHA%Jn;&9}_I5ts-p*pn`SbTNY`y-xuBG-|ug{HoaHtI@ z!%CkSJp8G(*1AywXaHRI&b|8Z(^#_Fuljub$L4JoRuJ^|Xy zt>c*fJW3|w{`wRD_@j1p+OV);U4DS+%gp`mjb+0@F*xE8%|wF{7!IiKyX8#PsHJeg zB!2~?^N=l?s)~8F1$5911mmd*2avT1J3<}VH?^gMjxD+$NZnV3IS+S4>$OA2;CWl7 z0YkAm+I70tqPf4%^H49z5W}=waytFJgaYPx%(0X%PTH5+N@jJ%H_0xoYRlRi`sZ^L zFTw>_ZP6Ec*QB{KxqwmPwHgBrC&CFm-D;of|yp4}uE&d)> z$X7Rn8b-MD4b-X)_vc|K+@(1XO|?HXChE`10>QQ2p-Sdy?&AJdA-7(!D#sY++vSBj zyu1%orFHxBBw)E@BslfGsVlbmbg$iM20zEOdbD`X#GsZ~SzY$&Aa)3^+tYBmcK2G_ zO=FJXZ7@O1BI-uh>&2z^AUKVf;d8=#c7gcnr^UBG-Im(wMsc~FVPfP~w5qUy)KYhF z(DE|P;cqw-^0f!{YmY;i<^*Hrdp}0E;O8R}!&21!VeOhv^p{I>KHmQFhK!NVj)Qfb z=jem$Rp2!4Yc>5~*5(TT9)Pdws(Z`66IL8U2JWT!p7(oy&6ec7lzrWI-=C7TOM$`1 zyO9Hm_q%%==+17U%>6;J_Wjj=Z%ni`+G7w271-_q!{;<}mUUja*KpBxSA;@gEF90r zVPoI0WolG*?w$NQIUVVKasD)W50q(bQ5rqX!p??H^Y%tji+!(EJ0tgN-R-{}C;$06 z&v_g@YI8h4=5ziyr{B%i-O7Lb+rF;j{q46OfYmcsLovXalpXJ1yZK0b=`Z_E6{se>7D^R9fjq7pYTB^L zXpHRqqhPHBgMOr?tEq_^rn`{4nHQkMk3$LU#n^4IswCkLbgBvi<;i7PcGoH)=sQfT zDeK{GJQP^@QXwA3IhhZyJGmMiMBu$ljqAI}1$nt#d)V+9~(d_gw(233iSIUe*@w%QHdhUYwgbN^VcG`tzIOxa&l%`vIHthTbY&+ z0vlhyf+wR-ZsfDtu9mftw69Kc#)!TMNRGUYfGvuA#vg0tJU)s#g%uFE7 zX7^bpH@3CAd51gAPUyz9X>QK$uT0%v(U8v#b?4;+J|1+Bq7B8gY0-t9 zu5u2yr}+tH{;bhtEd!zOOJNzh9d8j)&Vl+ zB)EL6?9Ni~yBvOmeJPge%uQ+GP-}(KHMW@-)VpX%j(CkR(k$4N&qstj{)}HRehMHjj|?iZMo~AqAIyn zPM~R#+JJn>`&o;HEnSTxVh*d<*IN4(7>EaA`SDBJ%p9R!scUH*jb_8l z=I{}*?zLCD7={{0tyQaPuZkS=I1x^lbpagH(5!{@mU|0htV^H&`1gN&+{atYj~(-H zTeYv)gB^Q+eqHC|T<0V7IP$KpY4p}zHYo6ELzb^E!!`QoWZUpfd70mKbwU+zKlkie z2MYa-w!iMy-i4}0SaWoV_y6eZ<|KAl#c|qrgaBpf;)ucMK5?AmxNR-hC>a?Hi`Yb< zX-r971mt#F1SzO@uItaeSC7Z|ZH(yI@vFOxVI1%{X4Na#&0P)M+lSkL3rsIe3Zl}+ zVFq|!&n|_%?B{XD5k|WUX?Dybyo1^>z@J2g1o>@$_;2Gc|ML6JQGJJ@>s;B@|L`W- z>1B>xUzLjspEVvwXX$g{Xzl%(f#=&_=7AX@&8m$<-JY3Z(WZ4_e`J_=xcO-&LskL1 z(WsAThmFi!jTJ4yj0MXkJ=&`&$$Q(MANTlZS^>WL&b;m`Ej*qF%ZI*v#GF&};XmH& z>hsL4gjAS6{^dXa_Ah^P)Aj4VKVSB=@s5GnU%~$L7MEp(`7@~CT(pKA<5(A}7QL#r z_+S8eWB7cqI;*TY&6_j4k4|rWRzWn@*Y+32Fgv-zF8&SpISjes}p5kL*%G zv{ns+wkbKiRE|A;yhK}&)*5gPqtNnZd#cveM|&6q|7XLZvC5i>B3bQCO)l;hZH~Y< z6COnxV+^ZOb$40m+vzgLu!pLVD^&8@l{>Ol-k znO8T!WSF)41K4rc$O3JfrhsZ-V{IsN^VrhN8u&RKyOu!NIfCe@!VVnA<5|7?1(GDH zMXS2*d&hVCT~Hu8b$9+#>;j8mjF2N+&^X@wF09ohTzBQR`Fzf|IKs!Ux{}nrRo#@X zT}XP^dH69<8+EI=35SemH|xr}vF-I)_c`9)BWTtH6V0rn`^uHZF~_vEud85iyE=~Z zJhYe`?bD}zoNwp*o5tg=ocgrR7WZzY;+%d=?=9_HojD)z1F^=eaX!?o_V}4?WgJjv z$*s-Ts=i*0D%s5Zs$7O2K3}3Sh!id$cjyt&!T;mnpTsaFP_!q0U{Rtmky{{^MZ{M{j^z5~S?GpzLj2&Y*#%u2a zOlmWCALF<_U)KP#Kuy2bpJl68t-NvAd_0GrVPOHA-SGS4TJ>=plkV!~@pwLDHchqa zB|m~A=3~TRi#<*{3{<$8y}dop5$pA**&p%tKJ3x?wd$8yBIJFSy1x}#_82d%ZA^{R{KzGl~2xXu}fAGWW3!D9u5EWJ_`ps zody?B;ofG&qLSTWU?$lNzjLY6+R*ON#MO4dT}mqtbJ0W`#5Qhey22+YYqM2O-_un! z)af%DLUE8(8_~h;;Y`5*6Ofg~7EA$ik%kSu`gXOazN-CgJO&A>FtO2HF;&*RfgG7z z=y0UTK*zfM{yu1GLpb1NI78apsOIUa*_jgApt$1%>iavmsqRS}HuIt_>Tpc#e4y|Uc z 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 RHJAVZ002ovPDHLkV1lO{z-j;h literal 0 HcmV?d00001 diff --git a/test/test_create_predictions.py b/test/test_create_predictions.py new file mode 100644 index 00000000..958b099c --- /dev/null +++ b/test/test_create_predictions.py @@ -0,0 +1,49 @@ +import unittest +import shutil +import sys +import os +import cv2 +import numpy as np +from pathlib import Path +from collections import defaultdict +import filecmp + + + +# Allow us to import files from "train' + +train_dir = str(Path.cwd().parent / "train") +if train_dir not in sys.path: + sys.path.append(train_dir) +from create_predictions import get_suggestions, make_csv_output + +class CreatePredictionsTestCase(unittest.TestCase): + def setUp(self): + print("Test setup") + + def tearDown(self): + if os.path.exists("untagged.csv"): + os.remove("untagged.csv") + if os.path.exists("tagged_preds.csv"): + os.remove("tagged_preds.csv") + + def test_make_csv_output(self): + all_predictions = np.load('all_predictions.npy') + basedir = Path("board_images_png") + N_IMAGES = 4 + CV2_COLOR_LOAD_FLAG = 1 + all_image_files = list(basedir.rglob("*.png"))[0:N_IMAGES] + all_names = [] + all_names += [("board_images_png", filename.name) for filename in all_image_files ] + + all_sizes = [cv2.imread(str(image), CV2_COLOR_LOAD_FLAG).shape[:2] for image in all_image_files] + untagged_output = 'untagged.csv' + tagged_output = 'tagged_preds.csv' + already_tagged = defaultdict(set) + make_csv_output(all_predictions, all_names, all_sizes, untagged_output, tagged_output, already_tagged, + user_folders = True) + + self.assertEqual(filecmp.cmp('untagged.csv', 'untagged_source.csv'), True, "generated untagged.csv is correct") + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_download_vott_json.py b/test/test_download_vott_json.py new file mode 100644 index 00000000..c0352dac --- /dev/null +++ b/test/test_download_vott_json.py @@ -0,0 +1,215 @@ +import unittest +import shutil +import sys +import os +from pathlib import Path +import filecmp + +# Allow us to import utils +config_dir = str(Path.cwd().parent / "utils") +if config_dir not in sys.path: + sys.path.append(config_dir) +from config import Config + +tag_dir = str(Path.cwd().parent / "tag") +if tag_dir not in sys.path: + sys.path.append(tag_dir) +from download_vott_json import create_vott_json, get_top_rows + + +class DownloadVOTTJSONTestCase(unittest.TestCase): + def setUp(self): + self.config_file = Config.parse_file("../workconfig.ini") + + self.tagging_location = self.config_file["tagging_location"] + "_test" + shutil.rmtree(self.tagging_location, ignore_errors=True) + self.csv_file_loc = Path(self.config_file["tagging_location"]) + + self.csv_file_loc.mkdir(parents=True, exist_ok=True) + self. max_tags_per_pixel = self.config_file.get("max_tags_per_pixel") + self.tag_names = self.config_file["classes"].split(",") + self.user_folders = self.config_file["user_folders"] == "True" + self.pick_max = self.config_file["pick_max"] == "True" + + + + def tearDown(self): + shutil.rmtree(self.tagging_location, ignore_errors=True) + shutil.rmtree("Images", ignore_errors=True) + + if os.path.exists("totag.csv"): + os.remove("totag.csv") + + if os.path.exists("tagging.csv"): + os.remove("tagging.csv") + if os.path.exists("Images.json"): + os.remove("Images.json") + + print("Tear down") + + def test_get_top_rows(self): + # prepare file + shutil.copyfile("./totag_source.csv", str(self.csv_file_loc / "totag.csv")) + + N_ROWS = 3 + N_FILES = 3 + EXPECTED = [[['st1840.png', 'knot', '0.12036637', '0.18497443', '0.7618415', '0.8283344', '512', '488', 'board_images_png', '0.986', '0.986'], + ['st1840.png', 'knot', '0.7297609', '0.7755673', '0.62443626', '0.6670296', '512', '488', 'board_images_png', '0.986', '0.986'], + ['st1840.png', 'defect', '0.76513', '0.9952971', '0.6075407', '0.6546806', '512', '488', 'board_images_png', '0.986', '0.986']], + [['st1578.png', 'knot', '0.594302', '0.6663906', '0.35276932', '0.43525606', '512', '488', 'board_images_png', '0.98448783', '0.98448783']], + [['st1026.png', 'knot', '0.2674017', '0.35383838', '0.39859554', '0.50976944', '512', '488', 'board_images_png', '0.9884343', '0.96366304'], + ['st1026.png', 'knot', '0.69417506', '0.744075', '0.34379873', '0.39051458', '512', '488', 'board_images_png', '0.97863936', '0.96366304'], + ['st1026.png', 'defect', '0.70078284', '0.9907891', '0.5857268', '0.6470487', '512', '488', 'board_images_png', '0.96366304', '0.96366304']]] + + class_balance = "0.7,0.3,0" + all_rows = get_top_rows(self.csv_file_loc, N_ROWS, self.user_folders , + self.pick_max, self.tag_names, class_balance) + self.assertEqual(len(all_rows), N_FILES, 'number of rows') + self.assertEqual(all_rows, EXPECTED, 'raw values') + + def test_get_top_rows_empty_class_balance(self): + # prepare file + shutil.copyfile("./totag_source.csv", str(self.csv_file_loc / "totag.csv")) + + N_ROWS = 3 + N_FILES = 3 + EXPECTED = [[['st1840.png', 'knot', '0.12036637', '0.18497443', '0.7618415', '0.8283344', '512', '488', 'board_images_png', '0.986', '0.986'], + ['st1840.png', 'knot', '0.7297609', '0.7755673', '0.62443626', '0.6670296', '512', '488', 'board_images_png', '0.986', '0.986'], + ['st1840.png', 'defect', '0.76513', '0.9952971', '0.6075407', '0.6546806', '512', '488', 'board_images_png', '0.986', '0.986']], + [['st1578.png', 'knot', '0.594302', '0.6663906', '0.35276932', '0.43525606', '512', '488', 'board_images_png', '0.98448783', '0.98448783']], + [['st1611.png', 'knot', '0.6326234', '0.7054164', '0.86741334', '0.96444726', '512', '488', 'board_images_png', '0.99616516', '0.9843567'], + ['st1611.png', 'knot', '0.07399843', '0.11282173', '0.32572043', '0.36819047', '512', '488', 'board_images_png', '0.9843567', '0.9843567']]] + class_balance = '' + all_rows = get_top_rows(self.csv_file_loc, N_ROWS, self.user_folders , + self.pick_max, self.tag_names, class_balance) + self.assertEqual(len(all_rows), N_FILES, 'number of rows') + self.assertEqual(all_rows, EXPECTED, 'raw values') + + def test_get_top_rows_invalid_class_balance1(self): + # prepare file + shutil.copyfile("./totag_source.csv", str(self.csv_file_loc / "totag.csv")) + + N_ROWS = 3 + N_FILES = 3 + EXPECTED = [[['st1840.png', 'knot', '0.12036637', '0.18497443', '0.7618415', '0.8283344', '512', '488', 'board_images_png', '0.986', '0.986'], + ['st1840.png', 'knot', '0.7297609', '0.7755673', '0.62443626', '0.6670296', '512', '488', 'board_images_png', '0.986', '0.986'], + ['st1840.png', 'defect', '0.76513', '0.9952971', '0.6075407', '0.6546806', '512', '488', 'board_images_png', '0.986', '0.986']], + [['st1578.png', 'knot', '0.594302', '0.6663906', '0.35276932', '0.43525606', '512', '488', 'board_images_png', '0.98448783', '0.98448783']], + [['st1611.png', 'knot', '0.6326234', '0.7054164', '0.86741334', '0.96444726', '512', '488', 'board_images_png', '0.99616516', '0.9843567'], + ['st1611.png', 'knot', '0.07399843', '0.11282173', '0.32572043', '0.36819047', '512', '488', 'board_images_png', '0.9843567', '0.9843567']]] + class_balance = 'Random' + all_rows = get_top_rows(self.csv_file_loc, N_ROWS, self.user_folders , + self.pick_max, self.tag_names, class_balance) + self.assertEqual(len(all_rows), N_FILES, 'number of rows') + self.assertEqual(all_rows, EXPECTED, 'raw values') + + def test_get_top_rows_invalid_class_balance2(self): + # prepare file + shutil.copyfile("./totag_source.csv", str(self.csv_file_loc / "totag.csv")) + + N_ROWS = 3 + N_FILES = 3 + EXPECTED = [[['st1840.png', 'knot', '0.12036637', '0.18497443', '0.7618415', '0.8283344', '512', '488', 'board_images_png', '0.986', '0.986'], + ['st1840.png', 'knot', '0.7297609', '0.7755673', '0.62443626', '0.6670296', '512', '488', 'board_images_png', '0.986', '0.986'], + ['st1840.png', 'defect', '0.76513', '0.9952971', '0.6075407', '0.6546806', '512', '488', 'board_images_png', '0.986', '0.986']], + [['st1578.png', 'knot', '0.594302', '0.6663906', '0.35276932', '0.43525606', '512', '488', 'board_images_png', '0.98448783', '0.98448783']], + [['st1611.png', 'knot', '0.6326234', '0.7054164', '0.86741334', '0.96444726', '512', '488', 'board_images_png', '0.99616516', '0.9843567'], + ['st1611.png', 'knot', '0.07399843', '0.11282173', '0.32572043', '0.36819047', '512', '488', 'board_images_png', '0.9843567', '0.9843567']]] + + class_balance = '0.1, 0.2, 0.3' + all_rows = get_top_rows(self.csv_file_loc, N_ROWS, self.user_folders , + self.pick_max, self.tag_names, class_balance) + self.assertEqual(len(all_rows), N_FILES, 'number of rows') + self.assertEqual(all_rows, EXPECTED, 'raw values') + + def test_get_top_rows_class_balance_min(self): + # prepare file + shutil.copyfile("./totag_source.csv", str(self.csv_file_loc / "totag.csv")) + + N_ROWS = 3 + N_FILES = 3 + EXPECTED = [[['st1091.png', 'knot', '0.20989896', '0.251748', '0.34986168', '0.3921352', '512', '488', 'board_images_png', '0.99201256', '0.70161'], + ['st1091.png', 'knot', '0.696119', '0.7461088', '0.27078417', '0.33086362', '512', '488', 'board_images_png', '0.9827361', '0.70161'], + ['st1091.png', 'knot', '0.89531857', '0.93743694', '0.4605299', '0.5066802', '512', '488', 'board_images_png', '0.9794672', '0.70161'], + ['st1091.png', 'defect', '0.7629506', '1.0', '0.6205898', '0.67307687', '512', '488', 'board_images_png', '0.74762243', '0.70161'], + ['st1091.png', 'knot', '0.14214082', '0.247842', '0.7355515', '0.8967391', '512', '488', 'board_images_png', '0.7072498', '0.70161'], + ['st1091.png', 'defect', '0.0', '0.1281265', '0.55038965', '0.59755194', '512', '488', 'board_images_png', '0.70161', '0.70161']], + [['st1185.png', 'knot', '0.6978268', '0.7582275', '0.66821593', '0.7535644', '512', '488', 'board_images_png', '0.97257924', '0.7035888'], + ['st1185.png', 'defect', '0.35780182', '0.60781866', '0.27580062', '0.32093963', '512', '488', 'board_images_png', '0.9720861', '0.7035888'], + ['st1185.png', 'knot', '0.5183983', '0.57071316', '0.84764653', '0.91617334', '512', '488', 'board_images_png', '0.9241496', '0.7035888'], + ['st1185.png', 'knot', '0.55567926', '0.5904746', '0.51832056', '0.5461106', '512', '488', 'board_images_png', '0.7035888', '0.7035888']], + [['st1192.png', 'knot', '0.39846605', '0.45543727', '0.36765742', '0.4488806', '512', '488', 'board_images_png', '0.99612194', '0.7127546'], + ['st1192.png', 'defect', '0.07790943', '0.44866413', '0.5975798', '0.640683', '512', '488', 'board_images_png', '0.80447847', '0.7127546'], + ['st1192.png', 'defect', '0.47953823', '0.7499259', '0.5517361', '0.59940904', '512', '488', 'board_images_png', '0.7127546', '0.7127546']]] + + pick_max = False + class_balance = "0.7,0.3,0" + all_rows = get_top_rows(self.csv_file_loc, N_ROWS, self.user_folders, + pick_max, self.tag_names, class_balance) + self.assertEqual(len(all_rows), N_FILES, 'number of rows') + self.assertEqual(all_rows, EXPECTED, 'raw values') + + def test_create_vott_json(self): + # prepare file + shutil.copyfile("./totag_source.csv", "./totag.csv") + + N_ROWS = 3 + N_FILES = 3 + FOLDER_NAME = "board_images_png" + class_balance = "0.7,0.3,0" + create_vott_json(self.csv_file_loc, N_ROWS, self.user_folders , + self.pick_max, "", + self.tagging_location, blob_credentials=None, + tag_names= self.tag_names, + max_tags_per_pixel=self. max_tags_per_pixel , + config_class_balance=class_balance) + + res_folder = os.path.join(self.tagging_location, FOLDER_NAME) + res_immages_cnt = sum([len(files) for r, d, files in os.walk(res_folder)]) + self.assertEqual(N_FILES, res_immages_cnt) + + def test_get_top_rows_with_bkg(self): + # prepare file + shutil.copyfile("./totag_source.csv", str(self.csv_file_loc / "totag.csv")) + + N_ROWS = 5 + N_FILES = 5 + EXPECTED = [[['st1840.png', 'knot', '0.12036637', '0.18497443', '0.7618415', '0.8283344', '512', '488', 'board_images_png', '0.986', '0.986'], + ['st1840.png', 'knot', '0.7297609', '0.7755673', '0.62443626', '0.6670296', '512', '488', 'board_images_png', '0.986', '0.986'], + ['st1840.png', 'defect', '0.76513', '0.9952971', '0.6075407', '0.6546806', '512', '488', 'board_images_png', '0.986', '0.986']], + [['st1578.png', 'knot', '0.594302', '0.6663906', '0.35276932', '0.43525606', '512', '488', 'board_images_png', '0.98448783', '0.98448783']], + [['st1611.png', 'knot', '0.6326234', '0.7054164', '0.86741334', '0.96444726', '512', '488', + 'board_images_png', '0.99616516', '0.9843567'], + ['st1611.png', 'knot', '0.07399843', '0.11282173', '0.32572043', '0.36819047', '512', '488', + 'board_images_png', '0.9843567', '0.9843567']], + [['st1026.png', 'knot', '0.2674017', '0.35383838', '0.39859554', '0.50976944', '512', '488', 'board_images_png', '0.9884343', '0.96366304'], + ['st1026.png', 'knot', '0.69417506', '0.744075', '0.34379873', '0.39051458', '512', '488', 'board_images_png', '0.97863936', '0.96366304'], + ['st1026.png', 'defect', '0.70078284', '0.9907891', '0.5857268', '0.6470487', '512', '488', 'board_images_png', '0.96366304', '0.96366304']], + [['st1524.png', 'NULL', '0', '0', '0', '0', '512', '488', 'board_images_png', '0', '0.05']]] + + class_balance = "0.6, 0.29, 0.11" + all_rows = get_top_rows(self.csv_file_loc, N_ROWS, self.user_folders , + self.pick_max, self.tag_names, class_balance) + self.assertEqual(len(all_rows), N_FILES, 'number of rows') + self.assertEqual(all_rows, EXPECTED, 'raw values') + + def test_create_vott_json(self): + # prepare file + shutil.copyfile("./totag_source2.csv", "totag.csv") + + csv_file_loc = Path('.') + N_IMAGES = 4 + user_folders = False + pick_max = True + tagging_location = "." + create_vott_json(csv_file_loc, N_IMAGES, user_folders, + pick_max, "board_images_png", + tagging_location, blob_credentials = None, + tag_names="knot,defect".split(","), + max_tags_per_pixel= 2, + config_class_balance=None, + colors = ["#e9f1fe", "#f3e9ff"]) + self.assertEqual(filecmp.cmp('Images.json', 'Images_source.json'), True, "generated VOTT json is correct") + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_tf_detector.py b/test/test_tf_detector.py new file mode 100644 index 00000000..388e1146 --- /dev/null +++ b/test/test_tf_detector.py @@ -0,0 +1,57 @@ +import unittest +import shutil +import sys +import os +import numpy as np +import cv2 +from pathlib import Path +import six.moves.urllib as urllib + + +# Allow us to import utils +config_dir = str(Path.cwd().parent / "utils") +if config_dir not in sys.path: + sys.path.append(config_dir) +from config import Config + +train_dir = str(Path.cwd().parent / "train") +if train_dir not in sys.path: + sys.path.append(train_dir) +from tf_detector import TFDetector + +class TFDetectorTestCase(unittest.TestCase): + def setUp(self): + url = "https://olgaliakrepo.blob.core.windows.net/woodknots/model_knots.pb" + model_file = "model_knots.pb" + if not os.path.exists(model_file): + print("Downloading model: ", url) + opener = urllib.request.URLopener() + opener.retrieve(url, model_file) + + def tearDown(self): + #shutil.rmtree(self.tagging_location, ignore_errors=True) + print("Tear down") + + def test_predict(self): + classes = 'knot,defect' + detector = TFDetector(classes.split(','),'model_knots.pb') + + basedir = Path("board_images_png") + N_IMAGES = 4 + all_image_files = list(basedir.rglob("*.png"))[0:N_IMAGES] + image_size = (1000,750) + NUM_CHANNELS = 3 + CV2_COLOR_LOAD_FLAG = 1 + all_images = np.zeros((len(all_image_files), *reversed(image_size), NUM_CHANNELS), dtype=np.uint8) + for curindex, image in enumerate(all_image_files): + all_images[curindex] = cv2.resize(cv2.imread(str(image), CV2_COLOR_LOAD_FLAG), image_size) + all_predictions = detector.predict(all_images, min_confidence=0.5) + + self.assertEqual(len(all_predictions), N_IMAGES) + + expected_allpred = np.load('all_predictions.npy') + self.assertEqual((all_predictions == expected_allpred).all(), True, "(expected_allpred == all_predictions).all()") + + +if __name__ == '__main__': + unittest.main() diff --git a/test/totag_source.csv b/test/totag_source.csv new file mode 100644 index 00000000..fc6e5d9e --- /dev/null +++ b/test/totag_source.csv @@ -0,0 +1,564 @@ +filename,class,xmin,xmax,ymin,ymax,height,width,folder,box_confidence,image_confidence +st1425.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1507.png,knot,0.30267757,0.36275476,0.30722874,0.3859462,512,488,board_images_png,0.96844035,0.96844035 +st1658.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1280.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1574.png,knot,0.1320003,0.17829065,0.35484976,0.41822958,512,488,board_images_png,0.9887079,0.926775 +st1574.png,knot,0.8644475,0.9901977,0.19784021,0.3901529,512,488,board_images_png,0.9740087,0.926775 +st1574.png,knot,0.94484687,1.0,0.710199,0.8731014,512,488,board_images_png,0.926775,0.926775 +st1550.png,knot,0.12705852,0.25362155,0.29243648,0.4436928,512,488,board_images_png,0.97203135,0.97203135 +st1532.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1300.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1032.png,defect,0.42934287,0.7599493,0.5304596,0.5905363,512,488,board_images_png,0.96906316,0.72713023 +st1032.png,defect,0.2200782,0.27667534,0.18268493,0.53899956,512,488,board_images_png,0.72713023,0.72713023 +st1758.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1370.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1715.png,knot,0.5078927,0.58547044,0.3985074,0.47241923,512,488,board_images_png,0.8088237,0.8088237 +st1614.png,knot,0.58140886,0.77096295,0.76956195,0.9438482,512,488,board_images_png,0.89606684,0.89606684 +st1346.png,knot,0.32081026,0.38056508,0.31275535,0.38130763,512,488,board_images_png,0.9854725,0.9689765 +st1346.png,knot,0.8616573,0.92554694,0.37297934,0.4253001,512,488,board_images_png,0.9689765,0.9689765 +st1558.png,defect,0.3651751,0.6520672,0.3140911,0.37667334,512,488,board_images_png,0.752485,0.752485 +st1022.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1067.png,knot,0.36342445,0.40953362,0.4274848,0.5127849,512,488,board_images_png,0.98211503,0.8958246 +st1067.png,defect,0.61802673,0.99210936,0.5602096,0.6185947,512,488,board_images_png,0.96133125,0.8958246 +st1067.png,knot,0.29145327,0.34137663,0.4940968,0.5431678,512,488,board_images_png,0.8958246,0.8958246 +st1479.png,knot,0.12793025,0.2188721,0.3734488,0.51437014,512,488,board_images_png,0.9717827,0.88874847 +st1479.png,knot,0.7373435,0.7909296,0.40912244,0.44390976,512,488,board_images_png,0.88874847,0.88874847 +st1368.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1154.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1760.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1780.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1395.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1567.png,knot,0.19071558,0.247627,0.43410447,0.4907445,512,488,board_images_png,0.89100105,0.89100105 +st1626.png,knot,0.87445205,0.9559347,0.9241024,0.99402934,512,488,board_images_png,0.9514488,0.8882066 +st1626.png,knot,0.11829056,0.22432978,0.63148624,0.80027825,512,488,board_images_png,0.8882066,0.8882066 +st1383.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1386.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1340.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1185.png,knot,0.6978268,0.7582275,0.66821593,0.7535644,512,488,board_images_png,0.97257924,0.7035888 +st1185.png,defect,0.35780182,0.60781866,0.27580062,0.32093963,512,488,board_images_png,0.9720861,0.7035888 +st1185.png,knot,0.5183983,0.57071316,0.84764653,0.91617334,512,488,board_images_png,0.9241496,0.7035888 +st1185.png,knot,0.55567926,0.5904746,0.51832056,0.5461106,512,488,board_images_png,0.7035888,0.7035888 +st1174.png,knot,0.22525154,0.42907882,0.69679314,0.9117324,512,488,board_images_png,0.9682847,0.9682847 +st1228.png,knot,0.13831148,0.18676595,0.5025294,0.57187015,512,488,board_images_png,0.9633739,0.9633739 +st1211.png,knot,0.33376285,0.3789052,0.49142396,0.5399416,512,488,board_images_png,0.99031806,0.97394437 +st1211.png,knot,0.61613625,0.6627939,0.5496773,0.6076902,512,488,board_images_png,0.9841182,0.97394437 +st1211.png,knot,0.5185557,0.563689,0.800335,0.838637,512,488,board_images_png,0.9770195,0.97394437 +st1211.png,knot,0.29164347,0.32961696,0.76875347,0.80985427,512,488,board_images_png,0.97394437,0.97394437 +st1409.png,knot,0.50456727,0.55044687,0.43021923,0.5008391,512,488,board_images_png,0.98137134,0.8897141 +st1409.png,knot,0.55252427,0.5947376,0.59299654,0.6804634,512,488,board_images_png,0.90360755,0.8897141 +st1409.png,defect,0.02457425,0.1723926,0.56370574,0.62124217,512,488,board_images_png,0.8897141,0.8897141 +st1811.png,knot,0.06933522,0.12140793,0.56051254,0.6089163,512,488,board_images_png,0.88610995,0.88610995 +st1219.png,knot,0.27650398,0.42174247,0.3864263,0.5609011,512,488,board_images_png,0.969893,0.7928644 +st1219.png,knot,0.88806176,0.9325516,0.5853674,0.6220557,512,488,board_images_png,0.7928644,0.7928644 +st1731.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1412.png,knot,0.34901053,0.4057406,0.52082306,0.58607656,512,488,board_images_png,0.994964,0.80384046 +st1412.png,knot,0.88786006,0.93988264,0.86172235,0.9108845,512,488,board_images_png,0.95610106,0.80384046 +st1412.png,knot,0.8434941,0.87894285,0.5202804,0.560757,512,488,board_images_png,0.80384046,0.80384046 +st1418.png,knot,0.12883854,0.19043617,0.6020754,0.65327597,512,488,board_images_png,0.97144216,0.97144216 +st1563.png,knot,0.38526446,0.44112217,0.66772294,0.7896756,512,488,board_images_png,0.87763524,0.87763524 +st1746.png,knot,0.8832216,0.93555427,0.42813456,0.48943433,512,488,board_images_png,0.91031706,0.91031706 +st1526.png,defect,0.3677499,0.9344856,0.52128524,0.5916721,512,488,board_images_png,0.77248275,0.77248275 +st1054.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1133.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1132.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1156.png,knot,0.74468595,0.7872824,0.6505758,0.7120241,512,488,board_images_png,0.9787052,0.8870228 +st1156.png,knot,0.016042642,0.1036161,0.624759,0.74122274,512,488,board_images_png,0.9766431,0.8870228 +st1156.png,knot,0.84342957,0.8916702,0.29592016,0.3381421,512,488,board_images_png,0.8870228,0.8870228 +st1298.png,knot,0.4514519,0.5046197,0.77640456,0.81230736,512,488,board_images_png,0.8977459,0.8977459 +st1474.png,knot,0.0050943564,0.0965749,0.73857075,0.857727,512,488,board_images_png,0.94921297,0.94921297 +st1285.png,knot,0.120333195,0.16538988,0.42999956,0.4713941,512,488,board_images_png,0.9724019,0.8775609 +st1285.png,knot,0.7336784,0.8959469,0.42097697,0.59948033,512,488,board_images_png,0.8775609,0.8775609 +st1256.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1540.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1850.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1546.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1737.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1374.png,knot,0.007972765,0.14858767,0.3385822,0.53610593,512,488,board_images_png,0.9833903,0.9833903 +st1583.png,knot,0.17383476,0.2230064,0.4013973,0.4348171,512,488,board_images_png,0.80748755,0.80748755 +st1652.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1233.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1264.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1106.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1253.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1752.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1817.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1158.png,knot,0.5864669,0.709107,0.57217103,0.70062774,512,488,board_images_png,0.8354658,0.8354658 +st1591.png,knot,0.55157113,0.59348816,0.3838704,0.42843914,512,488,board_images_png,0.9774615,0.9774615 +st1019.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1756.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1814.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1411.png,defect,0.4562817,0.74260026,0.41583094,0.47507042,512,488,board_images_png,0.9707597,0.7683885 +st1411.png,defect,0.33153504,0.38562804,0.54801345,0.90057915,512,488,board_images_png,0.7683885,0.7683885 +st1437.png,knot,0.87057835,0.93585074,0.42636645,0.47993812,512,488,board_images_png,0.99364483,0.90721714 +st1437.png,knot,0.38025564,0.4292948,0.8327625,0.875494,512,488,board_images_png,0.9815393,0.90721714 +st1437.png,knot,0.86802167,0.90930617,0.6626619,0.7106249,512,488,board_images_png,0.9466927,0.90721714 +st1437.png,knot,0.30429596,0.345514,0.46304542,0.49877295,512,488,board_images_png,0.9149384,0.90721714 +st1437.png,knot,0.44645458,0.48949313,0.5727815,0.6101881,512,488,board_images_png,0.90721714,0.90721714 +st1312.png,knot,0.9355495,0.9885366,0.55922663,0.6121081,512,488,board_images_png,0.97851986,0.97851986 +st1246.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1714.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1618.png,knot,0.64436,0.68662965,0.34913963,0.39694545,512,488,board_images_png,0.9157832,0.8893132 +st1618.png,knot,0.21418211,0.248939,0.40383893,0.45200813,512,488,board_images_png,0.8893132,0.8893132 +st1804.png,defect,0.6402425,0.8739144,0.7831069,0.8384883,512,488,board_images_png,0.96215266,0.7692557 +st1804.png,defect,0.4554133,0.6682096,0.88511723,0.9596481,512,488,board_images_png,0.9468119,0.7692557 +st1804.png,knot,0.69052243,0.7642171,0.316173,0.45031247,512,488,board_images_png,0.7692557,0.7692557 +st1419.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1489.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1160.png,knot,0.13819394,0.19427188,0.35991684,0.4188612,512,488,board_images_png,0.99321955,0.88587844 +st1160.png,knot,0.93188983,0.9892542,0.89026076,0.93819654,512,488,board_images_png,0.88587844,0.88587844 +st1217.png,knot,0.5789819,0.7600379,0.6990706,0.92517173,512,488,board_images_png,0.965711,0.965711 +st1735.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1482.png,knot,0.7225375,0.760401,0.39166692,0.4188348,512,488,board_images_png,0.7819961,0.7819961 +st1844.png,knot,0.2735705,0.40624326,0.20760712,0.42487168,512,488,board_images_png,0.98871547,0.93331075 +st1844.png,knot,0.9521196,0.995074,0.34867543,0.4020578,512,488,board_images_png,0.93331075,0.93331075 +st1488.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1382.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1529.png,knot,0.9444826,0.9944176,0.2133748,0.26350862,512,488,board_images_png,0.96461403,0.96461403 +st1427.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1356.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1341.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1384.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1273.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1480.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1240.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1147.png,knot,0.7235606,0.83558035,0.27972806,0.40932456,512,488,board_images_png,0.91702497,0.728294 +st1147.png,knot,0.7145754,0.90363944,0.28619885,0.41697603,512,488,board_images_png,0.728294,0.728294 +st1581.png,knot,0.8395566,0.90542674,0.66599536,0.75553393,512,488,board_images_png,0.9763974,0.9763974 +st1360.png,knot,0.87198615,0.9385322,0.47307807,0.55335397,512,488,board_images_png,0.98329365,0.98329365 +st1398.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1827.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1028.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1504.png,knot,0.7023221,0.7615038,0.34336826,0.42820725,512,488,board_images_png,0.95297855,0.89665526 +st1504.png,knot,0.6145234,0.7415803,0.8845993,1.0,512,488,board_images_png,0.9271189,0.89665526 +st1504.png,defect,0.0021485805,0.27988404,0.5505484,0.59185165,512,488,board_images_png,0.89665526,0.89665526 +st1578.png,knot,0.594302,0.6663906,0.35276932,0.43525606,512,488,board_images_png,0.98448783,0.98448783 +st1036.png,knot,0.028068142,0.0839983,0.806439,0.85608625,512,488,board_images_png,0.9128011,0.9016027 +st1036.png,knot,0.42376837,0.5876269,0.52140605,0.7059735,512,488,board_images_png,0.9016027,0.9016027 +st1499.png,knot,0.5809746,0.6119887,0.4228858,0.47573146,512,488,board_images_png,0.8952005,0.7930336 +st1499.png,knot,0.7553885,0.79633987,0.7965046,0.83087444,512,488,board_images_png,0.7930336,0.7930336 +st1090.png,knot,0.5578696,0.7180711,0.30727062,0.53313506,512,488,board_images_png,0.94313323,0.81639516 +st1090.png,defect,0.73136926,0.8486861,0.6013503,0.6512936,512,488,board_images_png,0.81639516,0.81639516 +st1024.png,defect,0.112691626,0.44226354,0.5310191,0.5835047,512,488,board_images_png,0.87372416,0.7271544 +st1024.png,defect,0.40821457,0.9742286,0.52778643,0.58860064,512,488,board_images_png,0.7271544,0.7271544 +st1601.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1730.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1328.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1404.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1234.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1130.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1432.png,knot,0.2931829,0.3458625,0.56240505,0.60282475,512,488,board_images_png,0.98519933,0.874988 +st1432.png,knot,0.29956195,0.36768192,0.86441845,0.962151,512,488,board_images_png,0.97217214,0.874988 +st1432.png,knot,0.16986336,0.20972233,0.73092186,0.7836456,512,488,board_images_png,0.9664343,0.874988 +st1432.png,knot,0.777344,0.8248272,0.59483975,0.6455976,512,488,board_images_png,0.874988,0.874988 +st1701.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1123.png,knot,0.2767068,0.32175153,0.46701193,0.506633,512,488,board_images_png,0.97385967,0.9535659 +st1123.png,knot,0.7109091,0.7986061,0.6256758,0.7137536,512,488,board_images_png,0.9535659,0.9535659 +st1283.png,knot,0.098313406,0.1568827,0.64341545,0.6876629,512,488,board_images_png,0.9695637,0.92305833 +st1283.png,knot,0.19095805,0.23581375,0.21043442,0.2393901,512,488,board_images_png,0.9597842,0.92305833 +st1283.png,knot,0.78956836,0.9321685,0.43591335,0.615597,512,488,board_images_png,0.92305833,0.92305833 +st1566.png,knot,0.20809694,0.25938302,0.8333139,0.881473,512,488,board_images_png,0.9220271,0.9220271 +st1184.png,knot,0.5389529,0.5887932,0.88446933,0.94065404,512,488,board_images_png,0.98569345,0.9756015 +st1184.png,knot,0.7372067,0.7950743,0.43428457,0.5021385,512,488,board_images_png,0.9756015,0.9756015 +st1325.png,knot,0.41096783,0.4686864,0.3719188,0.4173787,512,488,board_images_png,0.97178966,0.71758956 +st1325.png,defect,0.45774087,0.57515985,0.47131798,0.507235,512,488,board_images_png,0.71758956,0.71758956 +st1486.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1606.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1704.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1134.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1517.png,knot,0.74200016,0.81116307,0.43382335,0.50637746,512,488,board_images_png,0.8954352,0.8954352 +st1225.png,knot,0.2011443,0.41020003,0.23063861,0.3502846,512,488,board_images_png,0.9019703,0.9019703 +st1342.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1294.png,knot,0.5556125,0.6112592,0.3199844,0.37132874,512,488,board_images_png,0.9663085,0.9663085 +st1099.png,knot,0.38057646,0.43379363,0.64525,0.69284534,512,488,board_images_png,0.97903275,0.94032264 +st1099.png,knot,0.783422,0.8516338,0.75065935,0.8024257,512,488,board_images_png,0.94032264,0.94032264 +st1485.png,knot,0.5084776,0.5605646,0.29666436,0.3375187,512,488,board_images_png,0.9734903,0.9734903 +st1778.png,knot,0.33641994,0.40676555,0.5519531,0.6495054,512,488,board_images_png,0.9951767,0.92300224 +st1778.png,knot,0.82943386,0.95425886,0.8764082,0.9973693,512,488,board_images_png,0.92300224,0.92300224 +st1255.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1282.png,knot,0.7397333,0.8512135,0.60256326,0.795918,512,488,board_images_png,0.97338796,0.9186734 +st1282.png,knot,0.00065759657,0.21586742,0.19925785,0.47003567,512,488,board_images_png,0.9186734,0.9186734 +st1492.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1502.png,knot,0.38450775,0.48494667,0.46433184,0.57277703,512,488,board_images_png,0.7445761,0.7445761 +st1301.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1221.png,knot,0.82906234,0.87590575,0.29823613,0.34273428,512,488,board_images_png,0.9677968,0.89999956 +st1221.png,knot,0.5514687,0.67128026,0.23506156,0.39411125,512,488,board_images_png,0.94143856,0.89999956 +st1221.png,knot,0.16929382,0.3767521,0.82198226,0.967369,512,488,board_images_png,0.89999956,0.89999956 +st1313.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1725.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1501.png,defect,0.028466891,0.43053594,0.56010455,0.61603063,512,488,board_images_png,0.788139,0.788139 +st1469.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1030.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1754.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1224.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1846.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1345.png,knot,0.6995347,0.75696117,0.5753143,0.6314817,512,488,board_images_png,0.97813386,0.97813386 +st1691.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1049.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1407.png,knot,0.11778457,0.16466995,0.70767486,0.7456024,512,488,board_images_png,0.9189501,0.8215379 +st1407.png,defect,0.18611541,0.62973213,0.24472722,0.523277,512,488,board_images_png,0.8215379,0.8215379 +st1761.png,knot,0.090693764,0.13790727,0.6114098,0.69016904,512,488,board_images_png,0.98304546,0.98304546 +st1434.png,knot,0.23485328,0.28222427,0.55493677,0.59290344,512,488,board_images_png,0.92389,0.74063563 +st1434.png,defect,0.84828746,0.8820617,0.6607343,0.8046339,512,488,board_images_png,0.74063563,0.74063563 +st1338.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1748.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1372.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1738.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1505.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1236.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1630.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1794.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1114.png,knot,0.9400154,0.9931325,0.5959491,0.6464846,512,488,board_images_png,0.89500606,0.89500606 +st1172.png,knot,0.07152845,0.12519489,0.88483614,0.9465262,512,488,board_images_png,0.9098522,0.9098522 +st1131.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1193.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1514.png,defect,0.12568697,0.69539475,0.5725874,0.62920445,512,488,board_images_png,0.8348586,0.8212201 +st1514.png,knot,0.9272249,0.9948062,0.6711885,0.8692283,512,488,board_images_png,0.8212201,0.8212201 +st1139.png,knot,0.56677705,0.64111996,0.6869818,0.77499914,512,488,board_images_png,0.9921335,0.9774146 +st1139.png,knot,0.29908285,0.39024782,0.93987906,1.0,512,488,board_images_png,0.9774146,0.9774146 +st1020.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1153.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1275.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1320.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1451.png,knot,0.37755623,0.45656112,0.65385526,0.74539596,512,488,board_images_png,0.8936781,0.8936781 +st1111.png,knot,0.69098425,0.7365354,0.4256106,0.4817522,512,488,board_images_png,0.9783952,0.97570944 +st1111.png,knot,0.11195667,0.16339019,0.43002528,0.47924435,512,488,board_images_png,0.97570944,0.97570944 +st1497.png,knot,0.14220633,0.20099886,0.28387493,0.35495216,512,488,board_images_png,0.9926939,0.94570374 +st1497.png,knot,0.13923028,0.1923464,0.7384727,0.81842715,512,488,board_images_png,0.99130225,0.94570374 +st1497.png,knot,0.6346491,0.67967534,0.5156564,0.5566579,512,488,board_images_png,0.94570374,0.94570374 +st1510.png,knot,0.8977143,0.9465768,0.47015342,0.51805454,512,488,board_images_png,0.94509804,0.94509804 +st1829.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1091.png,knot,0.20989896,0.251748,0.34986168,0.3921352,512,488,board_images_png,0.99201256,0.70161 +st1091.png,knot,0.696119,0.7461088,0.27078417,0.33086362,512,488,board_images_png,0.9827361,0.70161 +st1091.png,knot,0.89531857,0.93743694,0.4605299,0.5066802,512,488,board_images_png,0.9794672,0.70161 +st1091.png,defect,0.7629506,1.0,0.6205898,0.67307687,512,488,board_images_png,0.74762243,0.70161 +st1091.png,knot,0.14214082,0.247842,0.7355515,0.8967391,512,488,board_images_png,0.7072498,0.70161 +st1091.png,defect,0.0,0.1281265,0.55038965,0.59755194,512,488,board_images_png,0.70161,0.70161 +st1475.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1358.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1215.png,knot,0.19370292,0.24040401,0.679389,0.7466115,512,488,board_images_png,0.98310626,0.9192501 +st1215.png,knot,0.4819632,0.5332109,0.61278045,0.6552351,512,488,board_images_png,0.98147905,0.9192501 +st1215.png,knot,0.51983714,0.5659016,0.83619606,0.8828397,512,488,board_images_png,0.9192501,0.9192501 +st1670.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1428.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1549.png,knot,0.63825864,0.7578076,0.60389596,0.76869655,512,488,board_images_png,0.9821302,0.94119686 +st1549.png,knot,0.20611124,0.34173003,0.42097017,0.57046175,512,488,board_images_png,0.94119686,0.94119686 +st1274.png,knot,0.48306307,0.52941614,0.33974242,0.37156188,512,488,board_images_png,0.89189124,0.89189124 +st1732.png,knot,0.7792275,0.8772611,0.27241305,0.33139244,512,488,board_images_png,0.82892925,0.82892925 +st1728.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1490.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1511.png,knot,0.8874813,0.9360236,0.6798172,0.72863203,512,488,board_images_png,0.95710415,0.95710415 +st1788.png,knot,0.5836056,0.6444321,0.85830957,0.90954554,512,488,board_images_png,0.9565387,0.9565387 +st1795.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1733.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1393.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1843.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1682.png,defect,0.039656125,0.42582238,0.5525609,0.6027745,512,488,board_images_png,0.86834276,0.76895356 +st1682.png,defect,0.024935054,0.31917572,0.55124557,0.5962398,512,488,board_images_png,0.76895356,0.76895356 +st1385.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1122.png,knot,0.5411203,0.6128086,0.58046335,0.6717515,512,488,board_images_png,0.9858913,0.98368675 +st1122.png,knot,0.056484826,0.11591608,0.5652503,0.6422804,512,488,board_images_png,0.98368675,0.98368675 +st1235.png,knot,0.1276616,0.19752865,0.480699,0.55614275,512,488,board_images_png,0.74746734,0.74746734 +st1524.png,NULL,0,0,0,0,512,488,board_images_png,0,0.05 +st1244.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1508.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1736.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1321.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1442.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1200.png,knot,0.5654346,0.66832656,0.3173933,0.506531,512,488,board_images_png,0.9404969,0.89732975 +st1200.png,knot,0.5703329,0.64266706,0.56360215,0.63275886,512,488,board_images_png,0.89732975,0.89732975 +st1802.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1041.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1093.png,defect,0.029552897,0.5419622,0.5649241,0.6236252,512,488,board_images_png,0.7643857,0.7643857 +st1801.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1012.png,knot,0.08644599,0.13153824,0.5904512,0.6404672,512,488,board_images_png,0.988781,0.9774973 +st1012.png,knot,0.812379,0.8715301,0.672171,0.7355979,512,488,board_images_png,0.9774973,0.9774973 +st1124.png,knot,0.58822644,0.6349528,0.6409561,0.67426634,512,488,board_images_png,0.8600671,0.8600671 +st1523.png,knot,0.4360306,0.48373103,0.7257771,0.760645,512,488,board_images_png,0.75625575,0.75625575 +st1316.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1250.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1616.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1227.png,knot,0.13855492,0.1769987,0.46492472,0.5240612,512,488,board_images_png,0.8713209,0.8713209 +st1813.png,knot,0.8311317,0.953618,0.9412942,1.0,512,488,board_images_png,0.95462394,0.9540965 +st1813.png,knot,0.24278454,0.2941218,0.89843416,0.9542148,512,488,board_images_png,0.9540965,0.9540965 +st1375.png,knot,0.6595113,0.7540372,0.24549623,0.33015925,512,488,board_images_png,0.75854486,0.75854486 +st1308.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1436.png,knot,0.026985489,0.09129417,0.6343242,0.7144944,512,488,board_images_png,0.9840538,0.91817385 +st1436.png,knot,0.6789712,0.7982183,0.28795344,0.44787335,512,488,board_images_png,0.9764556,0.91817385 +st1436.png,knot,0.7039986,0.74745595,0.76152605,0.79802424,512,488,board_images_png,0.91817385,0.91817385 +st1753.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1700.png,knot,0.12157553,0.15873633,0.8837781,0.9422516,512,488,board_images_png,0.9878225,0.9772215 +st1700.png,knot,0.5513875,0.6317189,0.6009193,0.6692112,512,488,board_images_png,0.9772215,0.9772215 +st1545.png,knot,0.29913685,0.3875719,0.66622776,0.75740665,512,488,board_images_png,0.892852,0.892852 +st1677.png,defect,0.15709856,0.4504473,0.5181499,0.5668961,512,488,board_images_png,0.7450831,0.72352904 +st1677.png,defect,0.05941242,0.42110217,0.5009454,0.5704264,512,488,board_images_png,0.72352904,0.72352904 +st1277.png,knot,0.35329628,0.3962914,0.4822781,0.5091933,512,488,board_images_png,0.95444745,0.8027073 +st1277.png,knot,0.52825636,0.56697357,0.23076525,0.256575,512,488,board_images_png,0.8027073,0.8027073 +st1422.png,knot,0.030929413,0.09668733,0.5367563,0.6217439,512,488,board_images_png,0.98173296,0.8505016 +st1422.png,defect,0.2963287,0.38398296,0.49390534,0.53890395,512,488,board_images_png,0.9370916,0.8505016 +st1422.png,knot,0.033933025,0.07376841,0.45551947,0.5043373,512,488,board_images_png,0.8505016,0.8505016 +st1536.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1120.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1493.png,knot,0.5058768,0.5699435,0.3648815,0.4515034,512,488,board_images_png,0.9947812,0.7626483 +st1493.png,knot,0.5272039,0.57829803,0.90566856,0.9900118,512,488,board_images_png,0.9907516,0.7626483 +st1493.png,defect,0.72455865,0.943826,0.27428144,0.31762776,512,488,board_images_png,0.7626483,0.7626483 +st1657.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1369.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1096.png,knot,0.14781785,0.21973783,0.87173665,0.9797294,512,488,board_images_png,0.9355302,0.82652843 +st1096.png,knot,0.016842283,0.088842124,0.21323693,0.2722416,512,488,board_images_png,0.82652843,0.82652843 +st1462.png,knot,0.37319168,0.4497309,0.43395936,0.53268087,512,488,board_images_png,0.88651085,0.88651085 +st1776.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1705.png,knot,0.3318905,0.3849011,0.6956777,0.76191366,512,488,board_images_png,0.96945816,0.96945816 +st1582.png,knot,0.896007,0.9702874,0.4574962,0.55282426,512,488,board_images_png,0.9555228,0.9555228 +st1584.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1119.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1121.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1470.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1056.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1281.png,knot,0.47483134,0.52562714,0.44982663,0.48879707,512,488,board_images_png,0.9294945,0.9294945 +st1033.png,knot,0.20481113,0.24327247,0.7391399,0.82345104,512,488,board_images_png,0.83181804,0.83181804 +st1394.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1039.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1611.png,knot,0.6326234,0.7054164,0.86741334,0.96444726,512,488,board_images_png,0.99616516,0.9843567 +st1611.png,knot,0.07399843,0.11282173,0.32572043,0.36819047,512,488,board_images_png,0.9843567,0.9843567 +st1815.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1343.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1639.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1194.png,knot,0.6489157,0.7092218,0.73913777,0.8004431,512,488,board_images_png,0.98375535,0.98375535 +st1773.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1381.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1180.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1564.png,defect,0.27094924,0.71608114,0.56096876,0.624119,512,488,board_images_png,0.86454993,0.7657204 +st1564.png,defect,0.30570227,0.38637656,0.23720618,0.5720114,512,488,board_images_png,0.7657204,0.7657204 +st1076.png,knot,0.1993315,0.2713721,0.61612856,0.67154235,512,488,board_images_png,0.98148555,0.98148555 +st1449.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1262.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1547.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1388.png,knot,0.77038956,0.8246681,0.2486437,0.3917786,512,488,board_images_png,0.8589068,0.7435218 +st1388.png,defect,0.028243389,0.3578855,0.5529958,0.61774576,512,488,board_images_png,0.7435218,0.7435218 +st1071.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1319.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1323.png,knot,0.27874127,0.33264512,0.78055125,0.82403004,512,488,board_images_png,0.9629542,0.9629542 +st1267.png,defect,0.005203705,0.18179724,0.5817473,0.62368834,512,488,board_images_png,0.95650816,0.8531658 +st1267.png,knot,0.76825047,0.8674093,0.46741802,0.57576823,512,488,board_images_png,0.8531658,0.8531658 +st1571.png,knot,0.18502116,0.23628128,0.82359684,0.8792989,512,488,board_images_png,0.9745147,0.9745147 +st1625.png,knot,0.8698924,0.9376181,0.32788292,0.40407893,512,488,board_images_png,0.9801192,0.8253587 +st1625.png,knot,0.12062892,0.21728584,0.50254875,0.6091943,512,488,board_images_png,0.9581743,0.8253587 +st1625.png,knot,0.8375989,0.9150144,0.8612594,0.95407206,512,488,board_images_png,0.9176986,0.8253587 +st1625.png,defect,0.94997066,1.0,0.30075625,0.34504828,512,488,board_images_png,0.8253587,0.8253587 +st1092.png,defect,0.0,0.5400781,0.5343204,0.60199744,512,488,board_images_png,0.8241516,0.78555936 +st1092.png,defect,0.2487825,0.9571989,0.5449516,0.6100018,512,488,board_images_png,0.78555936,0.78555936 +st1229.png,knot,0.005342853,0.04803483,0.59346676,0.6700139,512,488,board_images_png,0.7080499,0.7080499 +st1023.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1840.png,knot,0.12036637,0.18497443,0.7618415,0.8283344,512,488,board_images_png,0.986,0.986 +st1840.png,knot,0.7297609,0.7755673,0.62443626,0.6670296,512,488,board_images_png,0.986,0.986 +st1840.png,defect,0.76513,0.9952971,0.6075407,0.6546806,512,488,board_images_png,0.986,0.986 +st1808.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1491.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1021.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1421.png,knot,0.11980621,0.18726023,0.7555569,0.8244165,512,488,board_images_png,0.958447,0.958447 +st1339.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1554.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1481.png,knot,0.53876394,0.590091,0.36425796,0.41175127,512,488,board_images_png,0.96814036,0.96814036 +st1377.png,knot,0.05203633,0.09342611,0.8601645,0.9058688,512,488,board_images_png,0.9739779,0.9739779 +st1128.png,knot,0.80625194,0.91632825,0.55765307,0.7005993,512,488,board_images_png,0.9684247,0.8107647 +st1128.png,knot,0.32348785,0.36260453,0.6365056,0.67154855,512,488,board_images_png,0.9590423,0.8107647 +st1128.png,knot,0.072546415,0.11205525,0.3796195,0.42445257,512,488,board_images_png,0.95505,0.8107647 +st1128.png,defect,0.020768221,0.4429854,0.49122843,0.56238526,512,488,board_images_png,0.9002104,0.8107647 +st1128.png,defect,0.17511989,0.46910113,0.49637127,0.5440628,512,488,board_images_png,0.8107647,0.8107647 +st1127.png,knot,0.20359582,0.25129482,0.5636938,0.6114353,512,488,board_images_png,0.9720497,0.71256244 +st1127.png,knot,0.17509237,0.2645835,0.7619097,0.89300954,512,488,board_images_png,0.96749485,0.71256244 +st1127.png,knot,0.1909762,0.23535307,0.45002174,0.50459236,512,488,board_images_png,0.93286186,0.71256244 +st1127.png,knot,0.6537879,0.78765035,0.39515936,0.57093585,512,488,board_images_png,0.8413151,0.71256244 +st1127.png,knot,0.123352595,0.27046844,0.71307296,0.88086075,512,488,board_images_png,0.71256244,0.71256244 +st1017.png,knot,0.15934287,0.21258824,0.69495475,0.74923414,512,488,board_images_png,0.9906481,0.9513629 +st1017.png,knot,0.10266534,0.15678032,0.30125916,0.3437191,512,488,board_images_png,0.96538395,0.9513629 +st1017.png,knot,0.89806724,0.94799244,0.6149101,0.6703377,512,488,board_images_png,0.9513629,0.9513629 +st1649.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1824.png,knot,0.16498344,0.23226959,0.7412715,0.8212256,512,488,board_images_png,0.9905476,0.9675445 +st1824.png,knot,0.9254969,0.9730143,0.46670482,0.51139265,512,488,board_images_png,0.9675445,0.9675445 +st1789.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1063.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1445.png,knot,0.6443819,0.6869104,0.7897866,0.8300049,512,488,board_images_png,0.9764658,0.9764658 +st1519.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1539.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1441.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1155.png,knot,0.056128483,0.12090374,0.67237306,0.71741337,512,488,board_images_png,0.98089087,0.98089087 +st1179.png,knot,0.45837882,0.5055271,0.91032165,0.9597935,512,488,board_images_png,0.97704417,0.97704417 +st1015.png,knot,0.4657949,0.5192351,0.77765274,0.83437693,512,488,board_images_png,0.99483126,0.9771674 +st1015.png,knot,0.62487704,0.6703066,0.582573,0.6338162,512,488,board_images_png,0.9771674,0.9771674 +st1315.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1065.png,knot,0.17431675,0.22347072,0.23654391,0.2848744,512,488,board_images_png,0.9868074,0.7672756 +st1065.png,knot,0.761391,0.81125563,0.7722216,0.81279993,512,488,board_images_png,0.9718078,0.7672756 +st1065.png,knot,0.5324617,0.5758695,0.522541,0.5539788,512,488,board_images_png,0.7672756,0.7672756 +st1357.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1667.png,knot,0.90539,1.0,0.75757515,0.95417035,512,488,board_images_png,0.9598757,0.9598757 +st1671.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1516.png,knot,0.52866757,0.64624226,0.5859474,0.7330528,512,488,board_images_png,0.87794745,0.87794745 +st1101.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1260.png,knot,0.008780143,0.06881653,0.55893314,0.6122557,512,488,board_images_png,0.96111435,0.96111435 +st1351.png,knot,0.37872162,0.43863806,0.55814743,0.6412034,512,488,board_images_png,0.9947301,0.97738373 +st1351.png,knot,0.7162861,0.782209,0.2965802,0.374671,512,488,board_images_png,0.9933106,0.97738373 +st1351.png,knot,0.82775426,0.8713944,0.5412964,0.5987785,512,488,board_images_png,0.97738373,0.97738373 +st1376.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1186.png,knot,0.6058496,0.65804994,0.75309813,0.8104734,512,488,board_images_png,0.98136395,0.98136395 +st1538.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1287.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1053.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1681.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1190.png,defect,0.035275936,0.60065794,0.54249704,0.60351425,512,488,board_images_png,0.8525961,0.76389796 +st1190.png,defect,0.48787197,0.97275436,0.52801114,0.5940613,512,488,board_images_png,0.7868591,0.76389796 +st1190.png,defect,0.018175239,0.38031426,0.5527138,0.6027485,512,488,board_images_png,0.76389796,0.76389796 +st1628.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1522.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1270.png,knot,0.34678867,0.4117869,0.2727826,0.34167832,512,488,board_images_png,0.9446557,0.9446557 +st1659.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1534.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1029.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1594.png,knot,0.33551028,0.38614926,0.16877243,0.21096465,512,488,board_images_png,0.987112,0.8777176 +st1594.png,defect,0.6975558,0.9963596,0.5279547,0.57945627,512,488,board_images_png,0.94186485,0.8777176 +st1594.png,defect,0.064073026,0.73349494,0.5247153,0.58300364,512,488,board_images_png,0.8777176,0.8777176 +st1257.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1585.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1805.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1263.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1265.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1763.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1458.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1530.png,knot,0.53668815,0.5918307,0.8938515,0.94775677,512,488,board_images_png,0.9752803,0.9752803 +st1605.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1604.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1483.png,defect,0.774059,0.98008376,0.43718264,0.4840865,512,488,board_images_png,0.7574974,0.7574974 +st1302.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1579.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1694.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1570.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1711.png,knot,0.5873118,0.6285114,0.37589058,0.43903938,512,488,board_images_png,0.9746859,0.9138147 +st1711.png,knot,0.57629526,0.61687636,0.7231382,0.76612574,512,488,board_images_png,0.9697566,0.9138147 +st1711.png,defect,0.32764342,0.5752018,0.54542994,0.5934744,512,488,board_images_png,0.9138147,0.9138147 +st1140.png,knot,0.8942638,0.9481075,0.5630682,0.6189817,512,488,board_images_png,0.97847044,0.97847044 +st1781.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1348.png,knot,0.0,0.031571154,0.6337116,0.6920282,512,488,board_images_png,0.9581143,0.89654917 +st1348.png,knot,0.6687841,0.7174068,0.43589646,0.47504494,512,488,board_images_png,0.89654917,0.89654917 +st1615.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1170.png,knot,0.4402049,0.49130502,0.8758248,0.931154,512,488,board_images_png,0.984606,0.9822368 +st1170.png,knot,0.81391335,0.86345357,0.76427454,0.82079476,512,488,board_images_png,0.9822368,0.9822368 +st1690.png,knot,0.19851859,0.24199493,0.3909187,0.42710394,512,488,board_images_png,0.9121909,0.9121909 +st1792.png,knot,0.23595089,0.29004455,0.2956416,0.3383845,512,488,board_images_png,0.9906427,0.910417 +st1792.png,knot,0.8010435,0.8440271,0.8672871,0.9091894,512,488,board_images_png,0.910417,0.910417 +st1803.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1569.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1551.png,knot,0.63619053,0.7649639,0.40705118,0.5653195,512,488,board_images_png,0.99102426,0.98297393 +st1551.png,knot,0.17823221,0.31843635,0.6092808,0.78658724,512,488,board_images_png,0.98297393,0.98297393 +st1660.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1307.png,knot,0.19044122,0.22998337,0.2392788,0.29569614,512,488,board_images_png,0.9176673,0.75701463 +st1307.png,knot,0.4755669,0.5202824,0.24868643,0.29236877,512,488,board_images_png,0.8936444,0.75701463 +st1307.png,knot,0.756844,0.7962363,0.23921326,0.28953588,512,488,board_images_png,0.75701463,0.75701463 +st1330.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1749.png,knot,0.29975393,0.38158545,0.47838268,0.55155176,512,488,board_images_png,0.98031086,0.98031086 +st1521.png,knot,0.46013328,0.5463568,0.4740795,0.5873207,512,488,board_images_png,0.9323549,0.9323549 +st1672.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1809.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1104.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1586.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1533.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1727.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1762.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1561.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1220.png,knot,0.12324664,0.16531894,0.88222283,0.9185721,512,488,board_images_png,0.7501036,0.7501036 +st1849.png,knot,0.8353676,0.9049195,0.9066991,0.9460937,512,488,board_images_png,0.88539225,0.88539225 +st1064.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1304.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1136.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1842.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1216.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1478.png,knot,0.3499687,0.4842524,0.57836384,0.7447651,512,488,board_images_png,0.9697584,0.9697584 +st1772.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1142.png,knot,0.10130471,0.1666631,0.93701386,1.0,512,488,board_images_png,0.99122393,0.96465534 +st1142.png,knot,0.42964286,0.48378333,0.73776567,0.79399115,512,488,board_images_png,0.9888548,0.96465534 +st1142.png,knot,0.0,0.025988707,0.42292097,0.4892505,512,488,board_images_png,0.96465534,0.96465534 +st1070.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1683.png,defect,0.5329239,0.97495586,0.5084751,0.5724312,512,488,board_images_png,0.9590508,0.7539403 +st1683.png,defect,0.030474966,0.38542023,0.5292042,0.5737903,512,488,board_images_png,0.9506095,0.7539403 +st1683.png,knot,0.51778054,0.56286615,0.5672909,0.64855087,512,488,board_images_png,0.9187184,0.7539403 +st1683.png,knot,0.78114593,0.82849365,0.9175072,0.9523704,512,488,board_images_png,0.877884,0.7539403 +st1683.png,defect,0.56203073,0.6564255,0.18660906,0.4561023,512,488,board_images_png,0.7758399,0.7539403 +st1683.png,defect,0.5718204,0.9096621,0.51635915,0.56507355,512,488,board_images_png,0.7539403,0.7539403 +st1423.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1787.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1692.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1848.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1055.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1026.png,knot,0.2674017,0.35383838,0.39859554,0.50976944,512,488,board_images_png,0.9884343,0.96366304 +st1026.png,knot,0.69417506,0.744075,0.34379873,0.39051458,512,488,board_images_png,0.97863936,0.96366304 +st1026.png,defect,0.70078284,0.9907891,0.5857268,0.6470487,512,488,board_images_png,0.96366304,0.96366304 +st1826.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1047.png,knot,0.3542995,0.45425007,0.5452347,0.67343616,512,488,board_images_png,0.98686105,0.85297066 +st1047.png,defect,0.12903255,0.31020302,0.31878722,0.3649246,512,488,board_images_png,0.85297066,0.85297066 +st1751.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1786.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1069.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1037.png,knot,0.6725518,0.7388108,0.6160668,0.68687695,512,488,board_images_png,0.9883166,0.71845925 +st1037.png,knot,0.15919425,0.23021916,0.60911787,0.681755,512,488,board_images_png,0.9800915,0.71845925 +st1037.png,defect,0.005260315,0.34612125,0.51574904,0.5804733,512,488,board_images_png,0.79289407,0.71845925 +st1037.png,defect,0.018672304,0.322812,0.5305951,0.57148284,512,488,board_images_png,0.71845925,0.71845925 +st1821.png,knot,0.11944925,0.19018118,0.9087665,0.9943758,512,488,board_images_png,0.99410444,0.9670556 +st1821.png,knot,0.59818923,0.65603995,0.6801038,0.7442376,512,488,board_images_png,0.9670556,0.9670556 +st1364.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1192.png,knot,0.39846605,0.45543727,0.36765742,0.4488806,512,488,board_images_png,0.99612194,0.7127546 +st1192.png,defect,0.07790943,0.44866413,0.5975798,0.640683,512,488,board_images_png,0.80447847,0.7127546 +st1192.png,defect,0.47953823,0.7499259,0.5517361,0.59940904,512,488,board_images_png,0.7127546,0.7127546 +st1602.png,knot,0.9574499,1.0,0.42608044,0.4791277,512,488,board_images_png,0.72733927,0.72733927 +st1379.png,knot,0.29298508,0.43081832,0.5901556,0.77116805,512,488,board_images_png,0.9793032,0.9793032 +st1440.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1719.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1716.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1108.png,knot,0.69631505,0.73806465,0.6270994,0.6722544,512,488,board_images_png,0.9886671,0.90558296 +st1108.png,knot,0.6181019,0.69406986,0.23797426,0.29145443,512,488,board_images_png,0.9754843,0.90558296 +st1108.png,knot,0.12284262,0.15919161,0.6235059,0.686582,512,488,board_images_png,0.9687026,0.90558296 +st1108.png,knot,0.29641727,0.3453667,0.5215502,0.5541794,512,488,board_images_png,0.90558296,0.90558296 +st1798.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1596.png,knot,0.7262323,0.7746997,0.23982525,0.2841002,512,488,board_images_png,0.9764713,0.8792314 +st1596.png,defect,0.0,0.18872425,0.6252165,0.6738723,512,488,board_images_png,0.8792314,0.8792314 +st1107.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1593.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1740.png,knot,0.2112985,0.2654443,0.6285077,0.6783256,512,488,board_images_png,0.97739637,0.97739637 +st1463.png,knot,0.46628618,0.5137217,0.5166115,0.5817609,512,488,board_images_png,0.90653586,0.90653586 +st1249.png,knot,0.67133003,0.7416619,0.56961924,0.63172895,512,488,board_images_png,0.7778287,0.7778287 +st1292.png,knot,0.20523047,0.32447684,0.19784732,0.3516566,512,488,board_images_png,0.98957986,0.9779925 +st1292.png,knot,0.76388824,0.861159,0.8165224,0.9411841,512,488,board_images_png,0.9779925,0.9779925 +st1232.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1734.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1332.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1799.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1696.png,knot,0.5082208,0.55826336,0.40370333,0.4456584,512,488,board_images_png,0.9750294,0.9750294 +st1353.png,knot,0.20250683,0.26231235,0.70863116,0.778109,512,488,board_images_png,0.99471915,0.87796557 +st1353.png,knot,0.9440131,0.9763329,0.7736546,0.83807546,512,488,board_images_png,0.87796557,0.87796557 +st1042.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1088.png,knot,0.63853097,0.70713216,0.5170407,0.5931604,512,488,board_images_png,0.99378115,0.97339106 +st1088.png,knot,0.016109794,0.12432815,0.6511545,0.8050783,512,488,board_images_png,0.97339106,0.97339106 +st1764.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1706.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1555.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1157.png,knot,0.55773807,0.6353789,0.796305,0.90967226,512,488,board_images_png,0.98938215,0.97597164 +st1157.png,knot,0.6030029,0.70828706,0.46024242,0.56399477,512,488,board_images_png,0.97597164,0.97597164 +st1310.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1331.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1137.png,knot,0.5549138,0.655619,0.6309172,0.75291824,512,488,board_images_png,0.98047423,0.9802043 +st1137.png,knot,0.6839061,0.796325,0.28546476,0.4368632,512,488,board_images_png,0.9802043,0.9802043 +st1311.png,knot,0.17855604,0.22768492,0.59137386,0.6507016,512,488,board_images_png,0.96903574,0.96903574 +st1466.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1051.png,knot,0.7411262,0.8467681,0.33830678,0.44452292,512,488,board_images_png,0.9951338,0.74332273 +st1051.png,knot,0.5914114,0.62914854,0.30536783,0.32768086,512,488,board_images_png,0.74332273,0.74332273 +st1830.png,knot,0.2591614,0.3020172,0.30837727,0.3550865,512,488,board_images_png,0.9754875,0.96484137 +st1830.png,knot,0.88722545,0.9334164,0.37343535,0.4335522,512,488,board_images_png,0.96484137,0.96484137 +st1040.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1556.png,knot,0.5110332,0.56798416,0.5350004,0.59305537,512,488,board_images_png,0.9750122,0.7373006 +st1556.png,defect,0.12589139,0.23129989,0.5029541,0.5395938,512,488,board_images_png,0.7373006,0.7373006 +st1702.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1038.png,knot,0.31787464,0.36652422,0.33077985,0.3723501,512,488,board_images_png,0.97705007,0.97705007 +st1335.png,NULL,0,0,0,0,512,488,board_images_png,0,0.0 +st1202.png,knot,0.7601946,0.8447372,0.46703416,0.56048256,512,488,board_images_png,0.94609445,0.94609445 +st1518.png,knot,0.56253266,0.6819586,0.4816731,0.61785614,512,488,board_images_png,0.97566086,0.87584656 +st1518.png,knot,0.106342345,0.17423195,0.41895986,0.48053488,512,488,board_images_png,0.8768969,0.87584656 +st1518.png,knot,0.7848372,0.84227246,0.61229557,0.64354527,512,488,board_images_png,0.87584656,0.87584656 diff --git a/test/totag_source2.csv b/test/totag_source2.csv new file mode 100644 index 00000000..afa27457 --- /dev/null +++ b/test/totag_source2.csv @@ -0,0 +1,11 @@ +filename,class,xmin,xmax,ymin,ymax,height,width,folder,box_confidence,image_confidence +st1026.png,knot,0.69150746,0.7407868,0.3375946,0.39474854,512,488,board_images_png,0.9990602,0.54169416 +st1026.png,knot,0.29255274,0.37531677,0.41773036,0.48604906,512,488,board_images_png,0.74185294,0.54169416 +st1026.png,knot,0.29603952,0.35703427,0.40142354,0.49790853,512,488,board_images_png,0.54169416,0.54169416 +st1578.png,knot,0.54391885,0.60184073,0.7846939,0.85633487,512,488,board_images_png,0.9994636,0.9942725 +st1578.png,knot,0.60079277,0.6762777,0.36906424,0.4369791,512,488,board_images_png,0.9942725,0.9942725 +st1611.png,knot,0.65116334,0.7139255,0.86043906,0.9666604,512,488,board_images_png,0.99822897,0.9488958 +st1611.png,knot,0.07768918,0.1141083,0.332125,0.36988598,512,488,board_images_png,0.9488958,0.9488958 +st1840.png,knot,0.12473148,0.18879795,0.76679623,0.8271259,512,488,board_images_png,0.99770314,0.5600077 +st1840.png,knot,0.72636276,0.7735574,0.62331045,0.66846347,512,488,board_images_png,0.98784816,0.5600077 +st1840.png,knot,0.59846735,0.6426683,0.2617435,0.32195628,512,488,board_images_png,0.5600077,0.5600077 \ No newline at end of file diff --git a/test/untagged_source.csv b/test/untagged_source.csv new file mode 100644 index 00000000..bc8fa5c5 --- /dev/null +++ b/test/untagged_source.csv @@ -0,0 +1,11 @@ +filename,class,xmin,xmax,ymin,ymax,height,width,folder,box_confidence,image_confidence +st1026.png,knot,0.69150746,0.7407868,0.3375946,0.39474854,512,488,board_images_png,0.9990602,0.54169416 +st1026.png,knot,0.29255274,0.37531677,0.41773036,0.48604906,512,488,board_images_png,0.74185294,0.54169416 +st1026.png,knot,0.29603952,0.35703427,0.40142354,0.49790853,512,488,board_images_png,0.54169416,0.54169416 +st1578.png,knot,0.54391885,0.60184073,0.7846939,0.85633487,512,488,board_images_png,0.9994636,0.9942725 +st1578.png,knot,0.60079277,0.6762777,0.36906424,0.4369791,512,488,board_images_png,0.9942725,0.9942725 +st1611.png,knot,0.65116334,0.7139255,0.86043906,0.9666604,512,488,board_images_png,0.99822897,0.9488958 +st1611.png,knot,0.07768918,0.1141083,0.332125,0.36988598,512,488,board_images_png,0.9488958,0.9488958 +st1840.png,knot,0.12473148,0.18879795,0.76679623,0.8271259,512,488,board_images_png,0.99770314,0.5600077 +st1840.png,knot,0.72636276,0.7735574,0.62331045,0.66846347,512,488,board_images_png,0.98784816,0.5600077 +st1840.png,knot,0.59846735,0.6426683,0.2617435,0.32195628,512,488,board_images_png,0.5600077,0.5600077 diff --git a/train/create_predictions.py b/train/create_predictions.py index 85144d96..b28c022e 100644 --- a/train/create_predictions.py +++ b/train/create_predictions.py @@ -10,6 +10,20 @@ NUM_CHANNELS=3 FOLDER_LOCATION=8 +PREDICTIONS_SCHEMA = \ + ["filename", "class", "xmin","xmax","ymin","ymax","height","width","folder", "box_confidence", "image_confidence"] +PREDICTIONS_SCHEMA_NO_FOLDER =\ + ["filename", "class", "xmin","xmax","ymin","ymax","height","width","box_confidence", "image_confidence"] + +#name,prediction[CLASS_IDX],prediction[XMIN_IDX],prediction[XMAX_IDX],prediction[YMIN_IDX],prediction[YMAX_IDX],height,width,folder,prediction[BOX_CONFID_IDX], confidence +BOX_CONFID_IDX = 0 +CLASS_IDX = 1 +XMIN_IDX = 3 +XMAX_IDX = 5 +YMIN_IDX = 2 +YMAX_IDX = 4 + + def calculate_confidence(predictions): return min([float(prediction[0]) for prediction in predictions]) @@ -23,25 +37,34 @@ def make_csv_output(all_predictions: List[List[List[int]]], all_names: List[str] tagged_writer = csv.writer(tagged_file) untagged_writer = csv.writer(untagged_file) if user_folders: - tagged_writer.writerow(["filename", "class", "xmin","xmax","ymin","ymax","height","width","folder", "box_confidence", "image_confidence"]) - untagged_writer.writerow(["filename", "class", "xmin","xmax","ymin","ymax","height","width","folder", "box_confidence", "image_confidence"]) + tagged_writer.writerow(PREDICTIONS_SCHEMA) + untagged_writer.writerow(PREDICTIONS_SCHEMA) else: - tagged_writer.writerow(["filename", "class", "xmin","xmax","ymin","ymax","height","width","box_confidence", "image_confidence"]) - untagged_writer.writerow(["filename", "class", "xmin","xmax","ymin","ymax","height","width","box_confidence", "image_confidence"]) + tagged_writer.writerow(PREDICTIONS_SCHEMA_NO_FOLDER) + untagged_writer.writerow(PREDICTIONS_SCHEMA_NO_FOLDER) if user_folders: for (folder, name), predictions, (height, width) in zip(all_names, all_predictions, all_sizes): if not predictions: predictions = [[0,"NULL",0,0,0,0]] confidence = calculate_confidence(predictions) for prediction in predictions: - (tagged_writer if name in file_set[folder] else untagged_writer).writerow([name,prediction[1],prediction[3],prediction[5],prediction[2],prediction[4],height,width,folder,prediction[0], confidence]) + (tagged_writer if name in file_set[folder] else untagged_writer).writerow([ + name, + prediction[CLASS_IDX],prediction[XMIN_IDX],prediction[XMAX_IDX], + prediction[YMIN_IDX],prediction[YMAX_IDX],height,width, + folder, + prediction[BOX_CONFID_IDX], confidence]) else: for name, predictions, (height,width) in zip(all_names, all_predictions, all_sizes): if not predictions: predictions = [[0,"NULL",0,0,0,0]] confidence = calculate_confidence(predictions) for prediction in predictions: - (tagged_writer if name in file_set else untagged_writer).writerow([name,prediction[1],prediction[3],prediction[5],prediction[2],prediction[4],height,width,prediction[0], confidence]) + (tagged_writer if name in file_set else untagged_writer).writerow([ + name, + prediction[CLASS_IDX], prediction[XMIN_IDX], prediction[XMAX_IDX], + prediction[YMIN_IDX], prediction[YMAX_IDX], height, width, + prediction[BOX_CONFID_IDX], confidence]) def get_suggestions(detector, basedir: str, untagged_output: str, tagged_output: str, cur_tagged: str, cur_tagging: str, min_confidence: float =.2, @@ -106,7 +129,7 @@ def get_suggestions(detector, basedir: str, untagged_output: str, all_images = np.zeros((len(all_image_files), *reversed(image_size), NUM_CHANNELS), dtype=np.uint8) for curindex, image in enumerate(all_image_files): all_images[curindex] = cv2.resize(cv2.imread(str(image), CV2_COLOR_LOAD_FLAG), image_size) - all_predictions = detector.predict(all_images, min_confidence=min_confidence) + all_predictions = detector.predict(all_images, batch_size=2, min_confidence=min_confidence) make_csv_output(all_predictions, all_names, all_sizes, untagged_output, tagged_output, already_tagged, user_folders) if __name__ == "__main__": diff --git a/train/tf_detector.py b/train/tf_detector.py index 2e5a6449..c47f68d9 100644 --- a/train/tf_detector.py +++ b/train/tf_detector.py @@ -33,7 +33,9 @@ def predict(self, images_data, batch_size=10, min_confidence=.7): image_tensor = tf.get_default_graph().get_tensor_by_name('image_tensor:0') split_data = [images_data[i:i+batch_size] for i in range(0,images_data.shape[0],batch_size)] split_data = [sess.run(tensor_dict, feed_dict={image_tensor: batch}) for batch in split_data] - split_data = [np.dstack((batch['detection_scores'], self.label_arr[batch['detection_classes'].astype(np.uint8)], batch['detection_boxes'])) for batch in split_data] + split_data = [np.dstack((batch['detection_scores'], + self.label_arr[batch['detection_classes'].astype(np.uint8)], + batch['detection_boxes'])) for batch in split_data] combined = np.concatenate(split_data) non_zero = combined[:,:,0].astype(np.float)>min_confidence return [sorted(cur_combined[cur_non_zero].tolist(), reverse=True) for cur_combined, cur_non_zero in zip(combined, non_zero)] diff --git a/utils/config.py b/utils/config.py index 0301b335..06ca9102 100644 --- a/utils/config.py +++ b/utils/config.py @@ -3,9 +3,11 @@ class Config(): @staticmethod def parse_file(file_name): config = {} - for line in open(file_name): - line = line.strip() - if line and line[0] is not "#": - var,value = line.split('=', 1) - config[var.strip()] = value.strip() + with open(file_name) as file_: + for line in file_: + line = line.strip() + if line and line[0] is not "#": + var,value = line.split('=', 1) + config[var.strip()] = value.strip() + return config From 753631a7f6b6e2e50cd405a48bdfd7abe3f1db19 Mon Sep 17 00:00:00 2001 From: jim spring Date: Fri, 26 Oct 2018 02:10:39 +0000 Subject: [PATCH 016/145] function tutorials, information about settings and keyvault (as well as example) --- tutorial/functions/README.md | 7 + tutorial/functions/docs/setup/README.md | 7 + .../functions/docs/setup/deployment/README.md | 53 ++++ .../functions/docs/setup/initial/README.md | 212 +++++++++++++ .../docs/setup/initial/create_function_app.sh | 45 +++ .../setup/initial/create_function_project.sh | 91 ++++++ .../docs/setup/initial/setup_environment.sh | 54 ++++ .../docs/setup/security/keyvault/README.md | 286 ++++++++++++++++++ .../setup_keyvault_and_app_permissions.sh | 41 +++ ...p_keyvault_and_app_permissions_using_sp.sh | 50 +++ .../keyvault/service_principal/README.md | 5 + .../service_principal/requirements.txt | 2 + .../service_principal/retrieve_secret.py | 60 ++++ 13 files changed, 913 insertions(+) create mode 100644 tutorial/functions/README.md create mode 100644 tutorial/functions/docs/setup/README.md create mode 100644 tutorial/functions/docs/setup/deployment/README.md create mode 100644 tutorial/functions/docs/setup/initial/README.md create mode 100755 tutorial/functions/docs/setup/initial/create_function_app.sh create mode 100755 tutorial/functions/docs/setup/initial/create_function_project.sh create mode 100755 tutorial/functions/docs/setup/initial/setup_environment.sh create mode 100644 tutorial/functions/docs/setup/security/keyvault/README.md create mode 100755 tutorial/functions/docs/setup/security/keyvault/setup_keyvault_and_app_permissions.sh create mode 100755 tutorial/functions/docs/setup/security/keyvault/setup_keyvault_and_app_permissions_using_sp.sh create mode 100644 tutorial/functions/examples/keyvault/service_principal/README.md create mode 100644 tutorial/functions/examples/keyvault/service_principal/requirements.txt create mode 100644 tutorial/functions/examples/keyvault/service_principal/retrieve_secret.py diff --git a/tutorial/functions/README.md b/tutorial/functions/README.md new file mode 100644 index 00000000..c3dc5127 --- /dev/null +++ b/tutorial/functions/README.md @@ -0,0 +1,7 @@ +## Azure Functions Tutorials + +Much of the Active Learning pipeline relies upon Python. One implementation of the +pipeline makes use of Azure Functions with the Python language. This set of documents +and tutorial show how to setup (and script) a Azure Function environment, inject +variables within the environment within which the functions run, how to access +secrets within Azure Keyvault. diff --git a/tutorial/functions/docs/setup/README.md b/tutorial/functions/docs/setup/README.md new file mode 100644 index 00000000..94138f79 --- /dev/null +++ b/tutorial/functions/docs/setup/README.md @@ -0,0 +1,7 @@ +## Working with Python and Azure Functions + +This project has scripts, hints, and tricks for working with Python and Azure +Functions. The project is broken down into multiple areas: + +- [Setting up one's environment](initial/README.md) +- [Using Keyvault for Secrets](security/keyvault/README.md) \ No newline at end of file diff --git a/tutorial/functions/docs/setup/deployment/README.md b/tutorial/functions/docs/setup/deployment/README.md new file mode 100644 index 00000000..29714486 --- /dev/null +++ b/tutorial/functions/docs/setup/deployment/README.md @@ -0,0 +1,53 @@ +## Deploying a Python Azure Function application + +Assuming one has gone through the [instructions to setup the environemnt](../setup/initial/README.md) +for developing a Python based Azure Function, the skeleton applicaiton created with an `HttpTrigger` +app can be deployed. + +At it's simplest, deploying the function is to uses the Azure Functions CLI tools that were +previously installed. The command is `func azure functionapp publish $AZURE_FUNC_APP_NAME --force`. +The below assumes that one has activated the Python virtual environment. + +```bash +export AZURE_FUNC_APP_NAME=jmsazfunapp1 +$ func azure functionapp publish $AZURE_FUNC_APP_NAME --force +Getting site publishing info... +pip download -r /home/jims/code/src/github/jmspring/azure_python_functions/scratch/azfuncprj/testprj1/requirements.txt --dest /tmp/azureworkerda2e6auj +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworkergtpit9y9 grpcio_tools==1.14.2 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworkergtpit9y9 six==1.11.0 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworkergtpit9y9 azure_functions==1.0.0a4 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworkergtpit9y9 grpcio==1.14.2 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworkergtpit9y9 setuptools==40.4.3 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworkergtpit9y9 protobuf==3.6.1 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworkergtpit9y9 azure_functions_worker==1.0.0a4 + +Preparing archive... +Uploading content... +Upload completed successfully. +Deployment completed successfully. +Removing 'WEBSITE_CONTENTSHARE' from 'jmsazfunapp1' +Removing 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING' from 'jmsazfunapp1' +Syncing triggers... +``` + +Note the above uses the flag `--force` this is simply because the initial creation of the Azure +Function application set things up such that the Application use Azure Files for publishing +and deployment. Without the `--force`, the result would look something like: + +```bash +$ func azure functionapp publish $AZURE_FUNC_APP_NAME +Your app is configured with Azure Files for editing from Azure Portal. +To force publish use --force. This will remove Azure Files from your app. +``` + +This may be a Preview thing or it may be the default. As things mature, the above directions will +be cleaned up. + +Hitting the default web serice, using curl, the result is as follows: + +```bash +$ curl https://jmsazfunapp1.azurewebsites.net/api/httpfunc1?name=foo +Hello foo! +``` + +At this point, you have a Python function deployed to Azure Functions. \ No newline at end of file diff --git a/tutorial/functions/docs/setup/initial/README.md b/tutorial/functions/docs/setup/initial/README.md new file mode 100644 index 00000000..18f0da7f --- /dev/null +++ b/tutorial/functions/docs/setup/initial/README.md @@ -0,0 +1,212 @@ +## Setting up a function environment + +In the following document, we explore using the scripts in this folder to walk through +setting up an environment for and deploying a python funciton into Azure Functions. +Python for Azure Functions is in preview at the moment, so, things may change. The +following prerequisites are assumed: + +- You have an active Azure account +- The prerequisites for working with Azure Functions have been installed, per [here](https://github.com/Azure/Azure-Functions/wiki/Azure-Functions-on-Linux-Preview) +- Per prerequisites, the scripts below assume one has created a resource group + +### Python for Azure Functions in practice + +One thing most of the documents around Python for Azure Functions do not call out is +the fact that function development requires a virtual environment to be setup. The +script `setup_environment.sh` does just that. The syntax is: + +```bash +$ ./setup_environment.sh +``` + +For purposes of this write up will use environment variables to illustrate the process, +we will first assume our virtual environment is in `~/python/venv/azfuncprj`, so the +above becomes: + +```bash +$ export VIRTUAL_ENV_DIR=~/python/venv/azfuncprj +$ ./setup_environment.sh $VIRTUAL_ENV_DIR +``` + +Running the above we get: + +```bash +$ export VIRTUAL_ENV_DIR=~/python/venv/azfuncprj +$ ./setup/setup_environment.sh $VIRTUAL_ENV_DIR +Running virtualenv with interpreter /usr/bin/python3.6 +Using base prefix '/usr' +New python executable in /home/jims/python/venv/azfuncprj/bin/python3.6 +Also creating executable in /home/jims/python/venv/azfuncprj/bin/python +Installing setuptools, pip, wheel...done. +To activate the virtualenv run: source python/venv/azfuncprj/bin/activate +``` + +### Creating the function project + +The next step in working with Python for Azure Functions is to create a project and a +function within that project. This is handled by the script `create_function_project.sh`. +For this funciton you will need to know: + +- The virtual environment path (created above), `VIRTUAL_ENV_DIR` +- The directory where you want the project to live, this will be defined with the + environment variable `PYFUNC_PROJECT_DIR` +- The project name, defined with the environment variable `PYFUNC_PROJECT_NAME` +- The name of the function within the project, `PYFUNC_FUNCTION_NAME` +- The type of function to create/function template. In this case we will use an + HttpTrigger app, so `PYFUNC_FUNCTION_TYPE=HttpTrigger` + +Invoking the `create_function_project.sh` script: + +```bash +$ export VIRTUAL_ENV_DIR=~/python/venv/azfuncprj +$ export PYFUNC_PROJECT_DIR=~/python/azfuncprj +$ export PYFUNC_PROJECT_NAME=testprj +$ export PYFUNC_FUNCTION_NAME=testhttpfunc +$ export PYFUNC_FUNCTION_TYPE=HttpTrigger +$ ./create_function_project.sh $VIRTUAL_ENV_DIR $PYFUNC_PROJECT_DIR $PYFUNC_PROJECT_NAME $PYFUNC_FUNCTION_NAME $PYFUNC_FUNCTION_TYPE +Installing wheel package +Installing azure-functions==1.0.0a4 package +Installing azure-functions-worker==1.0.0a4 package +Running pip freeze +Writing .gitignore +Writing host.json +Writing local.settings.json +Writing /home/jims/python/azfuncprj/testprj/.vscode/extensions.json +Select a language: Select a template: HttpTrigger +Function name: [HttpTriggerPython] Writing /home/jims/python/azfuncprj/azfuncprj/testprj/httpfunc1/sample.dat +Writing /home/jims/python/azfuncprj/testprj/httpfunc1/__init__.py +Writing /home/jims/python/azfuncprj/testprj/httpfunc1/function.json +The function "testhttpfunc" was created successfully from the "HttpTrigger" template. +Function httpfunc1 is created within project testprj1 +In order to operate with the function: + - Activate the virtual environment + - Change to ~/python/azfuncprj/testprj +``` + +### Create a Azure Function Application to host your Python function + +Per this [document](https://github.com/Azure/azure-functions-python-worker/wiki/Create-your-first-Python-function) +one can run functions locally. If one wants to actually host them in Azure, then one +needs to create an Azure Function application to do so. Outside of the prerequisites mentioned +above, this is the first piece of this setup that actually interacts with Azure itself. + +The script `create_function_app.sh` sets this up. It requires that a `resource group` has been +previously created. For purposes of Python support in Azure Functions, the resource group (during +preview) must be created in one of the following regions: + +- West US +- East US +- West Europe +- East Asia + +The example below will assume the `resource group` will be named `jmsazfunc1rg` and located +in `West US`. The Azure CLI command to do so is: + +```bash +export RESOURCE_GROUP_NAME=jmsazfunc1rg +export RESOURCE_GROUP_LOCATION=westus +$ az group create --name $RESOURCE_GROUP_NAME --location $RESOURCE_GROUP_LOCATION +{ + "id": "/subscriptions/3fee811e-11bf-4b5c-9c62-a2f28b517724/resourceGroups/jmsazfunc1rg", + "location": "westus", + "managedBy": null, + "name": "jmsazfunc1rg", + "properties": { + "provisioningState": "Succeeded" + }, + "tags": null +} +``` + +To create the Azure Function application, the following need to be defined: + +- Resource Group --> `export RESOURCE_GROUP_NAME=jmsazfunc1rg` +- Resource Group/Function Location --> `export RESOURCE_GROUP_LOCATION=westus` +- Storage Account Name --> `export STORAGE_ACCOUNT_NAME=jmsazfunc1sa` +- Azure Function Applicaiton Name --> `export AZURE_FUNC_APP_NAME=jmsazfunapp1` + +The storage account, `jmsazfun1sa`, is needed as that is the locaiton that the Azure Function +state is stored. The name of the applciaiton, for this example is `jmsazfunapp1`. Resource +group name and location were defined previously. + +Executing the script: + +```bash +$ export RESOURCE_GROUP_NAME=jmsazfunc1rg +$ export RESOURCE_GROUP_LOCATION=westus +$ export STORAGE_ACCOUNT_NAME=jmsazfunc1sa +$ export AZURE_FUNC_APP_NAME=jmsazfunapp1 +$ ./create_function_app.sh $RESOURCE_GROUP_NAME $RESOURCE_GROUP_LOCATION $STORAGE_ACCOUNT_NAME $AZURE_FUNC_APP_NAME +{ + "id": "/subscriptions/3fee811e-11bf-4b5c-9c62-a2f28b517724/resourceGroups/jmsazfunc1rg", + "location": "westus", + "managedBy": null, + "name": "jmsazfunc1rg", + "properties": { + "provisioningState": "Succeeded" + }, + "tags": null +} +{ + "accessTier": null, + "creationTime": "2018-10-08T18:52:49.001675+00:00", + "customDomain": null, + "enableHttpsTrafficOnly": false, + "encryption": { + "keySource": "Microsoft.Storage", + "keyVaultProperties": null, + "services": { + "blob": { + "enabled": true, + "lastEnabledTime": "2018-10-08T18:52:49.118545+00:00" + }, + "file": { + "enabled": true, + "lastEnabledTime": "2018-10-08T18:52:49.118545+00:00" + }, + "queue": null, + "table": null + } + }, + "id": "/subscriptions/3fee811e-11bf-4b5c-9c62-a2f28b517724/resourceGroups/jmsazfunc1rg/providers/Microsoft.Storage/storageAccounts/jmsazfunc1sa", + "identity": null, + "isHnsEnabled": null, + "kind": "Storage", + "lastGeoFailoverTime": null, + "location": "westus", + "name": "jmsazfunc1sa", + "networkRuleSet": { + "bypass": "AzureServices", + "defaultAction": "Allow", + "ipRules": [], + "virtualNetworkRules": [] + }, + "primaryEndpoints": { + "blob": "https://jmsazfunc1sa.blob.core.windows.net/", + "dfs": null, + "file": "https://jmsazfunc1sa.file.core.windows.net/", + "queue": "https://jmsazfunc1sa.queue.core.windows.net/", + "table": "https://jmsazfunc1sa.table.core.windows.net/", + "web": null + }, + "primaryLocation": "westus", + "provisioningState": "Succeeded", + "resourceGroup": "jmsazfunc1rg", + "secondaryEndpoints": null, + "secondaryLocation": null, + "sku": { + "capabilities": null, + "kind": null, + "locations": null, + "name": "Standard_LRS", + "resourceType": null, + "restrictions": null, + "tier": "Standard" + }, + "statusOfPrimary": "available", + "statusOfSecondary": null, + "tags": {}, + "type": "Microsoft.Storage/storageAccounts" +} +Your Linux, cosumption plan, function app 'jmsazfunapp1' has been successfully created but is not active until content is published usingAzure Portal or the Functions Core Tools. +``` \ No newline at end of file diff --git a/tutorial/functions/docs/setup/initial/create_function_app.sh b/tutorial/functions/docs/setup/initial/create_function_app.sh new file mode 100755 index 00000000..aac67db0 --- /dev/null +++ b/tutorial/functions/docs/setup/initial/create_function_app.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# This script sets up the azure function space that will host the Python +# functions developed. +# +# To set up the function, you need to do the following: +# +# - create a resource group +# - create a storage account +# - create the function app + +# Needed: +# - resource group name +# - location +# - storage account name +# - application name + +# Check inputs +if [ "$#" -ne "4" ]; then + echo "Usage: create_function_app.sh " + exit 1 +fi + +RG_NAME=$1 +LOCATION=$2 +SA_NAME=$3 +APP_NAME=$4 + +# Create the resource group +az group create --name $RG_NAME --location $LOCATION +if [ "$?" -ne 0 ]; then + echo "Unable to create resource group." + exit 1 +fi + +# Create a storage account in the resource group for the functions to store +# their state / metadata +az storage account create --name $SA_NAME --location $LOCATION --resource-group $RG_NAME --sku Standard_LRS +if [ "$?" -ne 0 ]; then + echo "Unable to create storage account." + exit 1 +fi + +# Create the functions app. This is the environment the functions will fu +az functionapp createpreviewapp --resource-group $RG_NAME --consumption-plan-location $LOCATION --name $APP_NAME --storage-account $SA_NAME --runtime python --is-linux \ No newline at end of file diff --git a/tutorial/functions/docs/setup/initial/create_function_project.sh b/tutorial/functions/docs/setup/initial/create_function_project.sh new file mode 100755 index 00000000..8aeadbe0 --- /dev/null +++ b/tutorial/functions/docs/setup/initial/create_function_project.sh @@ -0,0 +1,91 @@ +#!/bin/bash +set -e + +# This script creates an initial function once it ensures that the requirements +# are installed. The requirements are: +# +# - Azure Functions Core Tools 2.x +# - Azure CLI 2.0 or later +# +# Once the requirements are verified, the following steps are performed: +# +# - Invoke the virtual environment +# - Create the function project +# - Create a new function within the project + +# Check usage +if [ "$#" -ne "5" ]; then + echo "Usage: create_function_project.sh " + exit 1 +fi + +# Check Azure Functions Core Tools +which func >& /dev/null +if [ "$?" -ne "0" ]; then + echo "Azure Functions Core Tools required" + exit 1 +fi +func azure functionapp --help >& /dev/null +if [ "$?" -ne "0" ]; then + echo "func exists, does not appear to be part of Azure Functions Core Tools" + exit 1 +fi + +# Check for Azure CLI +which az >& /dev/null +if [ "$?" -ne "0" ]; then + echo "Azure CLI 2.0 or more recent required." + exit 1 +fi +az --version | grep "azure-cli" | grep "(2." >& /dev/null +if [ "$?" -ne "0" ]; then + echo "Require 2.x or newer version of Azure CLI" + exit 1 +fi + +# command line options +VIRTENV_DIR=$1 +PROJECT_DIR=$2 +PROJECT_NAME=$3 +FUNCTION_NAME=$4 +FUNCTION_TEMPLATE=$5 + +# Verify the virtual environment is there and activate it +if [ ! -d "$VIRTENV_DIR" ] || [ ! -e "$VIRTENV_DIR/bin/activate" ]; then + echo "Please setup virtual environment" + exit 1 +fi +source "$VIRTENV_DIR/bin/activate" +if [ "$?" -ne "0" ]; then + echo "Error activating virtual environment" + exit 1 +fi + +# Create the project directory and change to it +mkdir -p $PROJECT_DIR +if [ "$?" -ne "0" ]; then + echo "Unable to create project directory" + exit 1 +fi +cd $PROJECT_DIR + +# Create the function +func init $PROJECT_NAME --worker-runtime python +if [ "$?" -ne 0 ]; then + echo "Error initializing project" + exit 1 +fi +cd $PROJECT_NAME + +# Create the function +func new --name $FUNCTION_NAME --template "$FUNCTION_TEMPLATE" +if [ "$?" -ne 0 ]; then + echo "Error creating the new function" + exit 1 +fi + +# Instructions for continuing +echo "Function $FUNCTION_NAME is created within project $PROJECT_NAME" +echo "In order to operate with the function:" +echo " - Activate the virtual environment" +echo " - Change to $PROJECT_DIR/$PROJECT_NAME" diff --git a/tutorial/functions/docs/setup/initial/setup_environment.sh b/tutorial/functions/docs/setup/initial/setup_environment.sh new file mode 100755 index 00000000..7bd19ac3 --- /dev/null +++ b/tutorial/functions/docs/setup/initial/setup_environment.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# Azure Python Functions require that a Python virtual environment be setup +# prior to initializing and creating the function. +# +# This script will setup and activate the specified virtual environment. If +# specified, the virtual environment will be activated. +# +# Usage: setup_environment.sh +# +if [ "$#" -ne "1" ]; then + echo "Usage: setup_environment.sh " + exit 1 +fi + +# Is machine configured properly? Requirements: +# - Python 3.6 or later +# - virtualenv installed + +# Determine Python version +which python >& /dev/null +if [ "$?" -eq "0" ]; then + PYTHON_VERSION=`python --version | awk '{print $2}'` + if [ "$PYTHON_VERSION" -lt "3.6" ]; then + PYTHON_VERSION="" + fi +fi +if [ -z "$PYTHON_VERSION" ] || [ "$PYTHON_VERSION" -lt "3.6" ]; then + which python3 >& /dev/null + if [ "$?" -eq "0" ]; then + PYTHON_VERSION=`python3 --version | awk '{print $2}'` + fi +fi +if [ -z "$PYTHON_VERSION" ]; then + echo "Python 3.6 or later must be installed." + exit 1 +elif [ $(echo "${PYTHON_VERSION:0:3}<3.6" | bc) -eq 1 ]; then + echo "Python 3.6 or later must be installed. Version installed is $PYTHON_VERSION" + exit 1 +fi + +# Check if virtualenv is installed +virtualenv --version >& /dev/null +if [ "$?" -ne "0" ]; then + echo "virtualenv must be installed" + exit 1 +fi + +# Create virtualenv +VIRTUALENV_DIR="$1" +virtualenv --python=python${PYTHON_VERSION:0:3} $VIRTUALENV_DIR + +# How to activate the virtualenv +echo "To activate the virtualenv run: source $VIRTUALENV_DIR/bin/activate" \ No newline at end of file diff --git a/tutorial/functions/docs/setup/security/keyvault/README.md b/tutorial/functions/docs/setup/security/keyvault/README.md new file mode 100644 index 00000000..a9f237a3 --- /dev/null +++ b/tutorial/functions/docs/setup/security/keyvault/README.md @@ -0,0 +1,286 @@ +## Using Azure Keyvault to Store and Manage Secrets in Python Azure Functions + +One issue with service lifecycle, including functions, is how to handle secrets. One +solution is to inject the secrets into a particular script at time of deployment. +Another is to use checked in configuration files with variations based upon deployment +type. Yet another, if dealing with Docker based applications (or similar) is to +inject values as environment variables -- this is usually the cleanest option. + +However, with Azure Functions, the environment variables are a hard coded configuration +file which requires management. Another option is to use a service that protects +secrets, like Azure Keyvault. + +In the first release of functions and those not using the Linux Management Plan, MSI +or Managed Service Identity is available. What MSI does is explicitly gives your +application an Identity that can then be used to access additional services. In the +case of Keyvault, one can configure the Keyault to allow granular access to secrets +within the Keyvault, for instace Read-Only permissions on secrets. + +Since MSI is not currently supported in the version of functions we are currently +using, the functions will create what is referred to as a Service Principal (an +Azure AD entity) that has an ID and Password and we will assign that Serice +Principal access to the Keyault Secrets. +In fact, it is possible to configure access to and enable an Azure Function to use +Azure Keyvault through a service known as MSI or Managed Service Identity. In order +to enable this, one must first: + +- Create an Azure Keyvault +- Give your Azure Function application an identity +- Configure the Azure Function identity to have access to the Azure Keyvault + +Azure Keyvault has granular access policies. For this example we assume the +function just requires read access to secrets. + +Once the Keyvault is setup and configured, the function itself needs to be +configured to know the location of the Keyvault as well as the names of the +secrets to retrieve. This still requires configuring the environment, but it +does not expose the secrets outside of Keyvault. + +The script `setup_keyvault_and_app_permissions.sh` handles the three steps +above. In order to run it, it needs three commandline values: + +- Resource Group Name --> `RESOURCE_GROUP_NAME` +- Keyvault Name --> `KEYVAULT_NAME` +- Application Name --> `AZURE_FUNC_APP_NAME` + +For the example below, the values used for [this](../../setup/initial/README.md) +walkthrough are used, specifically for `RESOURCE_GROUP_NAME` and `AZURE_FUNC_APP_NAME`. +For the Keyvault Name, we will use the value `jmsfunckv` as the name. + +To launch the script: + +```bash +$ export RESOURCE_GROUP_NAME=jmsazfunc1rg +$ export KEYVAULT_NAME=jmsfunckv +$ export AZURE_FUNC_APP_NAME=jmsazfunapp1 +$ ./setup_keyvault_and_app_permissions.sh $RESOURCE_GROUP_NAME $KEYVAULT_NAME $AZURE_FUNC_APP_NAME +{ + "id": "/subscriptions/3fee811e-11bf-4b5c-9c62-a2f28b517724/resourceGroups/jmsazfunc1rg/providers/Microsoft.KeyVault/vaults/jmsfunckv1", + "location": "westus", + "name": "jmsfunckv1", + "properties": { + "accessPolicies": [ + { + "applicationId": null, + "objectId": "86a607ff-039e-497e-bab1-92247bc5ed02", + "permissions": { + "certificates": [ + "get", + "list", + "delete", + "create", + "import", + "update", + "managecontacts", + "getissuers", + "listissuers", + "setissuers", + "deleteissuers", + "manageissuers", + "recover" + ], + "keys": [ + "get", + "create", + "delete", + "list", + "update", + "import", + "backup", + "restore", + "recover" + ], + "secrets": [ + "get", + "list", + "set", + "delete", + "backup", + "restore", + "recover" + ], + "storage": [ + "get", + "list", + "delete", + "set", + "update", + "regeneratekey", + "setsas", + "listsas", + "getsas", + "deletesas" + ] + }, + "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47" + } + ], + "createMode": null, + "enablePurgeProtection": null, + "enableSoftDelete": null, + "enabledForDeployment": false, + "enabledForDiskEncryption": null, + "enabledForTemplateDeployment": null, + "networkAcls": null, + "provisioningState": "Succeeded", + "sku": { + "name": "standard" + }, + "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47", + "vaultUri": "https://jmsfunckv1.vault.azure.net/" + }, + "resourceGroup": "jmsazfunc1rg", + "tags": {}, + "type": "Microsoft.KeyVault/vaults" +} +Retrying role assignment creation: 1/36 +{ + "id": "/subscriptions/aaaaaaaa-11bf-4b5c-9c62-dddddddddddd/resourceGroups/jmsazfunc1rg/providers/Microsoft.KeyVault/vaults/jmsfunckv1", + "location": "westus", + "name": "jmsfunckv1", + "properties": { + "accessPolicies": [ + { + "applicationId": null, + "objectId": "86a607ff-039e-497e-bab1-92247bc5ed02", + "permissions": { + "certificates": [ + "get", + "list", + "delete", + "create", + "import", + "update", + "managecontacts", + "getissuers", + "listissuers", + "setissuers", + "deleteissuers", + "manageissuers", + "recover" + ], + "keys": [ + "get", + "create", + "delete", + "list", + "update", + "import", + "backup", + "restore", + "recover" + ], + "secrets": [ + "get", + "list", + "set", + "delete", + "backup", + "restore", + "recover" + ], + "storage": [ + "get", + "list", + "delete", + "set", + "update", + "regeneratekey", + "setsas", + "listsas", + "getsas", + "deletesas" + ] + }, + "tenantId": "aaaaaaaa-86f1-41af-cccc-dddddddddddd" + }, + { + "applicationId": null, + "objectId": "ad828a3b-5d98-41cf-81e0-f1530798513e", + "permissions": { + "certificates": null, + "keys": null, + "secrets": [ + "get" + ], + "storage": null + }, + "tenantId": "aaaaaaaa-86f1-41af-cccc-dddddddddddd" + } + ], + "createMode": null, + "enablePurgeProtection": null, + "enableSoftDelete": null, + "enabledForDeployment": false, + "enabledForDiskEncryption": null, + "enabledForTemplateDeployment": null, + "networkAcls": null, + "provisioningState": "Succeeded", + "sku": { + "name": "standard" + }, + "tenantId": "aaaaaaaa-86f1-41af-cccc-dddddddddddd", + "vaultUri": "https://jmsfunckv1.vault.azure.net/" + }, + "resourceGroup": "jmsazfunc1rg", + "tags": {}, + "type": "Microsoft.KeyVault/vaults" +} +[ + { + "name": "FUNCTIONS_WORKER_RUNTIME", + "slotSetting": false, + "value": "python" + }, + { + "name": "FUNCTIONS_EXTENSION_VERSION", + "slotSetting": false, + "value": "~2" + }, + { + "name": "AzureWebJobsStorage", + "slotSetting": false, + "value": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=jmsazfunc1sa;AccountKey=Foo==" + }, + { + "name": "AzureWebJobsDashboard", + "slotSetting": false, + "value": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=jmsazfunc1sa;AccountKey=Foo==" + }, + { + "name": "WEBSITE_RUN_FROM_ZIP", + "slotSetting": false, + "value": "https://jmsazfunc1sa.blob.core.windows.net/function-releases/20181008222714-7ab1234-b18b-4466-ad1a-775522548388.zip?sv=2018-03-28&sr=b&sig=Wfoo&st=2018-10-08T22%3A22%3A30Z&se=2028-10-08T22%3A27%3A30Z&sp=r" + }, + { + "name": "JMSAZFUNAPP1_ID", + "slotSetting": false, + "value": "aaaaaaaa-ea2d-4d11-b2c8-bbbbbbbbbbbb" + }, + { + "name": "JMSAZFUNAPP1_PASSWORD", + "slotSetting": false, + "value": "aaaaaaaa-483f-4bb3-926b-bbbbbbbbbbbb" + }, + { + "name": "JMSAZFUNAPP1_TENANT_ID", + "slotSetting": false, + "value": "aaaaaaaa-86f1-41af-cccc-dddddddddddd" + }, + { + "name": "APPLICATION_PREFIX", + "slotSetting": false, + "value": "JMSAZFUNAPP1" + } +] +``` + +Notice that three entried for accessing the Keyvault hae been entered into application settings +above. The Azure Function application name is `jmsazfunapp1`, therefore the entries for the settings +were generated as _[ID, PASSWORD, TENANT]. + +The application itself is stored as `APPLICATION_PREFIX` in the settings. This value can then be +used within the Python function itself to pull in the other values. + +As noted previously, when Python for Azure Functions supports MSI, this step will not be necessary +as MSI will handle access control internally. \ No newline at end of file diff --git a/tutorial/functions/docs/setup/security/keyvault/setup_keyvault_and_app_permissions.sh b/tutorial/functions/docs/setup/security/keyvault/setup_keyvault_and_app_permissions.sh new file mode 100755 index 00000000..2b760712 --- /dev/null +++ b/tutorial/functions/docs/setup/security/keyvault/setup_keyvault_and_app_permissions.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# This script creates a keyvault to be used with an Azure Function to store +# storage credentials. The script: +# +# - creates a keyvault +# - assigns and retrieves the identity of the specified function app +# - adds that identity to the permissions for they keyvault +# +# Usage: setup_keyvault_and_app_permissions.sh + +# Verify the command line args: +if [ "$#" -ne "3" ]; then + echo "Usage: setup_keyvault_and_app_permissions.sh " + exit 1 +fi + +RG_NAME=$1 +KV_NAME=$2 +APP_NAME=$3 + +# Create the key vault +az keyvault create --name $KV_NAME --resource-group $RG_NAME +if [ "$?" -ne "0" ]; then + echo "Unable to create key vault" + exit 1 +fi + +# Assign and retrieve the application identity +APP_ID = az functionapp identity assign -g $RG_NAME -n $APP_NAME +if [ "$?" -ne "0" ]; then + echo "Unable to assign identity to application" + exit 1 +fi + +# Give the application read permissions for secrets in the keyvault +az keyvault set-policy --name $KV_NAME --object-id $APP_ID --secret-permissions get +if [ "$?" -ne "0" ]; then + echo "Unable to give application permissions in keyvault" + exit 1 +fi \ No newline at end of file diff --git a/tutorial/functions/docs/setup/security/keyvault/setup_keyvault_and_app_permissions_using_sp.sh b/tutorial/functions/docs/setup/security/keyvault/setup_keyvault_and_app_permissions_using_sp.sh new file mode 100755 index 00000000..896a0e02 --- /dev/null +++ b/tutorial/functions/docs/setup/security/keyvault/setup_keyvault_and_app_permissions_using_sp.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +# This script creates a keyvault to be used with an Azure Function to store +# storage credentials. It also creates a Service Principal for the Azure +# Function and assigns read only permissions to secrets within the Keyvault. +# The script: +# +# - creates a keyvault +# - creates a service principal for the application +# - assigned permissions to the service principal into within the keyvault +# - stores the service principal ID and Password into the Azure Function Application settings +# +# Usage: setup_keyvault_and_app_permissions_with_sp.sh + +# Verify the command line args: +if [ "$#" -ne "3" ]; then + echo "Usage: setup_keyvault_and_app_permissions.sh " + exit 1 +fi + +RG_NAME=$1 +KV_NAME=$2 +APP_NAME=$3 + +# Create the key vault +az keyvault create --name $KV_NAME --resource-group $RG_NAME +if [ "$?" -ne "0" ]; then + echo "Unable to create key vault" + exit 1 +fi + +# Create a service principal for the application +APP_SP_INFO=`az ad sp create-for-rbac --name https://$APP_NAME.azurewebsites.net` +APP_SP_ID=`echo $APP_SP_INFO | jq -r .appId` +APP_SP_PASSWORD=`echo $APP_SP_INFO | jq -r .password` +APP_TENANT_ID=`echo $APP_SP_INFO | jq -r .tenant` + +# Give the service principal read permissions for secrets in the keyvault +az keyvault set-policy --name $KV_NAME --spn $APP_SP_ID --secret-permissions get +if [ "$?" -ne "0" ]; then + echo "Unable to give application permissions in keyvault" + exit 1 +fi + +# Store the values in settings +APPNAME_UPPER=`echo $APP_NAME | awk '{print toupper($0)}'` +APP_SETTING_ID_KEY=$APPNAME_UPPER"_ID" +APP_SETTING_PASSWORD_KEY=$APPNAME_UPPER"_PASSWORD" +APP_SETTING_TENANT_ID_KEY=$APPNAME_UPPER"_TENANT_ID" +az functionapp config appsettings set --name $APP_NAME --resource-group $RG_NAME --settings $APP_SETTING_ID_KEY=$APP_SP_ID $APP_SETTING_PASSWORD_KEY=$APP_SP_PASSWORD $APP_SETTING_TENANT_ID_KEY=$APP_TENANT_ID \ No newline at end of file diff --git a/tutorial/functions/examples/keyvault/service_principal/README.md b/tutorial/functions/examples/keyvault/service_principal/README.md new file mode 100644 index 00000000..3d46ece7 --- /dev/null +++ b/tutorial/functions/examples/keyvault/service_principal/README.md @@ -0,0 +1,5 @@ +## Interacting with Keyvault using Service Principal + +The included Python script shows an example of using a service principal exposed in environment variables +and using that service principal to access entries within the KeyVault. The code can easily be used in +a Python Azure Function where the config information is injected into the settings of the function application. diff --git a/tutorial/functions/examples/keyvault/service_principal/requirements.txt b/tutorial/functions/examples/keyvault/service_principal/requirements.txt new file mode 100644 index 00000000..789a3fc6 --- /dev/null +++ b/tutorial/functions/examples/keyvault/service_principal/requirements.txt @@ -0,0 +1,2 @@ +azure-keyvault>=1.1.0 +azure-common>=1.1.16 \ No newline at end of file diff --git a/tutorial/functions/examples/keyvault/service_principal/retrieve_secret.py b/tutorial/functions/examples/keyvault/service_principal/retrieve_secret.py new file mode 100644 index 00000000..affdf374 --- /dev/null +++ b/tutorial/functions/examples/keyvault/service_principal/retrieve_secret.py @@ -0,0 +1,60 @@ +import logging +import os + +import azure.functions as func +from azure.keyvault import KeyVaultClient, KeyVaultAuthentication +from azure.common.credentials import ServicePrincipalCredentials + +def get_config_from_environment(): + config = {} + config_base = os.environ.get('APPLICATION_PREFIX', None) + if config_base is None: + logging.error('APPLICATION_PREFIX must be set') + return None + config['client_id'] = os.environ.get(config_base + '_ID', None) + config['client_secret'] = os.environ.get(config_base + '_PASSWORD', None) + config['tenant_id'] = os.environ.get(config_base + '_TENANT_ID', None) + if config['client_id'] is None or config['client_secret'] is None or config['tenant_id'] is None: + logging.error(config_base + '_ID, ' + config_base + '_PASSWORD, ' + config_base + '_TENANT_ID must all be set.') + return None + config['keyault_uri'] = os.environ.get('KEYVAULT_URI', None) + if config['keyault_uri'] is None: + logging.error('KEYVAULT_URI must be set') + return None + config['storage_account_kv_base'] = os.environ.get('STORAGE_ACCOUNT_KV_BASE', None) + if config['storage_account_kv_base'] is None: + logging.error('STORAGE_ACCOUNT_KV_BASE must be set') + return None + return config + +def retrieve_keyvault_client(config): + # create the service principle credentials used to authenticate the client + credentials = ServicePrincipalCredentials(client_id=config['client_id'], + secret=config['client_secret'], + tenant=config['tenant_id']) + # create the client using the created credentials + client = KeyVaultClient(credentials) + return client + +def retrieve_storage_account_info(config): + client = retrieve_keyvault_client(config) + vaultUri = config['keyault_uri'] + saNameKey = config['storage_account_kv_base'] + '_name' + saValueKey = config['storage_account_kv_base'] + '_name' + logging.error('Vault ' + vaultUri + ', name key: ' + saNameKey + ', value key: ' + saValueKey) + sa_name_bundle = client.get_secret(config['keyault_uri'], config['storage_account_kv_base'] + '_name', secret_version="") + sa_key_bundle = client.get_secret(config['keyault_uri'], config['storage_account_kv_base'] + '_key', secret_version="") + return sa_name_bundle, sa_key_bundle + +def main(req: func.HttpRequest) -> func.HttpResponse: + logging.info('Retrieve secret from Azure Keyvault.') + + config = get_config_from_environment() + if config is None: + return func.HttpResponse( + "Configuration incorrect", + status_code=503 + ) + + name, key = retrieve_storage_account_info(config) + return func.HttpResponse(f"Got {name}, {key}") \ No newline at end of file From 64b16a7ba593564767ddaa328e9db625ba57da2f Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 26 Oct 2018 00:11:28 -0700 Subject: [PATCH 017/145] Schema updates --- db/SeedData.sql | 23 ++++++++++++++--------- db/TableSchemasV2.sql | 33 ++++++++++++++++++++++++++++----- 2 files changed, 42 insertions(+), 14 deletions(-) diff --git a/db/SeedData.sql b/db/SeedData.sql index 7a8d551c..dbda07a9 100644 --- a/db/SeedData.sql +++ b/db/SeedData.sql @@ -1,16 +1,21 @@ -- Set up the states -INSERT INTO TagState VALUES (0, 'Untagged') -INSERT INTO TagState VALUES (1, 'Tag in progress') -INSERT INTO TagState VALUES (2, 'Tagged') -INSERT INTO TagState VALUES (3, 'Abandoned') +INSERT INTO TagState VALUES (0, 'Not Ready'); +INSERT INTO TagState VALUES (1, 'Ready To Tag'); +INSERT INTO TagState VALUES (2, 'Tag In Progress'); +INSERT INTO TagState VALUES (3, 'Completed Tag'); +INSERT INTO TagState VALUES (4, 'Incomplete Tag'); +INSERT INTO TagState VALUES (5, 'Abandoned'); -- Create fake image entries INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) -VALUES ('MyTestImage.jpg', 'https://csehackstorage.blob.core.windows.net/image-to-tag/1.jpg', 40,40) +VALUES ('MyTestImage.jpg', 'https://csehackstorage.blob.core.windows.net/image-to-tag/1.jpg', 40,40); INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) -VALUES ('AnotherImage.jpg', 'https://csehackstorage.blob.core.windows.net/image-to-tag/2.jpg', 60, 80) +VALUES ('AnotherImage.jpg', 'https://csehackstorage.blob.core.windows.net/image-to-tag/2.jpg', 60, 80); +INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) +VALUES ('NonexistantImage.jpg', 'https://csehackstorage.blob.core.windows.net/image-to-tag/3.jpg', 60, 80); --- Create untagged states for the 2 fake images. Assumes the Image Ids are 1 and 2 -INSERT INTO Image_Tagging_State (ImageId,TagStateId) VALUES (1, 0) -INSERT INTO Image_Tagging_State (ImageId,TagStateId) VALUES (2, 0) +-- Create "ready to tag" states for the 2 fake images +INSERT INTO Image_Tagging_State (ImageId,TagStateId) VALUES (1, 1); +INSERT INTO Image_Tagging_State (ImageId,TagStateId) VALUES (2, 1); +INSERT INTO Image_Tagging_State (ImageId,TagStateId) VALUES (3, 1); diff --git a/db/TableSchemasV2.sql b/db/TableSchemasV2.sql index 5abaa934..6bc032f8 100644 --- a/db/TableSchemasV2.sql +++ b/db/TableSchemasV2.sql @@ -4,7 +4,9 @@ CREATE TABLE Image_Info ( OriginalImageName text NOT NULL, ImageLocation text, Height integer NOT NULL, - Width integer NOT NULL + Width integer NOT NULL, + ModifiedDtim timestamp NOT NULL default current_timestamp, + CreatedDtim timestamp NOT NULL default current_timestamp ); -- Set up table @@ -41,7 +43,26 @@ CREATE TABLE Image_Tagging_State_Audit ( ModifiedDtim timestamp NOT NULL, ArchiveDtim timestamp NOT NULL, ActionFlag integer NOT NULL -) +); + +--On insert of new image info rows we automatically create an entry in the state table +CREATE OR REPLACE FUNCTION log_image_info_insert() + RETURNS trigger AS + $BODY$ + BEGIN + INSERT INTO Image_Tagging_State(ImageId,TagStateId,ModifiedDtim,CreatedDtim) + VALUES(NEW.ImageId,0,current_timestamp,current_timestamp); + + RETURN NEW; + END; + $BODY$ + LANGUAGE plpgsql; + +DROP TRIGGER IF EXISTS image_info_insert ON Image_Info; +CREATE TRIGGER image_info_insert + AFTER INSERT ON Image_Info + FOR EACH ROW + EXECUTE PROCEDURE log_image_info_insert(); -- ActionFlag: 1 = insert, 2 = update, 3 = delete @@ -55,8 +76,9 @@ CREATE OR REPLACE FUNCTION log_image_tagging_state_insert() RETURN NEW; END; $BODY$ - LANGUAGE plpgsql + LANGUAGE plpgsql; +DROP TRIGGER IF EXISTS image_tagging_state_insert ON Image_Tagging_State; CREATE TRIGGER image_tagging_state_insert AFTER INSERT ON Image_Tagging_State FOR EACH ROW @@ -75,9 +97,9 @@ CREATE OR REPLACE FUNCTION log_image_tagging_state_changes() RETURN NEW; END; $BODY$ - LANGUAGE plpgsql - + LANGUAGE plpgsql; +DROP TRIGGER IF EXISTS image_tagging_state_changes ON Image_Tagging_State; CREATE TRIGGER image_tagging_state_changes BEFORE UPDATE ON Image_Tagging_State FOR EACH ROW @@ -88,3 +110,4 @@ CREATE TRIGGER image_tagging_state_changes + From 0cb322077b65069ccd88c5f03f20b4f340db52e9 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 26 Oct 2018 11:09:27 -0700 Subject: [PATCH 018/145] Added postgres client. Remove old version of schema --- db/TableSchemas.sql | 32 ------ db/postgres-client.py | 258 ++++++++++++++++++++++++++++++++++++++++++ functions/README.md | 1 + 3 files changed, 259 insertions(+), 32 deletions(-) delete mode 100644 db/TableSchemas.sql create mode 100644 db/postgres-client.py create mode 100644 functions/README.md diff --git a/db/TableSchemas.sql b/db/TableSchemas.sql deleted file mode 100644 index e86dda52..00000000 --- a/db/TableSchemas.sql +++ /dev/null @@ -1,32 +0,0 @@ --- Set up table -CREATE TABLE TagState ( - TagStateId integer NOT NULL, - TagStateName text NOT NULL -); --- Set up table -CREATE TABLE Image_Tags ( - TaggingId integer NOT NULL, - Class text NOT NULL, --Needed? - Confidence double precision NOT NULL, --Needed? - X_Min integer NOT NULL, - X_Max integer NOT NULL, - Y_Min integer NOT NULL, - Y_Max integer NOT NULL -); - --- Set up table and autoincrementing primary key -CREATE TABLE Image_Tagging ( - TaggingId SERIAL PRIMARY KEY, - ImageId integer NOT NULL, - TagStateId integer NOT NULL, - CreatedDtim date NOT NULL default current_timestamp, - Valid boolean --Needed? -); - --- Set up table and autoincrementing primary key -CREATE TABLE Image_Info ( - ImageId SERIAL PRIMARY KEY, - OriginalImageName text NOT NULL, - Height integer NOT NULL, - Width integer NOT NULL -); \ No newline at end of file diff --git a/db/postgres-client.py b/db/postgres-client.py new file mode 100644 index 00000000..421f4ab8 --- /dev/null +++ b/db/postgres-client.py @@ -0,0 +1,258 @@ +import sys +import string +import pg8000 +import random +import os +import time +from enum import IntEnum, unique + +@unique +class ImageTagState(IntEnum): + NOT_READY = 0 + READY_TO_TAG = 1 + TAG_IN_PROGRESS = 2 + COMPLETED_TAG = 3 + INCOMPLETE_TAG = 4 + ABANDONED = 5 + +# An entity class for a VOTT image +class ImageInfo(object): + def __init__(self, image_name, image_url, height, width): + self.image_name = image_name + self.image_url = image_url + self.height = height + self.width = width + +def get_connection(): + return __new_postgres_connection(os.environ['DB_HOST'],os.environ['DB_NAME'],os.environ['DB_USER'],os.environ['DB_PASS']) + +def __new_postgres_connection(host_name,db_name,db_user,db_pass): + return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) + +def __verify_connect_to_db(conn): + cursor = conn.cursor() + cursor.execute('select * from tagstate') + row = cursor.fetchone() + print() + while row: + print(str(row[0]) + " " + str(row[1])) + row = cursor.fetchone() + +def id_generator(size=6, chars=string.ascii_uppercase + string.digits): + return ''.join(random.choice(chars) for _ in range(size)) + +def generate_test_image_infos(count): + list_of_image_infos = [] + for i in range(count): + file_name = f'{id_generator(size=random.randint(4,10))}.jpg' + image_url = f'https://mock-storage.blob.core.windows.net/new-uploads/{file_name}' + img = ImageInfo(file_name,image_url,random.randint(100,600),random.randint(100,600)) + list_of_image_infos.append(img) + return list_of_image_infos + +def get_image_ids_for_new_images(conn, list_of_image_infos): + url_to_image_id_map = {} + if(len(list_of_image_infos) > 0): + cursor = conn.cursor() + for img in list(list_of_image_infos): + query = "INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) VALUES ('{0}','{1}',{2},{3}) RETURNING ImageId;" + cursor.execute(query.format(img.image_name,img.image_url,str(img.height),str(img.width))) + new_img_id = cursor.fetchone()[0] + url_to_image_id_map[img.image_url] = new_img_id + #__update_image(conn,[new_img_id],ImageTagState.NOT_READY) + conn.commit() + print(f"Inserted {len(url_to_image_id_map)} images to the DB") + return url_to_image_id_map + +def get_new_images(conn,number_of_images): + cursor = conn.cursor() + + # GET N existing UNTAGGED rows + selected_images_to_tag = {} + query = ("SELECT b.ImageId, b.ImageLocation, a.TagStateId FROM Image_Tagging_State a " + "JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = 1 order by " + "a.createddtim DESC limit {0}") + cursor.execute(query.format(number_of_images)) + for row in cursor: + print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) + selected_images_to_tag[str(row[0])] = str(row[1]) + + __update_image(conn,selected_images_to_tag,ImageTagState.TAG_IN_PROGRESS) + return selected_images_to_tag.values() + +def update_image_urls(conn,image_id_to_url_map): + for image_id, new_url in image_id_to_url_map.items(): + cursor = conn.cursor() + query = "UPDATE Image_Info SET ImageLocation = '{0}', ModifiedDtim = now() WHERE ImageId = {1}" + cursor.execute(query.format(new_url,image_id)) + print(f"Updated ImageId: {image_id} to new ImageLocation: {new_url}") + __update_image(conn,[image_id],ImageTagState.READY_TO_TAG) + print(f"ImageId: {image_id} to has a new state: {ImageTagState.READY_TO_TAG.name}") + conn.commit() + +def update_tagged_images(conn,list_of_image_ids): + __update_image(conn,list_of_image_ids,ImageTagState.COMPLETED_TAG) + print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.COMPLETED_TAG.name}") + +def update_untagged_images(conn,list_of_image_ids): + __update_image(conn,list_of_image_ids,ImageTagState.INCOMPLETE_TAG) + print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.INCOMPLETE_TAG.name}") + +def __update_image(conn, list_of_image_ids, new_image_tag_state): + if not isinstance(new_image_tag_state, ImageTagState): + raise TypeError('new_image_tag_state must be an instance of Direction Enum') + + if(len(list_of_image_ids) > 0): + cursor = conn.cursor() + image_ids_as_strings = [str(i) for i in list_of_image_ids] + images_to_update = '{0}'.format(', '.join(image_ids_as_strings)) + query = "UPDATE Image_Tagging_State SET TagStateId = {0}, ModifiedDtim = now() WHERE ImageId IN ({1})" + cursor.execute(query.format(new_image_tag_state,images_to_update)) + conn.commit() + #print(f"Updated {len(list_of_image_ids)} image(s) to the state {new_image_tag_state.name}") + else: + print("No images to update") + +def get_transformed_id_to_url_map(id_to_url_map): + updated_image_id_url_map = {} + for image_id, old_url in id_to_url_map.items(): + replaced_path = old_url.replace('new-uploads','perm-uploads') + file_name_to_replace = extract_image_name_no_suffix(replaced_path) + transformed_path = replaced_path.replace(file_name_to_replace,str(image_id)) + updated_image_id_url_map[image_id] = transformed_path + return updated_image_id_url_map + +def pretty_print_audit_history(conn, list_of_image_ids): + if(len(list_of_image_ids) > 0): + cursor = conn.cursor() + image_ids_as_strings = [str(i) for i in list_of_image_ids] + images_to_audit = '{0}'.format(', '.join(image_ids_as_strings)) + query = ("SELECT a.imageid,c.originalimagename, b.tagstatename, a.ArchiveDtim FROM image_tagging_state_audit a " + "JOIN tagstate b ON a.tagstateid = b.tagstateid " + "JOIN image_info c on a.imageid = c.imageid " + "WHERE a.ImageId in ({0}) " + "ORDER BY a.ImageId,ArchiveDtim ASC") + cursor.execute(query.format(images_to_audit)) + row = cursor.fetchone() + print() + if(row != None): + print("ImageId\t\tOriginalImageName\t\tTagState\t\tTransitionTime") + while row: + print(f"{str(row[0])}\t\t{str(row[1])}\t\t{str(row[2])}\t\t{str(row[3])}") + row = cursor.fetchone() + else: + print("No images!") + +def extract_image_name_no_suffix(url): + start_idx = url.rfind('/')+1 + end_idx = url.rfind('.') + return url[start_idx:end_idx] + +def extract_image_id_from_urls(list_of_image_urls): + extracted_image_ids = [] + for url in list_of_image_urls: + extracted_id = int(extract_image_name_no_suffix(url)) + extracted_image_ids.append(extracted_id) + return extracted_image_ids + +def main(): + try: + if(os.getenv("DB_HOST") is None or os.getenv("DB_USER") is None or os.getenv("DB_NAME") is None or os.getenv("DB_PASS") is None): + print("Please set environment variables for DB_HOST, DB_USER, DB_NAME, DB_PASS") + return + ################################################################# + # Below we simulate the following scenarios: + # Onboarding of new images + # Checking out images to tag + # Checking in images that have or have not been tagged + ################################################################# + + NUMBER_OF_IMAGES = 5 + + # Simulate new images from VOTT getting created in some blob store + mocked_images = generate_test_image_infos(NUMBER_OF_IMAGES) + print() + print("***\tSubject matter experts use the CLI to upload new images...") + time.sleep(1) + print() + # Simulate the data access layer creating entries in the DB for the new images + # and returning a map of the original image url to generaled image id + url_to_image_id_map = get_image_ids_for_new_images(get_connection(),mocked_images) + print() + + print("***\tBehind the scenes Az Functions move the images to a new blob location") + time.sleep(1) + print() + #Invert the above map since the client will now be using the image id as a key + image_to_url = {v: k for k, v in url_to_image_id_map.items()} + + # Simulates when the client has moved images to a new blob store container + # and creates a payload for the data access layer with a map for image id to new urls + updated_image_id_url_map = get_transformed_id_to_url_map(image_to_url) + + # Simulates the call the client makes to the data access layer + # with the new payload. Image urls get updated in the DB + update_image_urls(get_connection(),updated_image_id_url_map) + + print() + print("***\tThe newly uploaded images are now onboarded with a 'ready to tag' state. See audit history") + print() + time.sleep(1) + + # Prints the audit history of the generated of all the newly onboarded + # images involved in the simulation to prove the state tracking for onboarding. + image_ids = list(updated_image_id_url_map.keys()) + pretty_print_audit_history(get_connection(),image_ids) + time.sleep(3) + print() + + print("***\tSubject matter experts use the CLI to retrieve images in a 'ready to tag' state") + time.sleep(2) + print() + + list_of_image_urls = get_new_images(get_connection(),NUMBER_OF_IMAGES) + print() + print("***\tLet's wait for image taggers to get through the set of images....") + time.sleep(5) + print() + print("***\tDone! Though the subject matter experts didn't complete tagging all images") + time.sleep(2) + print() + + print("***\tRegardless the SMEs use the CLI to post the VOTT json results") + print() + # Since we rename the original image name to a integer that matchs the DB image id + # we need to extract out the image ids. Below this code is simulates extracting + # image ids from the VOTT JSON + extracted_image_ids = extract_image_id_from_urls(list_of_image_urls) + + # Let assume 3 images got tagged and 2 images did not. The client will + # call corresponding methods to update tagged and untagged states + completed_tagged_ids = [] + incomplete_tagged_ids = [] + for idx, img_id in enumerate(extracted_image_ids): + if(idx > 2): + incomplete_tagged_ids.append(img_id) + else: + completed_tagged_ids.append(img_id) + + update_tagged_images(get_connection(),completed_tagged_ids) + update_untagged_images(get_connection(),incomplete_tagged_ids) + + print() + print("***\tVOTT json results are posted. Lets take a look at the audit history") + time.sleep(2) + # Finally lets look at the audit history again. We expect to see some images as tagged + # and some as incomplete + print() + pretty_print_audit_history(get_connection(),image_ids) + + print() + print("Success!") + + #__verify_connect_to_db(get_connection()) + #get_unvisited_items(get_connection(),count_of_images) + except Exception as e: print(e) + +if __name__ == "__main__": + main() diff --git a/functions/README.md b/functions/README.md new file mode 100644 index 00000000..39bd93b4 --- /dev/null +++ b/functions/README.md @@ -0,0 +1 @@ +# Our functions will go here \ No newline at end of file From 415e4d320e76310da1554ddc52f2fd8726664ca8 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Fri, 26 Oct 2018 11:44:29 -0700 Subject: [PATCH 019/145] Spelling --- tutorial/functions/docs/setup/deployment/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorial/functions/docs/setup/deployment/README.md b/tutorial/functions/docs/setup/deployment/README.md index 29714486..fb01fa89 100644 --- a/tutorial/functions/docs/setup/deployment/README.md +++ b/tutorial/functions/docs/setup/deployment/README.md @@ -1,6 +1,6 @@ ## Deploying a Python Azure Function application -Assuming one has gone through the [instructions to setup the environemnt](../setup/initial/README.md) +Assuming one has gone through the [instructions to setup the environment](../setup/initial/README.md) for developing a Python based Azure Function, the skeleton applicaiton created with an `HttpTrigger` app can be deployed. @@ -50,4 +50,4 @@ $ curl https://jmsazfunapp1.azurewebsites.net/api/httpfunc1?name=foo Hello foo! ``` -At this point, you have a Python function deployed to Azure Functions. \ No newline at end of file +At this point, you have a Python function deployed to Azure Functions. From bb4b2eec718af2558658e1a5c36cf56fce151590 Mon Sep 17 00:00:00 2001 From: Andre Date: Fri, 26 Oct 2018 17:39:02 -0700 Subject: [PATCH 020/145] Addressing consistency issues --- db/postgres-client.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/db/postgres-client.py b/db/postgres-client.py index 421f4ab8..ec6bd201 100644 --- a/db/postgres-client.py +++ b/db/postgres-client.py @@ -17,9 +17,9 @@ class ImageTagState(IntEnum): # An entity class for a VOTT image class ImageInfo(object): - def __init__(self, image_name, image_url, height, width): + def __init__(self, image_name, image_location, height, width): self.image_name = image_name - self.image_url = image_url + self.image_location = image_location self.height = height self.width = width @@ -45,8 +45,8 @@ def generate_test_image_infos(count): list_of_image_infos = [] for i in range(count): file_name = f'{id_generator(size=random.randint(4,10))}.jpg' - image_url = f'https://mock-storage.blob.core.windows.net/new-uploads/{file_name}' - img = ImageInfo(file_name,image_url,random.randint(100,600),random.randint(100,600)) + image_location = f'https://mock-storage.blob.core.windows.net/new-uploads/{file_name}' + img = ImageInfo(file_name,image_location,random.randint(100,600),random.randint(100,600)) list_of_image_infos.append(img) return list_of_image_infos @@ -56,10 +56,10 @@ def get_image_ids_for_new_images(conn, list_of_image_infos): cursor = conn.cursor() for img in list(list_of_image_infos): query = "INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) VALUES ('{0}','{1}',{2},{3}) RETURNING ImageId;" - cursor.execute(query.format(img.image_name,img.image_url,str(img.height),str(img.width))) + cursor.execute(query.format(img.image_name,img.image_location,str(img.height),str(img.width))) new_img_id = cursor.fetchone()[0] - url_to_image_id_map[img.image_url] = new_img_id - #__update_image(conn,[new_img_id],ImageTagState.NOT_READY) + url_to_image_id_map[img.image_location] = new_img_id + #__update_images(conn,[new_img_id],ImageTagState.NOT_READY) conn.commit() print(f"Inserted {len(url_to_image_id_map)} images to the DB") return url_to_image_id_map @@ -77,7 +77,7 @@ def get_new_images(conn,number_of_images): print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) selected_images_to_tag[str(row[0])] = str(row[1]) - __update_image(conn,selected_images_to_tag,ImageTagState.TAG_IN_PROGRESS) + __update_images(conn,selected_images_to_tag,ImageTagState.TAG_IN_PROGRESS) return selected_images_to_tag.values() def update_image_urls(conn,image_id_to_url_map): @@ -86,19 +86,19 @@ def update_image_urls(conn,image_id_to_url_map): query = "UPDATE Image_Info SET ImageLocation = '{0}', ModifiedDtim = now() WHERE ImageId = {1}" cursor.execute(query.format(new_url,image_id)) print(f"Updated ImageId: {image_id} to new ImageLocation: {new_url}") - __update_image(conn,[image_id],ImageTagState.READY_TO_TAG) + __update_images(conn,[image_id],ImageTagState.READY_TO_TAG) print(f"ImageId: {image_id} to has a new state: {ImageTagState.READY_TO_TAG.name}") conn.commit() def update_tagged_images(conn,list_of_image_ids): - __update_image(conn,list_of_image_ids,ImageTagState.COMPLETED_TAG) + __update_images(conn,list_of_image_ids,ImageTagState.COMPLETED_TAG) print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.COMPLETED_TAG.name}") def update_untagged_images(conn,list_of_image_ids): - __update_image(conn,list_of_image_ids,ImageTagState.INCOMPLETE_TAG) + __update_images(conn,list_of_image_ids,ImageTagState.INCOMPLETE_TAG) print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.INCOMPLETE_TAG.name}") -def __update_image(conn, list_of_image_ids, new_image_tag_state): +def __update_images(conn, list_of_image_ids, new_image_tag_state): if not isinstance(new_image_tag_state, ImageTagState): raise TypeError('new_image_tag_state must be an instance of Direction Enum') From a604a393a04cb0c5bcda2567a6c6bc2c71ed2a34 Mon Sep 17 00:00:00 2001 From: jim spring Date: Sun, 28 Oct 2018 03:26:59 +0000 Subject: [PATCH 021/145] initial checkin --- functions/README.md | 3 + functions/pipeline/__init__.py | 0 functions/pipeline/download/__init__.py | 30 ++++++++++ functions/pipeline/download/function.json | 19 +++++++ functions/pipeline/download/host.json | 3 + functions/pipeline/host.json | 3 + functions/pipeline/local.settings.json | 7 +++ functions/pipeline/requirements.txt | 7 +++ functions/pipeline/shared/__init__.py | 0 functions/pipeline/shared/data_access.py | 68 +++++++++++++++++++++++ 10 files changed, 140 insertions(+) create mode 100644 functions/README.md create mode 100644 functions/pipeline/__init__.py create mode 100644 functions/pipeline/download/__init__.py create mode 100644 functions/pipeline/download/function.json create mode 100644 functions/pipeline/download/host.json create mode 100644 functions/pipeline/host.json create mode 100644 functions/pipeline/local.settings.json create mode 100644 functions/pipeline/requirements.txt create mode 100644 functions/pipeline/shared/__init__.py create mode 100644 functions/pipeline/shared/data_access.py diff --git a/functions/README.md b/functions/README.md new file mode 100644 index 00000000..54b8fbdc --- /dev/null +++ b/functions/README.md @@ -0,0 +1,3 @@ +## Deploying functions to a Azure Function App and Add Settings + +This tutorial talks about how to deploy a function to an Azure Function Application. \ No newline at end of file diff --git a/functions/pipeline/__init__.py b/functions/pipeline/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py new file mode 100644 index 00000000..910a7aef --- /dev/null +++ b/functions/pipeline/download/__init__.py @@ -0,0 +1,30 @@ +import logging + +import azure.functions as func +import json +import os +from shared import data_access as DataAccess + +def main(req: func.HttpRequest) -> func.HttpResponse: + #logging.info('Python HTTP trigger function processed a request.') + + imageCount = req.params.get('imageCount') + # setup response object + headers = { + "content-type": "application/json" + } + if not imageCount: + return func.HttpResponse( + status_code=400, + headers=headers, + body=json.dumps({"error": "image count not specified"}) + ) + else: + # setup response object + images = DataAccess.get_unvisited_items(imageCount) + content = json.dumps(images) + return func.HttpResponse( + status_code=200, + headers=headers, + body=content + ) \ No newline at end of file diff --git a/functions/pipeline/download/function.json b/functions/pipeline/download/function.json new file mode 100644 index 00000000..f24e4f1d --- /dev/null +++ b/functions/pipeline/download/function.json @@ -0,0 +1,19 @@ +{ + "scriptFile": "__init__.py", + "bindings": [ + { + "authLevel": "anonymous", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "get" + ] + }, + { + "type": "http", + "direction": "out", + "name": "$return" + } + ] +} diff --git a/functions/pipeline/download/host.json b/functions/pipeline/download/host.json new file mode 100644 index 00000000..81e35b7b --- /dev/null +++ b/functions/pipeline/download/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" +} \ No newline at end of file diff --git a/functions/pipeline/host.json b/functions/pipeline/host.json new file mode 100644 index 00000000..83a92167 --- /dev/null +++ b/functions/pipeline/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" +} \ No newline at end of file diff --git a/functions/pipeline/local.settings.json b/functions/pipeline/local.settings.json new file mode 100644 index 00000000..6c204881 --- /dev/null +++ b/functions/pipeline/local.settings.json @@ -0,0 +1,7 @@ +{ + "IsEncrypted": false, + "Values": { + "FUNCTIONS_WORKER_RUNTIME": "python", + "AzureWebJobsStorage": "{AzureWebJobsStorage}" + } +} \ No newline at end of file diff --git a/functions/pipeline/requirements.txt b/functions/pipeline/requirements.txt new file mode 100644 index 00000000..654e08aa --- /dev/null +++ b/functions/pipeline/requirements.txt @@ -0,0 +1,7 @@ +azure-functions==1.0.0a5 +azure-functions-worker==1.0.0a6 +grpcio==1.14.2 +grpcio-tools==1.14.2 +protobuf==3.6.1 +six==1.11.0 +pg8000==1.12.3 diff --git a/functions/pipeline/shared/__init__.py b/functions/pipeline/shared/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/functions/pipeline/shared/data_access.py b/functions/pipeline/shared/data_access.py new file mode 100644 index 00000000..8d3a8420 --- /dev/null +++ b/functions/pipeline/shared/data_access.py @@ -0,0 +1,68 @@ +import logging +import json +import azure.functions as func # Getting an error - E0401: Unable to import +import os +import pg8000 # Getting an error - E0401: Unable to import + +# Constants +untagged_state = 0 +tagging_state = 1 +tagged_state = 2 + + +host = os.getenv('DB_HOST', None) +user = os.getenv('DB_USER', None) +dbname = os.getenv('DB_NAME', None) +password = os.getenv('DB_PASS', None) + +# Creates rows in the database for new images uploaded to blob storage. +# Requires: TBD +# Receives: List of new image names, user id of the user performing the upload +# Returns: None. +# TODO: Clarify if input list is a list of original image names or new ImageIds +# Code: + +# get_unvisited_items +# # Retrieves a number of untagged images for the user to tag. +# Requires: Assumes that the CLI (the requestor) handles setting a cap on the number of images that may be requested. +# For now, assumes the user wants to use a LIFO strategy, and pull newest images first. +# Receives: num_images = Number of images the user wants to download for tagging +# Returns: List of URLs to the selected images (in blob storage) that need to be tagged. Status for these images is updated to "tagging" status in the DB. +# TODO: Future inputs: Strategy for selecting images (enum), user_id for tracking which user made the request (string) +def get_unvisited_items(num_images): + # Connect to database + # TODO: Add error handling + db = pg8000.connect(user, host=host, unix_sock=None, port=5432, database=dbname, password=password, ssl=True, timeout=None, application_name=None) + cursor = db.cursor() + + # From the database, select the number of images the user requested where tag state is "untagged" + cursor.execute("SELECT b.ImageId, b.OriginalImageName, a.TagStateId, b.ImageLocation FROM Image_Tagging_State a JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = {0} order by a.createddtim DESC limit {1}".format(untagged_state, num_images)) + + # Put the ImageId and ImageLocation (URL) for the images to tag into a dictionary named selected_images_to_tag + selected_images_to_tag = {} + for row in cursor: + print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) + selected_images_to_tag[str(row[0])] = str(row[3]) + + # If there are images in the list, update the tagging state for the selected images from "untagged" to "tagging" state + # If there are no images left to tag, output a message to the user + # TODO: Separate this code out into an "update" helper function? + if(len(selected_images_to_tag) > 0): + images_to_update = '{0}'.format(', '.join(selected_images_to_tag.keys())) + cursor.execute("UPDATE Image_Tagging_State SET TagStateId = {0} WHERE ImageId IN ({1})".format(tagging_state,images_to_update)) + db.commit() + print(f"Updated {len(selected_images_to_tag)} images to the state {tagging_state}") + else: + print("No images untagged images left!") + + # Return the list of URLs to the user (values in the selected_images_to_tag dictionary) + return list(selected_images_to_tag.values()) + +# TODO: Create helper function to update status of a list of images in the DB from one state to another. + +# get_unvisited_items (count of items, strategy enum, user id) +# Returns a list of image locations +# update_visited_items (List of visited image names, user id) +# void +# update_unvisited_items (List of unvisited image names, user id) +# Void From e5678ae93a17dbcc61661550fcdd9d60ac1cb35f Mon Sep 17 00:00:00 2001 From: jim spring Date: Sun, 28 Oct 2018 03:54:27 +0000 Subject: [PATCH 022/145] add a readme --- functions/README.md | 210 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 209 insertions(+), 1 deletion(-) diff --git a/functions/README.md b/functions/README.md index 54b8fbdc..d0610ecb 100644 --- a/functions/README.md +++ b/functions/README.md @@ -1,3 +1,211 @@ ## Deploying functions to a Azure Function App and Add Settings -This tutorial talks about how to deploy a function to an Azure Function Application. \ No newline at end of file +This tutorial talks about how to deploy a function to an Azure Function Application. For +the example, we will use the function(s) within the `pipeline` application located in this +directory. + +In order to set up the Azure Function Application, we will use [this](../tutorial/functions/docs/setup/initial/create_function_app.sh) script. It should be noted, that +this example also assumes that one has properly setup their environment for working with +Azure Functions, including installing the Azure Function Core Tools. That setup is discussed [here](../tutorial/functions/docs/setup/initial/README.md). + +### Creating the application + +Leveraging the `create_function_app.sh` script the application will be created for +us. The script requires four pieces of information: + +- Resource group name +- Resource group location +- Storage account name for the function application +- The name of the function application itself + +Note, the resource group as well as the storage account will be created by the script. + +Running the script: + +```bash +export RESOURCE_GROUP=jmsactlrnrg +export RESOURCE_GROUP_LOCATION=westus +export STORAGE_ACCOUNT_NAME=jmslrnpipe +export FUNCTION_APP_NAME=jmsactlrnpipeline + +jims@functional:~/code/src/github/jmspring/active-learning-detect$ ./tutorial/functions/docs/setup/initial/create_function_app.sh $RESOURCE_GROUP $RESOURCE_GROUP_LOCATION $STORAGE_ACCOUNT_NAME $FUNCTION_APP_NAME +{ + "id": "/subscriptions/3fee811e-11bf-abcd-9c62-adbeef517724/resourceGroups/jmsactlrnrg", + "location": "westus", + "managedBy": null, + "name": "jmsactlrnrg", + "properties": { + "provisioningState": "Succeeded" + }, + "tags": null +} +{ + "accessTier": null, + "creationTime": "2018-10-28T03:36:16.816514+00:00", + "customDomain": null, + "enableHttpsTrafficOnly": false, + "encryption": { + "keySource": "Microsoft.Storage", + "keyVaultProperties": null, + "services": { + "blob": { + "enabled": true, + "lastEnabledTime": "2018-10-28T03:36:16.894642+00:00" + }, + "file": { + "enabled": true, + "lastEnabledTime": "2018-10-28T03:36:16.894642+00:00" + }, + "queue": null, + "table": null + } + }, + "id": "/subscriptions/3fee811e-11bf-abcd-9c62-adbeef517724/resourceGroups/jmsactlrnrg/providers/Microsoft.Storage/storageAccounts/jmslrnpipe", + "identity": null, + "isHnsEnabled": null, + "kind": "Storage", + "lastGeoFailoverTime": null, + "location": "westus", + "name": "jmslrnpipe", + "networkRuleSet": { + "bypass": "AzureServices", + "defaultAction": "Allow", + "ipRules": [], + "virtualNetworkRules": [] + }, + "primaryEndpoints": { + "blob": "https://jmslrnpipe.blob.core.windows.net/", + "dfs": null, + "file": "https://jmslrnpipe.file.core.windows.net/", + "queue": "https://jmslrnpipe.queue.core.windows.net/", + "table": "https://jmslrnpipe.table.core.windows.net/", + "web": null + }, + "primaryLocation": "westus", + "provisioningState": "Succeeded", + "resourceGroup": "jmsactlrnrg", + "secondaryEndpoints": null, + "secondaryLocation": null, + "sku": { + "capabilities": null, + "kind": null, + "locations": null, + "name": "Standard_LRS", + "resourceType": null, + "restrictions": null, + "tier": "Standard" + }, + "statusOfPrimary": "available", + "statusOfSecondary": null, + "tags": {}, + "type": "Microsoft.Storage/storageAccounts" +} +Your Linux, cosumption plan, function app 'jmsactlrnpipeline' has been successfully created but is not active until content is published usingAzure Portal or the Functions Core Tools. +``` + +At this point, you have an Azure Function Application to which you can publish your functions to. + +### Configuring the Application Environment + +In a number of cases, one will need to set environment variables for their azure function to use. The following +shows setting up the required variables for accessing a Postgres database that the data layer of the `pipeline` +application uses. + +```bash +export DB_HOST="" +export DB_USER="" + }, + { + "name": "AzureWebJobsDashboard", + "slotSetting": false, + "value": "" + }, + { + "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", + "slotSetting": false, + "value": "" + }, + { + "name": "WEBSITE_CONTENTSHARE", + "slotSetting": false, + "value": "jmsactlrnpipeline" + }, + { + "name": "DB_HOST", + "slotSetting": false, + "value": " + }, + { + "name": "DB_USER", + "slotSetting": false, + "value": "" + }, + { + "name": "DB_PASS", + "slotSetting": false, + "value": "" + } +] +``` + +### Deploying a function to the application + +Once you have your configuration, it is time to deploy the application itself. You use the +Azure Function Core Utils tools to publish your functions into the Azure Function Application +created and configured above. That looks like: + +```bash +jims$ func azure functionapp publish $FUNCTION_APP_NAME --force +Getting site publishing info... +pip download -r /home/jims/code/src/github/jmspring/active-learning-detect/functions/pipeline/requirements.txt --dest /tmp/azureworkertczxe16l +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworker40w5hod2 azure_functions==1.0.0a5 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworker40w5hod2 azure_functions_worker==1.0.0a6 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworker40w5hod2 pg8000==1.12.3 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworker40w5hod2 setuptools==40.5.0 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworker40w5hod2 grpcio_tools==1.14.2 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworker40w5hod2 six==1.11.0 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworker40w5hod2 grpcio==1.14.2 +pip download --no-deps --only-binary :all: --platform manylinux1_x86_64 --python-version 36 --implementation cp --abi cp36m --dest /tmp/azureworker40w5hod2 protobuf==3.6.1 + +Preparing archive... +Uploading content... +Upload completed successfully. +Deployment completed successfully. +Removing 'WEBSITE_CONTENTSHARE' from 'jmsactlrnpipeline' +Removing 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING' from 'jmsactlrnpipeline' +Syncing triggers... +Functions in jmsactlrnpipeline: + download - [httpTrigger] + Invoke url: https://jmsactlrnpipeline.azurewebsites.net/api/download?code=AARPr45D5K6AIEWv8bEaqWalSaddrUzd4aydOxmhSPauGUrsPvzw== +``` + +Showing our function running: + +```bash +curl "https://jmsactlrnpipeline.azurewebsites.net/api/download?code=AARPr45D5K6AIEWv8bEaqWalSaddrUzd4aydOxmhSPauGUrsPvzw==&imageCount=1" +["https://csehackstorage.blob.core.windows.net/image-to-tag/1.jpg"] +``` \ No newline at end of file From d87a57f6b7d613e7a08d71ed2aa99efa6e0f7fa6 Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 29 Oct 2018 18:56:05 -0700 Subject: [PATCH 023/145] Added a postgresql azure deployment script. Added a readme. --- db/Deploy-Postgres-DB.sh | 67 ++++++++++++++++++++++++++++++++++++++++ db/README.md | 21 +++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 db/Deploy-Postgres-DB.sh create mode 100644 db/README.md diff --git a/db/Deploy-Postgres-DB.sh b/db/Deploy-Postgres-DB.sh new file mode 100644 index 00000000..a8cf8723 --- /dev/null +++ b/db/Deploy-Postgres-DB.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +#Exit on error +set -e + +ResourceGroup=$1 +ServerName=$2 +DBUserName=$3 +Local_IP_Address=$(curl -s http://whatismyip.akamai.com/) + +# Check if any of the args are empty +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then + echo "Expected usage: 'sh $0 (Azure Resource Group Name) (PostGres ServerName) (PostGres UserName)'" + exit 1 +fi + +echo +echo "Entire a password for Postgres user '$DBUserName@$ServerName':" +read -s DBPassword +echo + +# See Azure password policy: https://docs.microsoft.com/en-us/previous-versions/azure/jj943764(v=azure.100) +PasswordLength=${#DBPassword} +if [ $PasswordLength -lt 8 -o $PasswordLength -gt 16 ]; then + echo "Password must be between 8 to 16 characters" + exit 1 +fi + +if [[ "$DBPassword" != *[A-Z]* || "$DBPassword" != *[a-z]* ]]; then + echo "Password must have upper and lower case characters" + exit 1 +fi + +if [[ "$DBPassword" != *[0-9]* ]]; then + echo "Password must contain numbers" + exit 1 +fi + +echo +echo "Create a resource group (if it does not exist for the current subscription)" +echo +az group create \ + --name $ResourceGroup \ + --location westus + +echo +echo "Create an Azure Postgres host on the cheapest SKU. This may take SEVERAL MINUTES..." +echo +az postgres server create \ + --resource-group $ResourceGroup \ + --name $ServerName \ + --location westus \ + --admin-user $DBUserName \ + --admin-password $DBPassword \ + --sku-name B_Gen5_2 \ + --version 9.6 \ + +echo +echo "Create a firewall rule for the local host IP address $Local_IP_Address" +echo +RuleDate=$(date +%F_%H-%M-%S) +az postgres server firewall-rule create \ + --resource-group $ResourceGroup \ + --server-name $ServerName \ + --name "AllowMyIP_$RuleDate" \ + --start-ip-address $Local_IP_Address \ + --end-ip-address $Local_IP_Address \ No newline at end of file diff --git a/db/README.md b/db/README.md new file mode 100644 index 00000000..fe3dbd5e --- /dev/null +++ b/db/README.md @@ -0,0 +1,21 @@ +# Getting Starting With Active Learning Database Infrastructure + +This directory contains database schemas, deployment script, and test data generation. + +## Creating a PostgreSQL DB on Azure + +The _Deploy-Postgres-DB_ shell script will deploy a [PostgreSQL database in Azure](https://azure.microsoft.com/en-us/services/postgresql/). The script assumes you have the [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) installed and are already [logged into the CLI](https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli?view=azure-cli-latest) with the subscription you wish to deploy to. + +Once the above is ready run the command below by replacing the 3 arguments + +```sh +$ sh Deploy-Postgres-DB.sh RESOURCE_GROUP_NAME POSTGRES_SERVER_NAME POSTGRES_USER +``` + +## Deploying table schemas to your PostgreSQL DB on Azure + +TODO + +## Running an integration test on PostgreSQL DB on Azure + +TODO \ No newline at end of file From d1e9703dc7616296dfcae9c09db7ca552e9e1c16 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Fri, 26 Oct 2018 16:03:30 -0700 Subject: [PATCH 024/145] Adding Upload Function and sample test json --- functions/uploadFunc.py | 47 ++++ test/test_vott_output.json | 555 +++++++++++++++++++++++++++++++++++++ 2 files changed, 602 insertions(+) create mode 100644 functions/uploadFunc.py create mode 100644 test/test_vott_output.json diff --git a/functions/uploadFunc.py b/functions/uploadFunc.py new file mode 100644 index 00000000..aa97bcd4 --- /dev/null +++ b/functions/uploadFunc.py @@ -0,0 +1,47 @@ +import os +import json + +def getId(filename): + pathComponents = filename.split('/') + filename = pathComponents[-1] + return int(filename.split('.')[0]) + +def processVottJson(vottJson): + frameTagDict = vottJson['frames'] + + # Scrub filename keys to only have integer Id, drop path and file extensions. + tagsByIdDict = {} + for oldkey in sorted(frameTagDict.keys()): + tagsByIdDict[getId(oldkey)] = frameTagDict[oldkey] + allImageIds = tagsByIdDict.keys() + + # Do the same with visitedFrames + visitedIds = sorted(vottJson['visitedFrames']) + for index, filename in enumerate(visitedIds): + visitedIds[index] = getId(filename) + + # Unvisisted imageIds + notVisitedIds = sorted(list(set(allImageIds) - set(visitedIds))) + + return { + "totalNumImages" : len(allImageIds), + "numImagesVisted" : len(visitedIds), + "numImagesNotVisted" : len(notVisitedIds), + "imagesVisited" : visitedIds, + "imageNotVisisted" : notVisitedIds + } + +try: + vottJson = json.loads(open(os.environ['req']).read()) + + stats = processVottJson(vottJson) + # TODO: Call interface to update imagesVisited to 'COMPLETED_TAG' state and imageNotVisisted to 'INCOMPLETE_TAG' + + response = open(os.environ['res'], 'w') + response.write(str(stats)) + response.close() +except Exception as e: + response = open(os.environ['res'], 'w') + # TODO: Add error status code and proper message? + response.write(str(e)) + response.close() \ No newline at end of file diff --git a/test/test_vott_output.json b/test/test_vott_output.json new file mode 100644 index 00000000..b600dfa1 --- /dev/null +++ b/test/test_vott_output.json @@ -0,0 +1,555 @@ +{ + "frames": { + "1012.png": [ + { + "x1": 39.9155672823219, + "y1": 301.0251256281407, + "x2": 65.66754617414249, + "y2": 328.04020100502515, + "width": 488, + "height": 512, + "box": { + "x1": 39.9155672823219, + "y1": 301.0251256281407, + "x2": 65.66754617414249, + "y2": 328.04020100502515 + }, + "UID": "8d041221", + "id": 0, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 392.0738786279683, + "y1": 346.0502512562814, + "x2": 420.401055408971, + "y2": 373.06532663316585, + "width": 488, + "height": 512, + "box": { + "x1": 392.0738786279683, + "y1": 346.0502512562814, + "x2": 420.401055408971, + "y2": 373.06532663316585 + }, + "UID": "fa3ce672", + "id": 1, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + } + ], + "1013.png": [ + { + "x1": 122.96569920844327, + "y1": 122.21105527638191, + "x2": 171.89445910290237, + "y2": 191.678391959799, + "width": 488, + "height": 512, + "box": { + "x1": 122.96569920844327, + "y1": 122.21105527638191, + "x2": 171.89445910290237, + "y2": 191.678391959799 + }, + "UID": "a197e6f2", + "id": 2, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 65.02374670184696, + "y1": 433.52763819095475, + "x2": 112.66490765171504, + "y2": 459.2562814070352, + "width": 488, + "height": 512, + "box": { + "x1": 65.02374670184696, + "y1": 433.52763819095475, + "x2": 112.66490765171504, + "y2": 459.2562814070352 + }, + "UID": "29fc21aa", + "id": 3, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + }, + { + "x1": 152.58047493403694, + "y1": 437.38693467336685, + "x2": 191.2084432717678, + "y2": 505.5678391959799, + "width": 488, + "height": 512, + "box": { + "x1": 152.58047493403694, + "y1": 437.38693467336685, + "x2": 191.2084432717678, + "y2": 505.5678391959799 + }, + "UID": "b302a42c", + "id": 4, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 3 + }, + { + "x1": 347.00791556728234, + "y1": 393.00502512562815, + "x2": 372.7598944591029, + "y2": 418.73366834170855, + "width": 488, + "height": 512, + "box": { + "x1": 347.00791556728234, + "y1": 393.00502512562815, + "x2": 372.7598944591029, + "y2": 418.73366834170855 + }, + "UID": "d75d3848", + "id": 5, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 4 + }, + { + "x1": 374.0474934036939, + "y1": 439.95979899497485, + "x2": 399.79947229551453, + "y2": 465.6884422110553, + "width": 488, + "height": 512, + "box": { + "x1": 374.0474934036939, + "y1": 439.95979899497485, + "x2": 399.79947229551453, + "y2": 465.6884422110553 + }, + "UID": "0cf73292", + "id": 6, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 5 + } + ], + "1014.png": [ + { + "x1": 216.9604221635884, + "y1": 203.25628140703517, + "x2": 242.71240105540898, + "y2": 230.2713567839196, + "width": 488, + "height": 512, + "box": { + "x1": 216.9604221635884, + "y1": 203.25628140703517, + "x2": 242.71240105540898, + "y2": 230.2713567839196 + }, + "UID": "2e9f323c", + "id": 7, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 300.65435356200527, + "y1": 364.0603015075377, + "x2": 326.4063324538259, + "y2": 389.7889447236181, + "width": 488, + "height": 512, + "box": { + "x1": 300.65435356200527, + "y1": 364.0603015075377, + "x2": 326.4063324538259, + "y2": 389.7889447236181 + }, + "UID": "8bf4dd37", + "id": 8, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + } + ], + "1015.png": [ + { + "x1": 300.65435356200527, + "y1": 300.3819095477387, + "x2": 326.4063324538259, + "y2": 326.1105527638191, + "width": 488, + "height": 512, + "box": { + "x1": 300.65435356200527, + "y1": 300.3819095477387, + "x2": 326.4063324538259, + "y2": 326.1105527638191 + }, + "UID": "80c5ac63", + "id": 9, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 226.6174142480211, + "y1": 402.6532663316583, + "x2": 252.3693931398417, + "y2": 429.6683417085427, + "width": 488, + "height": 512, + "box": { + "x1": 226.6174142480211, + "y1": 402.6532663316583, + "x2": 252.3693931398417, + "y2": 429.6683417085427 + }, + "UID": "b559e9b2", + "id": 10, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + } + ], + "1016.png": [ + { + "x1": 156.44327176781002, + "y1": 236.7035175879397, + "x2": 204.0844327176781, + "y2": 307.4572864321608, + "width": 488, + "height": 512, + "box": { + "x1": 156.44327176781002, + "y1": 236.7035175879397, + "x2": 204.0844327176781, + "y2": 307.4572864321608 + }, + "UID": "5368d1fa", + "id": 11, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 375.9788918205805, + "y1": 281.7286432160804, + "x2": 401.73087071240104, + "y2": 307.4572864321608, + "width": 488, + "height": 512, + "box": { + "x1": 375.9788918205805, + "y1": 281.7286432160804, + "x2": 401.73087071240104, + "y2": 307.4572864321608 + }, + "UID": "a603a804", + "id": 12, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + }, + { + "x1": 383.70448548812664, + "y1": 461.8291457286432, + "x2": 409.45646437994725, + "y2": 487.5577889447236, + "width": 488, + "height": 512, + "box": { + "x1": 383.70448548812664, + "y1": 461.8291457286432, + "x2": 409.45646437994725, + "y2": 487.5577889447236 + }, + "UID": "e953b706", + "id": 13, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 3 + }, + { + "x1": 146.1424802110818, + "y1": 441.2462311557789, + "x2": 188.63324538258576, + "y2": 510.713567839196, + "width": 488, + "height": 512, + "box": { + "x1": 146.1424802110818, + "y1": 441.2462311557789, + "x2": 188.63324538258576, + "y2": 510.713567839196 + }, + "UID": "29a0b420", + "id": 14, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 4 + }, + { + "x1": 382.4168865435356, + "y1": 419.37688442211055, + "x2": 408.1688654353562, + "y2": 445.10552763819095, + "width": 488, + "height": 512, + "box": { + "x1": 382.4168865435356, + "y1": 419.37688442211055, + "x2": 408.1688654353562, + "y2": 445.10552763819095 + }, + "UID": "73e1a76e", + "id": 15, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 5 + } + ], + "1017.png": [ + { + "x1": 78.54353562005277, + "y1": 356.34170854271355, + "x2": 104.29551451187335, + "y2": 385.92964824120605, + "width": 488, + "height": 512, + "box": { + "x1": 78.54353562005277, + "y1": 356.34170854271355, + "x2": 104.29551451187335, + "y2": 385.92964824120605 + }, + "UID": "da911bba", + "id": 17, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 433.9208443271768, + "y1": 319.035175879397, + "x2": 459.67282321899734, + "y2": 344.7638190954774, + "width": 488, + "height": 512, + "box": { + "x1": 433.9208443271768, + "y1": 319.035175879397, + "x2": 459.67282321899734, + "y2": 344.7638190954774 + }, + "UID": "74bd9c6d", + "id": 18, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + }, + { + "x1": 50.21635883905013, + "y1": 155.65829145728642, + "x2": 75.96833773087072, + "y2": 181.38693467336682, + "width": 488, + "height": 512, + "box": { + "x1": 50.21635883905013, + "y1": 155.65829145728642, + "x2": 75.96833773087072, + "y2": 181.38693467336682 + }, + "UID": "ee2edadf", + "id": 19, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 3 + }, + { + "x1": 49.57255936675462, + "y1": 221.26633165829145, + "x2": 75.3245382585752, + "y2": 246.99497487437185, + "width": 488, + "height": 512, + "box": { + "x1": 49.57255936675462, + "y1": 221.26633165829145, + "x2": 75.3245382585752, + "y2": 246.99497487437185 + }, + "UID": "ffe26cb3", + "id": 20, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 4 + } + ], + "1018.png": [ + { + "x1": 74.03693931398416, + "y1": 301.6683417085427, + "x2": 99.78891820580475, + "y2": 327.3969849246231, + "width": 488, + "height": 512, + "box": { + "x1": 74.03693931398416, + "y1": 301.6683417085427, + "x2": 99.78891820580475, + "y2": 327.3969849246231 + }, + "UID": "db0af2df", + "id": 16, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + } + ], + "1019.png": [], + "1020.png": [], + "1021.png": [], + "1022.png": [], + "1023.png": [], + "1024.png": [ + { + "x1": 318.6807387862797, + "y1": 248.28140703517587, + "x2": 344.4327176781003, + "y2": 274.0100502512563, + "width": 488, + "height": 512, + "box": { + "x1": 318.6807387862797, + "y1": 248.28140703517587, + "x2": 344.4327176781003, + "y2": 274.0100502512563 + }, + "UID": "7ee346bf", + "id": 21, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 0, + "y1": 272.08040201005025, + "x2": 224.68601583113457, + "y2": 297.80904522613065, + "width": 488, + "height": 512, + "box": { + "x1": 0, + "y1": 272.08040201005025, + "x2": 224.68601583113457, + "y2": 297.80904522613065 + }, + "UID": "ab7e3233", + "id": 22, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + }, + { + "x1": 0, + "y1": 75.89949748743719, + "x2": 85.62532981530343, + "y2": 486.2713567839196, + "width": 488, + "height": 512, + "box": { + "x1": 0, + "y1": 75.89949748743719, + "x2": 85.62532981530343, + "y2": 486.2713567839196 + }, + "UID": "392e1696", + "id": 23, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 3 + } + ], + "1025.png": [], + "1026.png": [], + "1027.png": [], + "1028.png": [] + }, + "framerate": "1", + "inputTags": "ataggu", + "suggestiontype": "track", + "scd": false, + "visitedFrames": [ + "1012.png", + "1013.png", + "1014.png", + "1015.png", + "1016.png", + "1017.png", + "1018.png", + "1019.png", + "1020.png", + "1021.png", + "1022.png", + "1023.png", + "1024.png" + ], + "tag_colors": [ + "#0fded8" + ] +} \ No newline at end of file From dc1dfb743c5cbab9e1f90bf6a368b6e0ea72425f Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Mon, 29 Oct 2018 14:39:00 -0700 Subject: [PATCH 025/145] renaming file, adding function azure definition, pep8 --- functions/upload/function.json | 20 ++++++++++++++ functions/upload/run.py | 49 ++++++++++++++++++++++++++++++++++ functions/uploadFunc.py | 47 -------------------------------- 3 files changed, 69 insertions(+), 47 deletions(-) create mode 100644 functions/upload/function.json create mode 100644 functions/upload/run.py delete mode 100644 functions/uploadFunc.py diff --git a/functions/upload/function.json b/functions/upload/function.json new file mode 100644 index 00000000..d841bddd --- /dev/null +++ b/functions/upload/function.json @@ -0,0 +1,20 @@ +{ + "bindings": [ + { + "authLevel": "anonymous", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "post", + "put" + ] + }, + { + "type": "http", + "direction": "out", + "name": "res" + } + ], + "disabled": false + } \ No newline at end of file diff --git a/functions/upload/run.py b/functions/upload/run.py new file mode 100644 index 00000000..ce8d8891 --- /dev/null +++ b/functions/upload/run.py @@ -0,0 +1,49 @@ +import os +import json + +def get_id_from_filename(filename): + path_components = filename.split('/') + filename = path_components[-1] + return int(filename.split('.')[0]) + +def process_vott_json(json): + all_frame_data = json['frames'] + + # Scrub filename keys to only have integer Id, drop path and file extensions. + id_to_tags_dict = {} + for full_path_key in sorted(all_frame_data.keys()): + id_to_tags_dict[get_id_from_filename(full_path_key)] = all_frame_data[full_path_key] + all_ids = id_to_tags_dict.keys() + + # Do the same with visitedFrames + visited_ids = sorted(json['visitedFrames']) + for index, filename in enumerate(visited_ids): + visited_ids[index] = get_id_from_filename(filename) + + # Unvisisted imageIds + unvisited_ids = sorted(list(set(all_ids) - set(visited_ids))) + + return { + "totalNumImages" : len(all_ids), + "numImagesVisted" : len(visited_ids), + "numImagesNotVisted" : len(unvisited_ids), + "imagesVisited" : visited_ids, + "imageNotVisisted" : unvisited_ids + } + +try: + vott_json = json.loads(open(os.environ['req']).read()) + + stats = process_vott_json(vott_json) + # TODO: Call interface to update imagesVisited to 'COMPLETED_TAG' state and imageNotVisisted to 'INCOMPLETE_TAG' + + response = open(os.environ['res'], 'w') + response.write(str(stats)) + response.close() +except Exception as e: + response = open(os.environ['res'], 'w') + # TODO: Add error status code and proper message? + response.write(str(e)) + response.close() + +# TODO: Check if __name__ == this.__name__???? Then call everything wrapped into a method? \ No newline at end of file diff --git a/functions/uploadFunc.py b/functions/uploadFunc.py deleted file mode 100644 index aa97bcd4..00000000 --- a/functions/uploadFunc.py +++ /dev/null @@ -1,47 +0,0 @@ -import os -import json - -def getId(filename): - pathComponents = filename.split('/') - filename = pathComponents[-1] - return int(filename.split('.')[0]) - -def processVottJson(vottJson): - frameTagDict = vottJson['frames'] - - # Scrub filename keys to only have integer Id, drop path and file extensions. - tagsByIdDict = {} - for oldkey in sorted(frameTagDict.keys()): - tagsByIdDict[getId(oldkey)] = frameTagDict[oldkey] - allImageIds = tagsByIdDict.keys() - - # Do the same with visitedFrames - visitedIds = sorted(vottJson['visitedFrames']) - for index, filename in enumerate(visitedIds): - visitedIds[index] = getId(filename) - - # Unvisisted imageIds - notVisitedIds = sorted(list(set(allImageIds) - set(visitedIds))) - - return { - "totalNumImages" : len(allImageIds), - "numImagesVisted" : len(visitedIds), - "numImagesNotVisted" : len(notVisitedIds), - "imagesVisited" : visitedIds, - "imageNotVisisted" : notVisitedIds - } - -try: - vottJson = json.loads(open(os.environ['req']).read()) - - stats = processVottJson(vottJson) - # TODO: Call interface to update imagesVisited to 'COMPLETED_TAG' state and imageNotVisisted to 'INCOMPLETE_TAG' - - response = open(os.environ['res'], 'w') - response.write(str(stats)) - response.close() -except Exception as e: - response = open(os.environ['res'], 'w') - # TODO: Add error status code and proper message? - response.write(str(e)) - response.close() \ No newline at end of file From b5a1d239cf8de2476271d6b0baa6f82bc72f9fdb Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Mon, 29 Oct 2018 15:09:05 -0700 Subject: [PATCH 026/145] adding __main__ check --- functions/upload/run.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/functions/upload/run.py b/functions/upload/run.py index ce8d8891..aa917e03 100644 --- a/functions/upload/run.py +++ b/functions/upload/run.py @@ -31,19 +31,18 @@ def process_vott_json(json): "imageNotVisisted" : unvisited_ids } -try: - vott_json = json.loads(open(os.environ['req']).read()) - - stats = process_vott_json(vott_json) - # TODO: Call interface to update imagesVisited to 'COMPLETED_TAG' state and imageNotVisisted to 'INCOMPLETE_TAG' - - response = open(os.environ['res'], 'w') - response.write(str(stats)) - response.close() -except Exception as e: - response = open(os.environ['res'], 'w') - # TODO: Add error status code and proper message? - response.write(str(e)) - response.close() - -# TODO: Check if __name__ == this.__name__???? Then call everything wrapped into a method? \ No newline at end of file +if __name__ == "__main__": + try: + vott_json = json.loads(open(os.environ['req']).read()) + + stats = process_vott_json(vott_json) + # TODO: Call interface to update imagesVisited to 'COMPLETED_TAG' state and imageNotVisisted to 'INCOMPLETE_TAG' + + response = open(os.environ['res'], 'w') + response.write(str(stats)) + response.close() + except Exception as e: + response = open(os.environ['res'], 'w') + # TODO: Add error status code and proper message? + response.write(str(e)) + response.close() \ No newline at end of file From 2c6a6fd9451460b5e8c3108c9cc69f00f7e8085f Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Mon, 29 Oct 2018 17:09:41 -0700 Subject: [PATCH 027/145] renaming runtime file, putting main logic into a main() function, adding blank host.json, since we are running v1 functions --- functions/upload/{run.py => __init__.py} | 9 +++++++-- functions/upload/host.json | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) rename functions/upload/{run.py => __init__.py} (93%) create mode 100644 functions/upload/host.json diff --git a/functions/upload/run.py b/functions/upload/__init__.py similarity index 93% rename from functions/upload/run.py rename to functions/upload/__init__.py index aa917e03..fc1bd0fb 100644 --- a/functions/upload/run.py +++ b/functions/upload/__init__.py @@ -1,11 +1,13 @@ import os import json +# TODO: Move this into a library def get_id_from_filename(filename): path_components = filename.split('/') filename = path_components[-1] return int(filename.split('.')[0]) +# TODO: Move this into a library def process_vott_json(json): all_frame_data = json['frames'] @@ -31,7 +33,7 @@ def process_vott_json(json): "imageNotVisisted" : unvisited_ids } -if __name__ == "__main__": +def main(): try: vott_json = json.loads(open(os.environ['req']).read()) @@ -45,4 +47,7 @@ def process_vott_json(json): response = open(os.environ['res'], 'w') # TODO: Add error status code and proper message? response.write(str(e)) - response.close() \ No newline at end of file + response.close() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/functions/upload/host.json b/functions/upload/host.json new file mode 100644 index 00000000..7a73a41b --- /dev/null +++ b/functions/upload/host.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file From 94c1a7dfb2d49b5f7ab37a3885cd0d161c8b49e8 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Tue, 30 Oct 2018 14:19:56 -0700 Subject: [PATCH 028/145] Adding 'Upload' Function and sample test json (#11) * Adding Upload Function and sample test json * renaming file, adding function azure definition, pep8 * adding __main__ check * renaming runtime file, putting main logic into a main() function, adding blank host.json, since we are running v1 functions --- functions/upload/__init__.py | 53 ++++ functions/upload/function.json | 20 ++ functions/upload/host.json | 2 + test/test_vott_output.json | 555 +++++++++++++++++++++++++++++++++ 4 files changed, 630 insertions(+) create mode 100644 functions/upload/__init__.py create mode 100644 functions/upload/function.json create mode 100644 functions/upload/host.json create mode 100644 test/test_vott_output.json diff --git a/functions/upload/__init__.py b/functions/upload/__init__.py new file mode 100644 index 00000000..fc1bd0fb --- /dev/null +++ b/functions/upload/__init__.py @@ -0,0 +1,53 @@ +import os +import json + +# TODO: Move this into a library +def get_id_from_filename(filename): + path_components = filename.split('/') + filename = path_components[-1] + return int(filename.split('.')[0]) + +# TODO: Move this into a library +def process_vott_json(json): + all_frame_data = json['frames'] + + # Scrub filename keys to only have integer Id, drop path and file extensions. + id_to_tags_dict = {} + for full_path_key in sorted(all_frame_data.keys()): + id_to_tags_dict[get_id_from_filename(full_path_key)] = all_frame_data[full_path_key] + all_ids = id_to_tags_dict.keys() + + # Do the same with visitedFrames + visited_ids = sorted(json['visitedFrames']) + for index, filename in enumerate(visited_ids): + visited_ids[index] = get_id_from_filename(filename) + + # Unvisisted imageIds + unvisited_ids = sorted(list(set(all_ids) - set(visited_ids))) + + return { + "totalNumImages" : len(all_ids), + "numImagesVisted" : len(visited_ids), + "numImagesNotVisted" : len(unvisited_ids), + "imagesVisited" : visited_ids, + "imageNotVisisted" : unvisited_ids + } + +def main(): + try: + vott_json = json.loads(open(os.environ['req']).read()) + + stats = process_vott_json(vott_json) + # TODO: Call interface to update imagesVisited to 'COMPLETED_TAG' state and imageNotVisisted to 'INCOMPLETE_TAG' + + response = open(os.environ['res'], 'w') + response.write(str(stats)) + response.close() + except Exception as e: + response = open(os.environ['res'], 'w') + # TODO: Add error status code and proper message? + response.write(str(e)) + response.close() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/functions/upload/function.json b/functions/upload/function.json new file mode 100644 index 00000000..d841bddd --- /dev/null +++ b/functions/upload/function.json @@ -0,0 +1,20 @@ +{ + "bindings": [ + { + "authLevel": "anonymous", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "post", + "put" + ] + }, + { + "type": "http", + "direction": "out", + "name": "res" + } + ], + "disabled": false + } \ No newline at end of file diff --git a/functions/upload/host.json b/functions/upload/host.json new file mode 100644 index 00000000..7a73a41b --- /dev/null +++ b/functions/upload/host.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/test/test_vott_output.json b/test/test_vott_output.json new file mode 100644 index 00000000..b600dfa1 --- /dev/null +++ b/test/test_vott_output.json @@ -0,0 +1,555 @@ +{ + "frames": { + "1012.png": [ + { + "x1": 39.9155672823219, + "y1": 301.0251256281407, + "x2": 65.66754617414249, + "y2": 328.04020100502515, + "width": 488, + "height": 512, + "box": { + "x1": 39.9155672823219, + "y1": 301.0251256281407, + "x2": 65.66754617414249, + "y2": 328.04020100502515 + }, + "UID": "8d041221", + "id": 0, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 392.0738786279683, + "y1": 346.0502512562814, + "x2": 420.401055408971, + "y2": 373.06532663316585, + "width": 488, + "height": 512, + "box": { + "x1": 392.0738786279683, + "y1": 346.0502512562814, + "x2": 420.401055408971, + "y2": 373.06532663316585 + }, + "UID": "fa3ce672", + "id": 1, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + } + ], + "1013.png": [ + { + "x1": 122.96569920844327, + "y1": 122.21105527638191, + "x2": 171.89445910290237, + "y2": 191.678391959799, + "width": 488, + "height": 512, + "box": { + "x1": 122.96569920844327, + "y1": 122.21105527638191, + "x2": 171.89445910290237, + "y2": 191.678391959799 + }, + "UID": "a197e6f2", + "id": 2, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 65.02374670184696, + "y1": 433.52763819095475, + "x2": 112.66490765171504, + "y2": 459.2562814070352, + "width": 488, + "height": 512, + "box": { + "x1": 65.02374670184696, + "y1": 433.52763819095475, + "x2": 112.66490765171504, + "y2": 459.2562814070352 + }, + "UID": "29fc21aa", + "id": 3, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + }, + { + "x1": 152.58047493403694, + "y1": 437.38693467336685, + "x2": 191.2084432717678, + "y2": 505.5678391959799, + "width": 488, + "height": 512, + "box": { + "x1": 152.58047493403694, + "y1": 437.38693467336685, + "x2": 191.2084432717678, + "y2": 505.5678391959799 + }, + "UID": "b302a42c", + "id": 4, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 3 + }, + { + "x1": 347.00791556728234, + "y1": 393.00502512562815, + "x2": 372.7598944591029, + "y2": 418.73366834170855, + "width": 488, + "height": 512, + "box": { + "x1": 347.00791556728234, + "y1": 393.00502512562815, + "x2": 372.7598944591029, + "y2": 418.73366834170855 + }, + "UID": "d75d3848", + "id": 5, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 4 + }, + { + "x1": 374.0474934036939, + "y1": 439.95979899497485, + "x2": 399.79947229551453, + "y2": 465.6884422110553, + "width": 488, + "height": 512, + "box": { + "x1": 374.0474934036939, + "y1": 439.95979899497485, + "x2": 399.79947229551453, + "y2": 465.6884422110553 + }, + "UID": "0cf73292", + "id": 6, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 5 + } + ], + "1014.png": [ + { + "x1": 216.9604221635884, + "y1": 203.25628140703517, + "x2": 242.71240105540898, + "y2": 230.2713567839196, + "width": 488, + "height": 512, + "box": { + "x1": 216.9604221635884, + "y1": 203.25628140703517, + "x2": 242.71240105540898, + "y2": 230.2713567839196 + }, + "UID": "2e9f323c", + "id": 7, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 300.65435356200527, + "y1": 364.0603015075377, + "x2": 326.4063324538259, + "y2": 389.7889447236181, + "width": 488, + "height": 512, + "box": { + "x1": 300.65435356200527, + "y1": 364.0603015075377, + "x2": 326.4063324538259, + "y2": 389.7889447236181 + }, + "UID": "8bf4dd37", + "id": 8, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + } + ], + "1015.png": [ + { + "x1": 300.65435356200527, + "y1": 300.3819095477387, + "x2": 326.4063324538259, + "y2": 326.1105527638191, + "width": 488, + "height": 512, + "box": { + "x1": 300.65435356200527, + "y1": 300.3819095477387, + "x2": 326.4063324538259, + "y2": 326.1105527638191 + }, + "UID": "80c5ac63", + "id": 9, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 226.6174142480211, + "y1": 402.6532663316583, + "x2": 252.3693931398417, + "y2": 429.6683417085427, + "width": 488, + "height": 512, + "box": { + "x1": 226.6174142480211, + "y1": 402.6532663316583, + "x2": 252.3693931398417, + "y2": 429.6683417085427 + }, + "UID": "b559e9b2", + "id": 10, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + } + ], + "1016.png": [ + { + "x1": 156.44327176781002, + "y1": 236.7035175879397, + "x2": 204.0844327176781, + "y2": 307.4572864321608, + "width": 488, + "height": 512, + "box": { + "x1": 156.44327176781002, + "y1": 236.7035175879397, + "x2": 204.0844327176781, + "y2": 307.4572864321608 + }, + "UID": "5368d1fa", + "id": 11, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 375.9788918205805, + "y1": 281.7286432160804, + "x2": 401.73087071240104, + "y2": 307.4572864321608, + "width": 488, + "height": 512, + "box": { + "x1": 375.9788918205805, + "y1": 281.7286432160804, + "x2": 401.73087071240104, + "y2": 307.4572864321608 + }, + "UID": "a603a804", + "id": 12, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + }, + { + "x1": 383.70448548812664, + "y1": 461.8291457286432, + "x2": 409.45646437994725, + "y2": 487.5577889447236, + "width": 488, + "height": 512, + "box": { + "x1": 383.70448548812664, + "y1": 461.8291457286432, + "x2": 409.45646437994725, + "y2": 487.5577889447236 + }, + "UID": "e953b706", + "id": 13, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 3 + }, + { + "x1": 146.1424802110818, + "y1": 441.2462311557789, + "x2": 188.63324538258576, + "y2": 510.713567839196, + "width": 488, + "height": 512, + "box": { + "x1": 146.1424802110818, + "y1": 441.2462311557789, + "x2": 188.63324538258576, + "y2": 510.713567839196 + }, + "UID": "29a0b420", + "id": 14, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 4 + }, + { + "x1": 382.4168865435356, + "y1": 419.37688442211055, + "x2": 408.1688654353562, + "y2": 445.10552763819095, + "width": 488, + "height": 512, + "box": { + "x1": 382.4168865435356, + "y1": 419.37688442211055, + "x2": 408.1688654353562, + "y2": 445.10552763819095 + }, + "UID": "73e1a76e", + "id": 15, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 5 + } + ], + "1017.png": [ + { + "x1": 78.54353562005277, + "y1": 356.34170854271355, + "x2": 104.29551451187335, + "y2": 385.92964824120605, + "width": 488, + "height": 512, + "box": { + "x1": 78.54353562005277, + "y1": 356.34170854271355, + "x2": 104.29551451187335, + "y2": 385.92964824120605 + }, + "UID": "da911bba", + "id": 17, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 433.9208443271768, + "y1": 319.035175879397, + "x2": 459.67282321899734, + "y2": 344.7638190954774, + "width": 488, + "height": 512, + "box": { + "x1": 433.9208443271768, + "y1": 319.035175879397, + "x2": 459.67282321899734, + "y2": 344.7638190954774 + }, + "UID": "74bd9c6d", + "id": 18, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + }, + { + "x1": 50.21635883905013, + "y1": 155.65829145728642, + "x2": 75.96833773087072, + "y2": 181.38693467336682, + "width": 488, + "height": 512, + "box": { + "x1": 50.21635883905013, + "y1": 155.65829145728642, + "x2": 75.96833773087072, + "y2": 181.38693467336682 + }, + "UID": "ee2edadf", + "id": 19, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 3 + }, + { + "x1": 49.57255936675462, + "y1": 221.26633165829145, + "x2": 75.3245382585752, + "y2": 246.99497487437185, + "width": 488, + "height": 512, + "box": { + "x1": 49.57255936675462, + "y1": 221.26633165829145, + "x2": 75.3245382585752, + "y2": 246.99497487437185 + }, + "UID": "ffe26cb3", + "id": 20, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 4 + } + ], + "1018.png": [ + { + "x1": 74.03693931398416, + "y1": 301.6683417085427, + "x2": 99.78891820580475, + "y2": 327.3969849246231, + "width": 488, + "height": 512, + "box": { + "x1": 74.03693931398416, + "y1": 301.6683417085427, + "x2": 99.78891820580475, + "y2": 327.3969849246231 + }, + "UID": "db0af2df", + "id": 16, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + } + ], + "1019.png": [], + "1020.png": [], + "1021.png": [], + "1022.png": [], + "1023.png": [], + "1024.png": [ + { + "x1": 318.6807387862797, + "y1": 248.28140703517587, + "x2": 344.4327176781003, + "y2": 274.0100502512563, + "width": 488, + "height": 512, + "box": { + "x1": 318.6807387862797, + "y1": 248.28140703517587, + "x2": 344.4327176781003, + "y2": 274.0100502512563 + }, + "UID": "7ee346bf", + "id": 21, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 1 + }, + { + "x1": 0, + "y1": 272.08040201005025, + "x2": 224.68601583113457, + "y2": 297.80904522613065, + "width": 488, + "height": 512, + "box": { + "x1": 0, + "y1": 272.08040201005025, + "x2": 224.68601583113457, + "y2": 297.80904522613065 + }, + "UID": "ab7e3233", + "id": 22, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 2 + }, + { + "x1": 0, + "y1": 75.89949748743719, + "x2": 85.62532981530343, + "y2": 486.2713567839196, + "width": 488, + "height": 512, + "box": { + "x1": 0, + "y1": 75.89949748743719, + "x2": 85.62532981530343, + "y2": 486.2713567839196 + }, + "UID": "392e1696", + "id": 23, + "type": "Rectangle", + "tags": [ + "ataggu" + ], + "name": 3 + } + ], + "1025.png": [], + "1026.png": [], + "1027.png": [], + "1028.png": [] + }, + "framerate": "1", + "inputTags": "ataggu", + "suggestiontype": "track", + "scd": false, + "visitedFrames": [ + "1012.png", + "1013.png", + "1014.png", + "1015.png", + "1016.png", + "1017.png", + "1018.png", + "1019.png", + "1020.png", + "1021.png", + "1022.png", + "1023.png", + "1024.png" + ], + "tag_colors": [ + "#0fded8" + ] +} \ No newline at end of file From 48060b07a4851e1d101064fea3796eb78638ecfa Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Tue, 30 Oct 2018 18:27:44 -0700 Subject: [PATCH 029/145] Move cli add readme (#12) * Moving files around * Ading README * Fixing azure pipeline for CLI * Reading ALCONFIG should raise an error if missing --- azure-pipelines.yml | 2 +- cli/README.md | 62 ++++++++++++++++++++++++++++++++ cli/{src => }/cli.py | 0 cli/{src => }/operations.py | 6 +++- cli/{src => }/test_operations.py | 0 5 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 cli/README.md rename cli/{src => }/cli.py (100%) rename cli/{src => }/operations.py (97%) rename cli/{src => }/test_operations.py (100%) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 1188310d..12e6fd2f 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -29,7 +29,7 @@ jobs: - script: | pip install pytest - pytest cli/src --doctest-modules --junitxml=junit/test-results.xml + pytest cli --doctest-modules --junitxml=junit/test-results.xml displayName: 'pytest' - task: PublishTestResults@2 diff --git a/cli/README.md b/cli/README.md new file mode 100644 index 00000000..5de0576e --- /dev/null +++ b/cli/README.md @@ -0,0 +1,62 @@ +## Management CLI + +Data management CLI to interact with data manager endpoints. + +This CLI attempts to be as simple as possible to allow uers to initialize a dataset, download a dataset, and upload a dataset to an Azure Storage blob. It presumes you have a functioning management endpoint and database. + +### Configuration + +Create an INI file, and store it anywhere. Copy the path to it, and add it to your environment variables as `ALCONFIG` + +Example: `export ALCONFIG=/path/to/config.ini` + +The INI file should contain the following sections and keys to operate properly + +``` +[FUNCTIONS] +FUNCTIONS_KEY= +FUNCTIONS_URL=https://mytagmanagement.azurewebsites.net/ + +[STORAGE] +STORAGE_ACCOUNT= +STORAGE_KEY= +STORAGE_CONTAINER=vott + +[TAGGING] +TAGGING_LOCATION=~/taggingdata +TAGGING_USER="bhargav" +``` + +`FUNCTIONS_KEY` is the Azure Functions Key that allows your CLI to authenticate with the management function +`FUNCTIONS_URL` is the URL of the Function deployed to Azure + +`STORAGE_ACCOUNT` is the name of the Azure Storage Account used to upload images and vott json. +`STORAGE_KEY` is the secret key of the Azure Storage Account +`STORAGE_CONTAINER` is the name of the container where the CLI deposits vott json files. + +`TAGGING_LOCATION` is the location on the user's machine where media will be downloaded +`TAGGING_USER` is your username. + +### Commands + +#### Initialize a dataset/Onboard an existing dataset. + +*Not Implemented* + +Usage: `python3 -m cli onboard` + +#### Download + +Usage: `python3 -m cli download -n 50` + +Downloads 50 images to the location identified by `TAGGING_LOCATION` in your config. +There is an upper bound of 100 images that can be downloaded at present. + +Also generated is a VoTT json file containing any existing tags and labels. + +#### Upload tags + +Usage: `python3 -m cli upload` + +Uploads the VoTT json file to be processed into the database. Will also delete the image directory +identified at `TAGGING_LOCATION`, so the next `download` cycle will commence without issue. \ No newline at end of file diff --git a/cli/src/cli.py b/cli/cli.py similarity index 100% rename from cli/src/cli.py rename to cli/cli.py diff --git a/cli/src/operations.py b/cli/operations.py similarity index 97% rename from cli/src/operations.py rename to cli/operations.py index d47443a7..b393b672 100644 --- a/cli/src/operations.py +++ b/cli/operations.py @@ -24,7 +24,7 @@ LOWER_LIMIT = 0 UPPER_LIMIT = 100 -CONFIG_PATH = "./config.ini" +CONFIG_PATH = os.environ.get('ALCONFIG', None) azure_storage_client = None @@ -38,6 +38,7 @@ class ImageLimitException(Exception): def get_azure_storage_client(config): + # Todo: Move away from global client. global azure_storage_client if azure_storage_client is not None: @@ -146,6 +147,9 @@ def upload(config): def read_config(config_path): + if config_path is None: + raise MissingConfigException() + parser = configparser.ConfigParser() parser.read(config_path) return read_config_with_parsed_config(parser) diff --git a/cli/src/test_operations.py b/cli/test_operations.py similarity index 100% rename from cli/src/test_operations.py rename to cli/test_operations.py From 4b25ec041bade943dcbcfdb1dea4ff8dc6a8763c Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Wed, 31 Oct 2018 17:18:20 -0700 Subject: [PATCH 030/145] Split schema file into several files. Created a resource install script --- db/README.md | 24 ++++- db/functions/log_image_info_insert.sql | 12 +++ .../log_image_tagging_state_changes.sql | 14 +++ .../log_image_tagging_state_insert.sql | 12 +++ db/install-db-resources.py | 96 +++++++++++++++++++ db/tables/image_info.sql | 10 ++ db/tables/image_tagging_state.sql | 7 ++ db/tables/image_tagging_state_audit.sql | 8 ++ db/tables/image_tags.sql | 13 +++ db/tables/tag_state.sql | 5 + db/triggers/image_info_insert.sql | 5 + db/triggers/image_tagging_state_changes.sql | 5 + db/triggers/image_tagging_state_insert.sql | 5 + 13 files changed, 212 insertions(+), 4 deletions(-) create mode 100644 db/functions/log_image_info_insert.sql create mode 100644 db/functions/log_image_tagging_state_changes.sql create mode 100644 db/functions/log_image_tagging_state_insert.sql create mode 100644 db/install-db-resources.py create mode 100644 db/tables/image_info.sql create mode 100644 db/tables/image_tagging_state.sql create mode 100644 db/tables/image_tagging_state_audit.sql create mode 100644 db/tables/image_tags.sql create mode 100644 db/tables/tag_state.sql create mode 100644 db/triggers/image_info_insert.sql create mode 100644 db/triggers/image_tagging_state_changes.sql create mode 100644 db/triggers/image_tagging_state_insert.sql diff --git a/db/README.md b/db/README.md index fe3dbd5e..10517b4a 100644 --- a/db/README.md +++ b/db/README.md @@ -2,9 +2,9 @@ This directory contains database schemas, deployment script, and test data generation. -## Creating a PostgreSQL DB on Azure +## Creating a PostgreSQL host on Azure -The _Deploy-Postgres-DB_ shell script will deploy a [PostgreSQL database in Azure](https://azure.microsoft.com/en-us/services/postgresql/). The script assumes you have the [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) installed and are already [logged into the CLI](https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli?view=azure-cli-latest) with the subscription you wish to deploy to. +The _Deploy-Postgres-DB_ shell script will deploy a [PostgreSQL server in Azure](https://azure.microsoft.com/en-us/services/postgresql/). The script assumes you have the [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) installed and are already [logged into the CLI](https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli?view=azure-cli-latest) with the subscription you wish to deploy to. Once the above is ready run the command below by replacing the 3 arguments @@ -12,9 +12,25 @@ Once the above is ready run the command below by replacing the 3 arguments $ sh Deploy-Postgres-DB.sh RESOURCE_GROUP_NAME POSTGRES_SERVER_NAME POSTGRES_USER ``` -## Deploying table schemas to your PostgreSQL DB on Azure +## Deploying a PostgreSQL database and installing resources -TODO +The _install-db-resources.py_ file will install SQL resources from the functions, tables, and triggers directories. A pre-requiste for installation is to set environment variables for DB_HOST, DB_USER, and DB_PASS + +An example for setting the environment variables can be seen below + +```sh +$ export DB_HOST=(POSTGRES_SERVER_NAME) DB_USER=(POSTGRES_USER@POSTGRES_SERVER) DB_PASS=(PASSWORD) +``` + +*Please note*: The DB_PASS is the same password used when executing the _Deploy-Postgres-DB_ shell file. + +Now that environment variables are set execute the following where _(MyDatabaseName)_ is replaced with the name of the PostgreSQL database you want to create on the existing host. + +```sh +$ python3 install-db-resources.py (MyDatabaseName) +``` + +If all is successful you will see list of installed files. ## Running an integration test on PostgreSQL DB on Azure diff --git a/db/functions/log_image_info_insert.sql b/db/functions/log_image_info_insert.sql new file mode 100644 index 00000000..52617256 --- /dev/null +++ b/db/functions/log_image_info_insert.sql @@ -0,0 +1,12 @@ +--On insert of new image info rows we automatically create an entry in the state table +CREATE OR REPLACE FUNCTION log_image_info_insert() + RETURNS trigger AS + ' + BEGIN + INSERT INTO Image_Tagging_State(ImageId,TagStateId,ModifiedDtim,CreatedDtim) + VALUES(NEW.ImageId,0,current_timestamp,current_timestamp); + + RETURN NEW; + END; + ' + LANGUAGE plpgsql; \ No newline at end of file diff --git a/db/functions/log_image_tagging_state_changes.sql b/db/functions/log_image_tagging_state_changes.sql new file mode 100644 index 00000000..df65ed55 --- /dev/null +++ b/db/functions/log_image_tagging_state_changes.sql @@ -0,0 +1,14 @@ +-- ActionFlag: 1 = insert, 2 = update, 3 = delete +CREATE OR REPLACE FUNCTION log_image_tagging_state_changes() + RETURNS trigger AS + ' + BEGIN + IF NEW.TagStateId <> OLD.TagStateId THEN + INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedDtim,ArchiveDtim,ActionFlag) + VALUES(NEW.ImageId,NEW.TagStateId,NEW.ModifiedDtim,current_timestamp,2); + END IF; + + RETURN NEW; + END; + ' + LANGUAGE plpgsql; \ No newline at end of file diff --git a/db/functions/log_image_tagging_state_insert.sql b/db/functions/log_image_tagging_state_insert.sql new file mode 100644 index 00000000..1e011ae0 --- /dev/null +++ b/db/functions/log_image_tagging_state_insert.sql @@ -0,0 +1,12 @@ +-- ActionFlag: 1 = insert, 2 = update, 3 = delete +CREATE OR REPLACE FUNCTION log_image_tagging_state_insert() + RETURNS trigger AS + ' + BEGIN + INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedDtim,ArchiveDtim,ActionFlag) + VALUES(NEW.ImageId,NEW.TagStateId,NEW.ModifiedDtim,current_timestamp,1); + + RETURN NEW; + END; + ' + LANGUAGE plpgsql; \ No newline at end of file diff --git a/db/install-db-resources.py b/db/install-db-resources.py new file mode 100644 index 00000000..d378fc7a --- /dev/null +++ b/db/install-db-resources.py @@ -0,0 +1,96 @@ +import pg8000 +import os +import sys +from os import listdir +from os.path import isfile, join + +default_postgres_db_name = "postgres" + +def read_file_as_string(local_file_name): + data = None + with open(local_file_name, 'r') as myfile: + data = myfile.read() + if not data: + print("The file {0} is empty. ".format(local_file_name)) + return data + +def execute_queries_from_map(conn, file_query_map): + cursor = conn.cursor() + if(len(file_query_map)>0): + print("Installed: \n") + for file_path,query in file_query_map.items(): + cursor.execute(query) + conn.commit() + print("\t{0}".format(file_path)) + return + +def execute_queries(conn, queries): + cursor = conn.cursor() + if(len(queries)>0): + for query in queries: + cursor.execute(query) + conn.commit() + return + +def create_database(conn, db_name): + if db_name: + cursor = conn.cursor() + conn.autocommit = True + query = "CREATE DATABASE {0};" + print("\nAttempting to create database '{0}'...This may take up to 30 seconds".format(db_name)) + cursor.execute(query.format(db_name)) + print("Successfully created database named '{0}'".format(db_name)) + else: + print("No database created due to empty parameter") + return + +def get_connection(): + return __new_postgres_connection(os.environ['DB_HOST'],os.environ['DB_NAME'],os.environ['DB_USER'],os.environ['DB_PASS']) + +def __new_postgres_connection(host_name,db_name,db_user,db_pass): + return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) + +def get_file_query_map(sub_dir_name): + dirname = os.path.dirname(__file__) + full_sub_dir_path = os.path.join(dirname, sub_dir_name) + sub_dir_scripts = [join(full_sub_dir_path, f) for f in listdir(full_sub_dir_path) if isfile(join(full_sub_dir_path, f))] + file_query_map = {f:read_file_as_string(f) for f in sub_dir_scripts} + return file_query_map + +def get_default_connection(): + return __new_postgres_connection(os.environ['DB_HOST'],default_postgres_db_name,os.environ['DB_USER'],os.environ['DB_PASS']) + +def get_connection_for_db(db_name): + return __new_postgres_connection(os.environ['DB_HOST'],db_name,os.environ['DB_USER'],os.environ['DB_PASS']) + +def execute_files_in_dir_list(conn,list_of_sub_dirs): + for sub_dir in list_of_sub_dirs: + print("\n****\tReading files in '{0}' directory\t****\n".format(sub_dir)) + file_query_map = get_file_query_map(sub_dir) + if '' in file_query_map.values(): + print("One of the files is empty. Please fix") + return + execute_queries_from_map(conn,file_query_map) + +def main(db_name): + try: + if(os.getenv("DB_HOST") is None or os.getenv("DB_USER") is None or os.getenv("DB_PASS") is None): + print("Please set environment variables for DB_HOST, DB_USER, DB_PASS") + return + + #Set up the database + create_database(get_default_connection(),db_name) + + #Connect to the new database and install resources + conn = get_connection_for_db(db_name) + sub_dirs = ["tables","functions","triggers"] + execute_files_in_dir_list(conn,sub_dirs) + + print("Done!") + except Exception as e: print(e) + +if __name__ == "__main__": + if (len(sys.argv) != 2): + print("Expected 1 argument of type string for db_name") + else: + main(str(sys.argv[1])) diff --git a/db/tables/image_info.sql b/db/tables/image_info.sql new file mode 100644 index 00000000..b094550b --- /dev/null +++ b/db/tables/image_info.sql @@ -0,0 +1,10 @@ +-- Set up table and autoincrementing primary key +CREATE TABLE Image_Info ( + ImageId SERIAL PRIMARY KEY, + OriginalImageName text NOT NULL, + ImageLocation text, + Height integer NOT NULL, + Width integer NOT NULL, + ModifiedDtim timestamp NOT NULL default current_timestamp, + CreatedDtim timestamp NOT NULL default current_timestamp +); \ No newline at end of file diff --git a/db/tables/image_tagging_state.sql b/db/tables/image_tagging_state.sql new file mode 100644 index 00000000..dbe230ef --- /dev/null +++ b/db/tables/image_tagging_state.sql @@ -0,0 +1,7 @@ +-- Set up table and autoincrementing primary key +CREATE TABLE Image_Tagging_State ( + ImageId integer REFERENCES Image_Info(ImageId), + TagStateId integer NOT NULL, + ModifiedDtim timestamp NOT NULL default current_timestamp, + CreatedDtim timestamp NOT NULL default current_timestamp +); \ No newline at end of file diff --git a/db/tables/image_tagging_state_audit.sql b/db/tables/image_tagging_state_audit.sql new file mode 100644 index 00000000..16c8c992 --- /dev/null +++ b/db/tables/image_tagging_state_audit.sql @@ -0,0 +1,8 @@ +CREATE TABLE Image_Tagging_State_Audit ( + RowId serial primary key, + ImageId integer NOT NULL, + TagStateId integer NOT NULL, + ModifiedDtim timestamp NOT NULL, + ArchiveDtim timestamp NOT NULL, + ActionFlag integer NOT NULL +); \ No newline at end of file diff --git a/db/tables/image_tags.sql b/db/tables/image_tags.sql new file mode 100644 index 00000000..9bc65713 --- /dev/null +++ b/db/tables/image_tags.sql @@ -0,0 +1,13 @@ +-- Set up table +CREATE TABLE Image_Tags ( + ImageTagId integer NOT NULL, + ImageId integer REFERENCES Image_Info(ImageId) ON DELETE RESTRICT, + --ClassificationId text NOT NULL, --Needed? + --Confidence double precision NOT NULL, --Needed? + X_Min integer NOT NULL, + X_Max integer NOT NULL, + Y_Min integer NOT NULL, + Y_Max integer NOT NULL, + --VOTT_Data json NOT NULL + PRIMARY KEY (ImageTagId,ImageId) +); \ No newline at end of file diff --git a/db/tables/tag_state.sql b/db/tables/tag_state.sql new file mode 100644 index 00000000..0b664649 --- /dev/null +++ b/db/tables/tag_state.sql @@ -0,0 +1,5 @@ +-- Set up table +CREATE TABLE TagState ( + TagStateId integer NOT NULL, + TagStateName text NOT NULL +); \ No newline at end of file diff --git a/db/triggers/image_info_insert.sql b/db/triggers/image_info_insert.sql new file mode 100644 index 00000000..6ff15de4 --- /dev/null +++ b/db/triggers/image_info_insert.sql @@ -0,0 +1,5 @@ +--DROP TRIGGER IF EXISTS image_info_insert ON Image_Info; +CREATE TRIGGER image_info_insert + AFTER INSERT ON Image_Info + FOR EACH ROW + EXECUTE PROCEDURE log_image_info_insert(); \ No newline at end of file diff --git a/db/triggers/image_tagging_state_changes.sql b/db/triggers/image_tagging_state_changes.sql new file mode 100644 index 00000000..c4677fe7 --- /dev/null +++ b/db/triggers/image_tagging_state_changes.sql @@ -0,0 +1,5 @@ +--DROP TRIGGER IF EXISTS image_tagging_state_changes ON Image_Tagging_State; +CREATE TRIGGER image_tagging_state_changes + BEFORE UPDATE ON Image_Tagging_State + FOR EACH ROW + EXECUTE PROCEDURE log_image_tagging_state_changes(); diff --git a/db/triggers/image_tagging_state_insert.sql b/db/triggers/image_tagging_state_insert.sql new file mode 100644 index 00000000..a917c8eb --- /dev/null +++ b/db/triggers/image_tagging_state_insert.sql @@ -0,0 +1,5 @@ +--DROP TRIGGER IF EXISTS image_tagging_state_insert ON Image_Tagging_State; +CREATE TRIGGER image_tagging_state_insert + AFTER INSERT ON Image_Tagging_State + FOR EACH ROW + EXECUTE PROCEDURE log_image_tagging_state_insert(); \ No newline at end of file From d3e186239dd4ab58213ceb64f7d2d4aa5850c2e6 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Wed, 31 Oct 2018 17:22:23 -0700 Subject: [PATCH 031/145] Removed unused function --- db/install-db-resources.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/db/install-db-resources.py b/db/install-db-resources.py index d378fc7a..ee52c552 100644 --- a/db/install-db-resources.py +++ b/db/install-db-resources.py @@ -24,14 +24,6 @@ def execute_queries_from_map(conn, file_query_map): print("\t{0}".format(file_path)) return -def execute_queries(conn, queries): - cursor = conn.cursor() - if(len(queries)>0): - for query in queries: - cursor.execute(query) - conn.commit() - return - def create_database(conn, db_name): if db_name: cursor = conn.cursor() From 0b478540fd3eafdab0494acda42ea1fe33945196 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Wed, 31 Oct 2018 17:26:03 -0700 Subject: [PATCH 032/145] Style changes in README --- db/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/db/README.md b/db/README.md index 10517b4a..6e44fb92 100644 --- a/db/README.md +++ b/db/README.md @@ -14,7 +14,7 @@ $ sh Deploy-Postgres-DB.sh RESOURCE_GROUP_NAME POSTGRES_SERVER_NAME POSTGRES_USE ## Deploying a PostgreSQL database and installing resources -The _install-db-resources.py_ file will install SQL resources from the functions, tables, and triggers directories. A pre-requiste for installation is to set environment variables for DB_HOST, DB_USER, and DB_PASS +The _install-db-resources.py_ file will install SQL resources from the functions, tables, and triggers directories. A pre-requiste for installation is to set environment variables for **DB_HOST**, **DB_USER**, and **DB_PASS** An example for setting the environment variables can be seen below @@ -22,7 +22,7 @@ An example for setting the environment variables can be seen below $ export DB_HOST=(POSTGRES_SERVER_NAME) DB_USER=(POSTGRES_USER@POSTGRES_SERVER) DB_PASS=(PASSWORD) ``` -*Please note*: The DB_PASS is the same password used when executing the _Deploy-Postgres-DB_ shell file. +**Please note**: The DB_PASS is the same password used when executing the _Deploy-Postgres-DB_ shell file. Now that environment variables are set execute the following where _(MyDatabaseName)_ is replaced with the name of the PostgreSQL database you want to create on the existing host. From 5b6f0718673c659d6fa115ff16bec2e666447a09 Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Thu, 1 Nov 2018 14:03:27 -0700 Subject: [PATCH 033/145] Munge json paths (#16) * Download and munge VOTT json * Munging paths on upload --- cli/operations.py | 91 ++++++++++++++++++++++++++------ cli/test_operations.py | 114 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 187 insertions(+), 18 deletions(-) diff --git a/cli/operations.py b/cli/operations.py index b393b672..2f625b93 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -5,6 +5,8 @@ import uuid import shutil import pathlib +import json +import copy from azure.storage.blob import BlockBlobService FUNCTIONS_SECTION = 'FUNCTIONS' @@ -90,21 +92,16 @@ def download(config, num_images, strategy=None): exist_ok=True ) - download_images(data_dir, json_resp) + download_images(config, data_dir, json_resp) print("Downloaded files. Ready to tag!") return images_to_download - -def download_images(image_dir, json_resp): +def download_images(config, image_dir, json_resp): print("Downloading files to " + str(image_dir)) - # dummy json file for vott. - data_file = pathlib.Path(image_dir / "data.json") - - with open(str(data_file), "wb") as file: - file.writelines(json_resp.get("vott", "no json")) - file.close() + # Write generated VoTT data from the function to a file. + write_vott_data(image_dir, json_resp) urls = json_resp['urls'] dummy = urls[0] @@ -128,24 +125,86 @@ def download_images(image_dir, json_resp): file.close() +def write_vott_data(image_dir, json_resp): + data_file = pathlib.Path(image_dir / "data.json") + vott_data = json_resp.get("vott", None) + + if not vott_data: + return + + try: + vott_json = json.loads(vott_data) + except ValueError as e: + print("Corrupted VOTT data received.") + return + + vott_json_with_fixed_paths = prepend_file_paths(image_dir, vott_json) + + with open(str(data_file), "wb") as file: + vott_json_string = json.dumps(vott_json_with_fixed_paths) + file.writelines(vott_json_string) + file.close() + + +def prepend_file_paths(image_dir, vott_json): + # Don't clobber the response. + modified_json = copy.deepcopy(vott_json) + frames = modified_json["frames"] + + # Replace the frame keys with the fully qualified path + # for the image. Should look something like: + # This is the /path/to/tagging_location/data/1.png in the end. + for frame_key in frames.keys(): + new_key = str(pathlib.Path(image_dir / frame_key)) + frames[new_key] = frames.pop(frame_key) + + modified_json["frames"] = frames + + return modified_json + + def upload(config): - storage_container = config.get("storage_container") + functions_url = config.get('url') tagging_location = pathlib.Path(config.get("tagging_location")) - storage_client = get_azure_storage_client(config) print("Uploading VOTT json file…") vott_json = pathlib.Path(tagging_location / "data.json") + json_data = json.loads(vott_json) - storage_client.create_blob_from_path( - storage_container, - str(uuid.uuid4()) + "_vott.json", - str(vott_json) - ) + # Munge the vott json file. + munged_json = trim_file_paths(json_data) + + response = requests.post(functions_url, json=munged_json) + response.raise_for_status() + json_resp = response.json() + print(json_resp) print("Done!") +def trim_file_paths(json_data): + modified_json = copy.deepcopy(json_data) + + munged_frames = modified_json["frames"] + visited_frames = modified_json["visitedFrames"] + + for frame_key in munged_frames.keys(): + frame_name = pathlib.Path(frame_key).name + munged_frames[frame_name] = munged_frames.pop(frame_key) + + munged_visited_frames = [] + for frame_path in visited_frames: + munged_visited_frames.append( + pathlib.Path(frame_path).name + ) + + modified_json["frames"] = munged_frames + modified_json["visitedFrames"] = munged_visited_frames + + return modified_json + + def read_config(config_path): if config_path is None: raise MissingConfigException() diff --git a/cli/test_operations.py b/cli/test_operations.py index 2ff3cd45..a2b0c218 100644 --- a/cli/test_operations.py +++ b/cli/test_operations.py @@ -1,4 +1,6 @@ import unittest +import json +import pathlib from unittest.mock import Mock from operations import ( @@ -21,11 +23,14 @@ TAGGING_LOCATION_KEY, functions_config_section, storage_config_section, - tagging_config_section + tagging_config_section, + prepend_file_paths, + trim_file_paths ) class TestCLIOperations(unittest.TestCase): + def test_download_bounds_under_limit(self): with self.assertRaises(ImageLimitException): _download_bounds(LOWER_LIMIT) @@ -44,6 +49,7 @@ def test_download_bounds_with_image_count(self): class TestConfig(unittest.TestCase): + def _mock_sections(self, sections, data): def sections_function(): return sections @@ -89,7 +95,7 @@ def test_missing_tagging_config_values(self): def test_acceptable_config(self): mock_data = self._mock_sections( - [STORAGE_SECTION, FUNCTIONS_SECTION, TAGGING_SECTION], + [STORAGE_SECTION, FUNCTIONS_SECTION, TAGGING_SECTION], { STORAGE_SECTION: { STORAGE_KEY: "test", @@ -109,5 +115,109 @@ def test_acceptable_config(self): read_config_with_parsed_config(mock_data) +class TestPrependFilepaths(unittest.TestCase): + def _mock_json(self): + json_str_fixture = """ + { + "frames": { + "st1012.png": [ + { + } + ], + "st1013.png": [ + { + } + ], + "st1014.png": [ + { + } + ] + }, + "visitedFrames": [ + ] + } + """ + + return json.loads(json_str_fixture) + + def test_correct_number_of_paths(self): + json_resp = self._mock_json() + + data_path = pathlib.Path('/data') + prepended_json = prepend_file_paths(data_path, json_resp) + + self.assertEqual(3, len(prepended_json['frames'])) + + def test_correct_paths(self): + json_resp = self._mock_json() + + data_path = pathlib.Path('/data') + expected = ['/data/st1012.png', '/data/st1013.png', '/data/st1014.png'] + prepended_json = prepend_file_paths(data_path, json_resp) + + for key in prepended_json['frames'].keys(): + self.assertIn(key, expected) + + def test_deep_copy(self): + json_resp = self._mock_json() + data_path = pathlib.Path('/data') + + prepended_json = prepend_file_paths(data_path, json_resp) + self.assertNotEqual(id(json_resp), id(prepended_json)) + + +class TestTrimFilepaths(unittest.TestCase): + def _mock_json(self): + json_str_fixture = """ + { + "frames": { + "/data/st1012.png": [ + { + } + ], + "/data/st1013.png": [ + { + } + ], + "/data/st1014.png": [ + { + } + ] + }, + "visitedFrames": [ + "/data/st1012.png", + "/data/st1013.png", + "/data/st1014.png" + ] + } + """ + + return json.loads(json_str_fixture) + + def test_trimmed_paths(self): + json_resp = self._mock_json() + + expected = ['st1012.png', 'st1013.png', 'st1014.png'] + munged_json = trim_file_paths(json_resp) + + for frame_key in munged_json['frames'].keys(): + self.assertIn(frame_key, expected) + + for frame in munged_json['visitedFrames']: + self.assertIn(frame, expected) + + def test_correct_number_of_paths(self): + json_resp = self._mock_json() + munged_json = trim_file_paths(json_resp) + + self.assertEqual(3, len(munged_json['frames'])) + self.assertEqual(3, len(munged_json['visitedFrames'])) + + def test_deep_copy(self): + json_resp = self._mock_json() + munged_json = trim_file_paths(json_resp) + self.assertNotEqual(id(json_resp), id(munged_json)) + + if __name__ == '__main__': unittest.main() \ No newline at end of file From f203f8d17a0245ee3d697aa4e43a0d16a8560fd7 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Thu, 1 Nov 2018 14:26:17 -0700 Subject: [PATCH 034/145] Created a resource install script. Split schema file into several files. Updated README (#15) * Split schema file into several files. Created a resource install script * Removed unused function * Style changes in README --- db/README.md | 24 ++++- db/functions/log_image_info_insert.sql | 12 +++ .../log_image_tagging_state_changes.sql | 14 +++ .../log_image_tagging_state_insert.sql | 12 +++ db/install-db-resources.py | 88 +++++++++++++++++++ db/tables/image_info.sql | 10 +++ db/tables/image_tagging_state.sql | 7 ++ db/tables/image_tagging_state_audit.sql | 8 ++ db/tables/image_tags.sql | 13 +++ db/tables/tag_state.sql | 5 ++ db/triggers/image_info_insert.sql | 5 ++ db/triggers/image_tagging_state_changes.sql | 5 ++ db/triggers/image_tagging_state_insert.sql | 5 ++ 13 files changed, 204 insertions(+), 4 deletions(-) create mode 100644 db/functions/log_image_info_insert.sql create mode 100644 db/functions/log_image_tagging_state_changes.sql create mode 100644 db/functions/log_image_tagging_state_insert.sql create mode 100644 db/install-db-resources.py create mode 100644 db/tables/image_info.sql create mode 100644 db/tables/image_tagging_state.sql create mode 100644 db/tables/image_tagging_state_audit.sql create mode 100644 db/tables/image_tags.sql create mode 100644 db/tables/tag_state.sql create mode 100644 db/triggers/image_info_insert.sql create mode 100644 db/triggers/image_tagging_state_changes.sql create mode 100644 db/triggers/image_tagging_state_insert.sql diff --git a/db/README.md b/db/README.md index fe3dbd5e..6e44fb92 100644 --- a/db/README.md +++ b/db/README.md @@ -2,9 +2,9 @@ This directory contains database schemas, deployment script, and test data generation. -## Creating a PostgreSQL DB on Azure +## Creating a PostgreSQL host on Azure -The _Deploy-Postgres-DB_ shell script will deploy a [PostgreSQL database in Azure](https://azure.microsoft.com/en-us/services/postgresql/). The script assumes you have the [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) installed and are already [logged into the CLI](https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli?view=azure-cli-latest) with the subscription you wish to deploy to. +The _Deploy-Postgres-DB_ shell script will deploy a [PostgreSQL server in Azure](https://azure.microsoft.com/en-us/services/postgresql/). The script assumes you have the [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) installed and are already [logged into the CLI](https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli?view=azure-cli-latest) with the subscription you wish to deploy to. Once the above is ready run the command below by replacing the 3 arguments @@ -12,9 +12,25 @@ Once the above is ready run the command below by replacing the 3 arguments $ sh Deploy-Postgres-DB.sh RESOURCE_GROUP_NAME POSTGRES_SERVER_NAME POSTGRES_USER ``` -## Deploying table schemas to your PostgreSQL DB on Azure +## Deploying a PostgreSQL database and installing resources -TODO +The _install-db-resources.py_ file will install SQL resources from the functions, tables, and triggers directories. A pre-requiste for installation is to set environment variables for **DB_HOST**, **DB_USER**, and **DB_PASS** + +An example for setting the environment variables can be seen below + +```sh +$ export DB_HOST=(POSTGRES_SERVER_NAME) DB_USER=(POSTGRES_USER@POSTGRES_SERVER) DB_PASS=(PASSWORD) +``` + +**Please note**: The DB_PASS is the same password used when executing the _Deploy-Postgres-DB_ shell file. + +Now that environment variables are set execute the following where _(MyDatabaseName)_ is replaced with the name of the PostgreSQL database you want to create on the existing host. + +```sh +$ python3 install-db-resources.py (MyDatabaseName) +``` + +If all is successful you will see list of installed files. ## Running an integration test on PostgreSQL DB on Azure diff --git a/db/functions/log_image_info_insert.sql b/db/functions/log_image_info_insert.sql new file mode 100644 index 00000000..52617256 --- /dev/null +++ b/db/functions/log_image_info_insert.sql @@ -0,0 +1,12 @@ +--On insert of new image info rows we automatically create an entry in the state table +CREATE OR REPLACE FUNCTION log_image_info_insert() + RETURNS trigger AS + ' + BEGIN + INSERT INTO Image_Tagging_State(ImageId,TagStateId,ModifiedDtim,CreatedDtim) + VALUES(NEW.ImageId,0,current_timestamp,current_timestamp); + + RETURN NEW; + END; + ' + LANGUAGE plpgsql; \ No newline at end of file diff --git a/db/functions/log_image_tagging_state_changes.sql b/db/functions/log_image_tagging_state_changes.sql new file mode 100644 index 00000000..df65ed55 --- /dev/null +++ b/db/functions/log_image_tagging_state_changes.sql @@ -0,0 +1,14 @@ +-- ActionFlag: 1 = insert, 2 = update, 3 = delete +CREATE OR REPLACE FUNCTION log_image_tagging_state_changes() + RETURNS trigger AS + ' + BEGIN + IF NEW.TagStateId <> OLD.TagStateId THEN + INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedDtim,ArchiveDtim,ActionFlag) + VALUES(NEW.ImageId,NEW.TagStateId,NEW.ModifiedDtim,current_timestamp,2); + END IF; + + RETURN NEW; + END; + ' + LANGUAGE plpgsql; \ No newline at end of file diff --git a/db/functions/log_image_tagging_state_insert.sql b/db/functions/log_image_tagging_state_insert.sql new file mode 100644 index 00000000..1e011ae0 --- /dev/null +++ b/db/functions/log_image_tagging_state_insert.sql @@ -0,0 +1,12 @@ +-- ActionFlag: 1 = insert, 2 = update, 3 = delete +CREATE OR REPLACE FUNCTION log_image_tagging_state_insert() + RETURNS trigger AS + ' + BEGIN + INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedDtim,ArchiveDtim,ActionFlag) + VALUES(NEW.ImageId,NEW.TagStateId,NEW.ModifiedDtim,current_timestamp,1); + + RETURN NEW; + END; + ' + LANGUAGE plpgsql; \ No newline at end of file diff --git a/db/install-db-resources.py b/db/install-db-resources.py new file mode 100644 index 00000000..ee52c552 --- /dev/null +++ b/db/install-db-resources.py @@ -0,0 +1,88 @@ +import pg8000 +import os +import sys +from os import listdir +from os.path import isfile, join + +default_postgres_db_name = "postgres" + +def read_file_as_string(local_file_name): + data = None + with open(local_file_name, 'r') as myfile: + data = myfile.read() + if not data: + print("The file {0} is empty. ".format(local_file_name)) + return data + +def execute_queries_from_map(conn, file_query_map): + cursor = conn.cursor() + if(len(file_query_map)>0): + print("Installed: \n") + for file_path,query in file_query_map.items(): + cursor.execute(query) + conn.commit() + print("\t{0}".format(file_path)) + return + +def create_database(conn, db_name): + if db_name: + cursor = conn.cursor() + conn.autocommit = True + query = "CREATE DATABASE {0};" + print("\nAttempting to create database '{0}'...This may take up to 30 seconds".format(db_name)) + cursor.execute(query.format(db_name)) + print("Successfully created database named '{0}'".format(db_name)) + else: + print("No database created due to empty parameter") + return + +def get_connection(): + return __new_postgres_connection(os.environ['DB_HOST'],os.environ['DB_NAME'],os.environ['DB_USER'],os.environ['DB_PASS']) + +def __new_postgres_connection(host_name,db_name,db_user,db_pass): + return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) + +def get_file_query_map(sub_dir_name): + dirname = os.path.dirname(__file__) + full_sub_dir_path = os.path.join(dirname, sub_dir_name) + sub_dir_scripts = [join(full_sub_dir_path, f) for f in listdir(full_sub_dir_path) if isfile(join(full_sub_dir_path, f))] + file_query_map = {f:read_file_as_string(f) for f in sub_dir_scripts} + return file_query_map + +def get_default_connection(): + return __new_postgres_connection(os.environ['DB_HOST'],default_postgres_db_name,os.environ['DB_USER'],os.environ['DB_PASS']) + +def get_connection_for_db(db_name): + return __new_postgres_connection(os.environ['DB_HOST'],db_name,os.environ['DB_USER'],os.environ['DB_PASS']) + +def execute_files_in_dir_list(conn,list_of_sub_dirs): + for sub_dir in list_of_sub_dirs: + print("\n****\tReading files in '{0}' directory\t****\n".format(sub_dir)) + file_query_map = get_file_query_map(sub_dir) + if '' in file_query_map.values(): + print("One of the files is empty. Please fix") + return + execute_queries_from_map(conn,file_query_map) + +def main(db_name): + try: + if(os.getenv("DB_HOST") is None or os.getenv("DB_USER") is None or os.getenv("DB_PASS") is None): + print("Please set environment variables for DB_HOST, DB_USER, DB_PASS") + return + + #Set up the database + create_database(get_default_connection(),db_name) + + #Connect to the new database and install resources + conn = get_connection_for_db(db_name) + sub_dirs = ["tables","functions","triggers"] + execute_files_in_dir_list(conn,sub_dirs) + + print("Done!") + except Exception as e: print(e) + +if __name__ == "__main__": + if (len(sys.argv) != 2): + print("Expected 1 argument of type string for db_name") + else: + main(str(sys.argv[1])) diff --git a/db/tables/image_info.sql b/db/tables/image_info.sql new file mode 100644 index 00000000..b094550b --- /dev/null +++ b/db/tables/image_info.sql @@ -0,0 +1,10 @@ +-- Set up table and autoincrementing primary key +CREATE TABLE Image_Info ( + ImageId SERIAL PRIMARY KEY, + OriginalImageName text NOT NULL, + ImageLocation text, + Height integer NOT NULL, + Width integer NOT NULL, + ModifiedDtim timestamp NOT NULL default current_timestamp, + CreatedDtim timestamp NOT NULL default current_timestamp +); \ No newline at end of file diff --git a/db/tables/image_tagging_state.sql b/db/tables/image_tagging_state.sql new file mode 100644 index 00000000..dbe230ef --- /dev/null +++ b/db/tables/image_tagging_state.sql @@ -0,0 +1,7 @@ +-- Set up table and autoincrementing primary key +CREATE TABLE Image_Tagging_State ( + ImageId integer REFERENCES Image_Info(ImageId), + TagStateId integer NOT NULL, + ModifiedDtim timestamp NOT NULL default current_timestamp, + CreatedDtim timestamp NOT NULL default current_timestamp +); \ No newline at end of file diff --git a/db/tables/image_tagging_state_audit.sql b/db/tables/image_tagging_state_audit.sql new file mode 100644 index 00000000..16c8c992 --- /dev/null +++ b/db/tables/image_tagging_state_audit.sql @@ -0,0 +1,8 @@ +CREATE TABLE Image_Tagging_State_Audit ( + RowId serial primary key, + ImageId integer NOT NULL, + TagStateId integer NOT NULL, + ModifiedDtim timestamp NOT NULL, + ArchiveDtim timestamp NOT NULL, + ActionFlag integer NOT NULL +); \ No newline at end of file diff --git a/db/tables/image_tags.sql b/db/tables/image_tags.sql new file mode 100644 index 00000000..9bc65713 --- /dev/null +++ b/db/tables/image_tags.sql @@ -0,0 +1,13 @@ +-- Set up table +CREATE TABLE Image_Tags ( + ImageTagId integer NOT NULL, + ImageId integer REFERENCES Image_Info(ImageId) ON DELETE RESTRICT, + --ClassificationId text NOT NULL, --Needed? + --Confidence double precision NOT NULL, --Needed? + X_Min integer NOT NULL, + X_Max integer NOT NULL, + Y_Min integer NOT NULL, + Y_Max integer NOT NULL, + --VOTT_Data json NOT NULL + PRIMARY KEY (ImageTagId,ImageId) +); \ No newline at end of file diff --git a/db/tables/tag_state.sql b/db/tables/tag_state.sql new file mode 100644 index 00000000..0b664649 --- /dev/null +++ b/db/tables/tag_state.sql @@ -0,0 +1,5 @@ +-- Set up table +CREATE TABLE TagState ( + TagStateId integer NOT NULL, + TagStateName text NOT NULL +); \ No newline at end of file diff --git a/db/triggers/image_info_insert.sql b/db/triggers/image_info_insert.sql new file mode 100644 index 00000000..6ff15de4 --- /dev/null +++ b/db/triggers/image_info_insert.sql @@ -0,0 +1,5 @@ +--DROP TRIGGER IF EXISTS image_info_insert ON Image_Info; +CREATE TRIGGER image_info_insert + AFTER INSERT ON Image_Info + FOR EACH ROW + EXECUTE PROCEDURE log_image_info_insert(); \ No newline at end of file diff --git a/db/triggers/image_tagging_state_changes.sql b/db/triggers/image_tagging_state_changes.sql new file mode 100644 index 00000000..c4677fe7 --- /dev/null +++ b/db/triggers/image_tagging_state_changes.sql @@ -0,0 +1,5 @@ +--DROP TRIGGER IF EXISTS image_tagging_state_changes ON Image_Tagging_State; +CREATE TRIGGER image_tagging_state_changes + BEFORE UPDATE ON Image_Tagging_State + FOR EACH ROW + EXECUTE PROCEDURE log_image_tagging_state_changes(); diff --git a/db/triggers/image_tagging_state_insert.sql b/db/triggers/image_tagging_state_insert.sql new file mode 100644 index 00000000..a917c8eb --- /dev/null +++ b/db/triggers/image_tagging_state_insert.sql @@ -0,0 +1,5 @@ +--DROP TRIGGER IF EXISTS image_tagging_state_insert ON Image_Tagging_State; +CREATE TRIGGER image_tagging_state_insert + AFTER INSERT ON Image_Tagging_State + FOR EACH ROW + EXECUTE PROCEDURE log_image_tagging_state_insert(); \ No newline at end of file From 6dbd3dff07e4353461f048616ada1ca614126a1f Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Thu, 1 Nov 2018 16:01:55 -0700 Subject: [PATCH 035/145] Added deployment scripts for Python AZ Functions and App Insight --- db/Deploy-AppInsights.sh | 14 ++++++++ db/Deploy-Python-Functions.sh | 67 +++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 db/Deploy-AppInsights.sh create mode 100644 db/Deploy-Python-Functions.sh diff --git a/db/Deploy-AppInsights.sh b/db/Deploy-AppInsights.sh new file mode 100644 index 00000000..c5883def --- /dev/null +++ b/db/Deploy-AppInsights.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +#Exit on error +set -e + +ResourceGroup=$1 +NamePrefix=$2 + +az resource create \ + --resource-group $ResourceGroup \ + --resource-type "Microsoft.Insights/components" \ + --name $NamePrefix-appinsights \ + --location WestUS2 \ + --properties '{"Application_Type":"other", "Flow_Type":"Redfield", "Request_Source":"IbizaAIExtension","HockeyAppId": null,"SamplingPercentage": null}' \ No newline at end of file diff --git a/db/Deploy-Python-Functions.sh b/db/Deploy-Python-Functions.sh new file mode 100644 index 00000000..ffd9c2ee --- /dev/null +++ b/db/Deploy-Python-Functions.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +#Automation based from instructions hre: https://github.com/Azure/Azure-Functions/wiki/Azure-Functions-on-Linux-Preview + +#Exit on error +set -e + +ResourceGroup=$1 +StorageName=$2 +FunctionAppName=$3 + +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then + echo "Expected usage: 'sh $0 (Azure Resource Group Name) (Azure Function Storage Name) (Azure Function App Name)'" + exit 1 +fi + +StorageNameLength=${#StorageName} +if [ $StorageNameLength -lt 3 -o $StorageNameLength -gt 24 ]; then + echo "Storage account name must be between 3 and 24 characters in length." + exit 1 +fi + +if [[ "$StorageName" != *[a-z0-9]* ]]; then + echo "Storage account name must use numbers and lower-case letters only" + exit 1 +fi + + +#$filtered_output=$(az extension list) +# See http://jmespath.org/tutorial.html for querying +filtered_output=$(az extension list --query "[?name=='functionapp'].name") + +if [[ $filtered_output =~ "functionapp" ]]; +then + echo + echo "Removing existng Azure CLI extension..." + az extension remove -n functionapp +fi + +TempDownloadLocation="/tmp/functionapp-0.0.2-py2.py3-none-any.whl" + +echo +echo "Downloading Azure CLI extension for the Azure Functions Linux Consumption preview" +echo +curl -s -o $TempDownloadLocation "https://functionscdn.azureedge.net/public/docs/functionapp-0.0.2-py2.py3-none-any.whl" + +echo +echo "Installing Azure CLI extension for the Azure Functions Linux Consumption preview" +echo +az extension add --yes --source $TempDownloadLocation + +echo +echo "Create a resource group (if it does not exist for the current subscription)" +echo +az group create -n $ResourceGroup -l "WestUS" + +echo +echo "Create a storage account for the function (if it does not exist for the current subscription)" +echo +az storage account create -n $StorageName -l "WestUS" -g $ResourceGroup --sku Standard_LRS + + +echo +echo "Create a function app (if it does not exist for the current subscription)" +echo +az functionapp createpreviewapp -n $FunctionAppName -g $ResourceGroup -l "WestUS" -s $StorageName --runtime python --is-linux + From 70bcbd72806cee056a26f6cca03b36fe7bb29187 Mon Sep 17 00:00:00 2001 From: Amanda Kaufman Date: Thu, 1 Nov 2018 17:17:20 -0600 Subject: [PATCH 036/145] Created HTTP Trigger function for onboarding scenario. Started building mock client for testing. --- .../onboarding/OnboardingTrigger/__init__.py | 18 +++++++++++++++++ .../OnboardingTrigger/function.json | 20 +++++++++++++++++++ .../onboarding/OnboardingTrigger/host.json | 3 +++ .../OnboardingTrigger/onboarding-client.py | 17 ++++++++++++++++ .../onboarding/OnboardingTrigger/sample.dat | 3 +++ .../onboarding/OnboardingTrigger/urlList.json | 1 + functions/pipeline/onboarding/host.json | 3 +++ 7 files changed, 65 insertions(+) create mode 100644 functions/pipeline/onboarding/OnboardingTrigger/__init__.py create mode 100644 functions/pipeline/onboarding/OnboardingTrigger/function.json create mode 100644 functions/pipeline/onboarding/OnboardingTrigger/host.json create mode 100644 functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py create mode 100644 functions/pipeline/onboarding/OnboardingTrigger/sample.dat create mode 100644 functions/pipeline/onboarding/OnboardingTrigger/urlList.json create mode 100644 functions/pipeline/onboarding/host.json diff --git a/functions/pipeline/onboarding/OnboardingTrigger/__init__.py b/functions/pipeline/onboarding/OnboardingTrigger/__init__.py new file mode 100644 index 00000000..e58aafac --- /dev/null +++ b/functions/pipeline/onboarding/OnboardingTrigger/__init__.py @@ -0,0 +1,18 @@ +import logging +import azure.functions as func + + +def main(req: func.HttpRequest) -> func.HttpResponse: + logging.info('Python HTTP trigger function processed a request.') + + try: + req_body = req.get_json() + logging.error(req.get_json()) + url_list = req_body["imageUrls"] + url_string = (", ".join(url_list)) + except ValueError: + print("Unable to decode JSON body") + return func.HttpResponse("Unable to decode POST body", status_code=400) + + logging.error(req_body) + return func.HttpResponse("Got body: " + url_string, status_code=200) \ No newline at end of file diff --git a/functions/pipeline/onboarding/OnboardingTrigger/function.json b/functions/pipeline/onboarding/OnboardingTrigger/function.json new file mode 100644 index 00000000..4667f0ac --- /dev/null +++ b/functions/pipeline/onboarding/OnboardingTrigger/function.json @@ -0,0 +1,20 @@ +{ + "scriptFile": "__init__.py", + "bindings": [ + { + "authLevel": "anonymous", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "get", + "post" + ] + }, + { + "type": "http", + "direction": "out", + "name": "$return" + } + ] +} \ No newline at end of file diff --git a/functions/pipeline/onboarding/OnboardingTrigger/host.json b/functions/pipeline/onboarding/OnboardingTrigger/host.json new file mode 100644 index 00000000..81e35b7b --- /dev/null +++ b/functions/pipeline/onboarding/OnboardingTrigger/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" +} \ No newline at end of file diff --git a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py new file mode 100644 index 00000000..7b4058ce --- /dev/null +++ b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py @@ -0,0 +1,17 @@ +import requests +import json + +print("\nTest client for CLI Onboarding scenario\n-------------------------------------\n") + +print("Now executing cURL POST request to onboard images...") + +functionURL = "http://localhost:7071/api/TestHTTPTrigger" +urlList = { "imageUrls": ["url1", "url2", "url3"] } + +response = requests.post(url = functionURL, data = json.dumps(urlList)) + +print("Completed cURL POST request.") + +postresponse = response.text + +print("Response: " + response.text) diff --git a/functions/pipeline/onboarding/OnboardingTrigger/sample.dat b/functions/pipeline/onboarding/OnboardingTrigger/sample.dat new file mode 100644 index 00000000..26aac46f --- /dev/null +++ b/functions/pipeline/onboarding/OnboardingTrigger/sample.dat @@ -0,0 +1,3 @@ +{ + "name": "Azure" +} \ No newline at end of file diff --git a/functions/pipeline/onboarding/OnboardingTrigger/urlList.json b/functions/pipeline/onboarding/OnboardingTrigger/urlList.json new file mode 100644 index 00000000..41db355d --- /dev/null +++ b/functions/pipeline/onboarding/OnboardingTrigger/urlList.json @@ -0,0 +1 @@ +{ "imageUrls": [ "url1", "url2", "url3" ] } \ No newline at end of file diff --git a/functions/pipeline/onboarding/host.json b/functions/pipeline/onboarding/host.json new file mode 100644 index 00000000..81e35b7b --- /dev/null +++ b/functions/pipeline/onboarding/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" +} \ No newline at end of file From 26e670e901832881bcf2aac3ed62e7f3d1545f71 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Thu, 1 Nov 2018 16:26:54 -0700 Subject: [PATCH 037/145] Added AppInsight Key update. Small changes --- db/Deploy-AppInsights.sh | 10 ++++++++-- db/Deploy-Postgres-DB.sh | 2 +- db/Deploy-Python-Functions.sh | 14 ++++++++++++-- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/db/Deploy-AppInsights.sh b/db/Deploy-AppInsights.sh index c5883def..3c85d46d 100644 --- a/db/Deploy-AppInsights.sh +++ b/db/Deploy-AppInsights.sh @@ -4,11 +4,17 @@ set -e ResourceGroup=$1 -NamePrefix=$2 +AppInsightsName=$2 + +# Check if any of the args are empty +if [ -z "$1" ] || [ -z "$2" ]; then + echo "Usage: 'sh $0 (Azure Resource Group Name) (AppInsights Name)'" + exit 1 +fi az resource create \ --resource-group $ResourceGroup \ --resource-type "Microsoft.Insights/components" \ - --name $NamePrefix-appinsights \ + --name $AppInsightsName \ --location WestUS2 \ --properties '{"Application_Type":"other", "Flow_Type":"Redfield", "Request_Source":"IbizaAIExtension","HockeyAppId": null,"SamplingPercentage": null}' \ No newline at end of file diff --git a/db/Deploy-Postgres-DB.sh b/db/Deploy-Postgres-DB.sh index a8cf8723..70c10442 100644 --- a/db/Deploy-Postgres-DB.sh +++ b/db/Deploy-Postgres-DB.sh @@ -10,7 +10,7 @@ Local_IP_Address=$(curl -s http://whatismyip.akamai.com/) # Check if any of the args are empty if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then - echo "Expected usage: 'sh $0 (Azure Resource Group Name) (PostGres ServerName) (PostGres UserName)'" + echo "Usage: 'sh $0 (Azure Resource Group Name) (PostGres ServerName) (PostGres UserName)'" exit 1 fi diff --git a/db/Deploy-Python-Functions.sh b/db/Deploy-Python-Functions.sh index ffd9c2ee..45de075b 100644 --- a/db/Deploy-Python-Functions.sh +++ b/db/Deploy-Python-Functions.sh @@ -8,9 +8,10 @@ set -e ResourceGroup=$1 StorageName=$2 FunctionAppName=$3 +AppInsightsName=$4 -if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then - echo "Expected usage: 'sh $0 (Azure Resource Group Name) (Azure Function Storage Name) (Azure Function App Name)'" +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ]; then + echo "Usage: 'sh $0 (Azure Resource Group Name) (Azure Function Storage Name) (Azure Function App Name) (AppInsightsName)'" exit 1 fi @@ -65,3 +66,12 @@ echo "Create a function app (if it does not exist for the current subscription)" echo az functionapp createpreviewapp -n $FunctionAppName -g $ResourceGroup -l "WestUS" -s $StorageName --runtime python --is-linux +echo +echo "Retrieving App Insights Id for $AppInsightsName" +echo +AppInsightsKey=$(az resource show -g $ResourceGroup -n $AppInsightsName --resource-type "Microsoft.Insights/components" --query properties.InstrumentationKey) + +echo +echo "Setting application setting APPINSIGHTS_INSTRUMENTATIONKEY on $FunctionAppName" +echo +az functionapp config appsettings set --name $FunctionAppName --resource-group $ResourceGroup --settings "APPINSIGHTS_INSTRUMENTATIONKEY = $AppInsightsKey" \ No newline at end of file From c7ac68b499302fb8f79b84c618ea7a39d6e4075b Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Thu, 1 Nov 2018 16:31:42 -0700 Subject: [PATCH 038/145] Adding script to create storage containers --- functions/create-storage.sh | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100755 functions/create-storage.sh diff --git a/functions/create-storage.sh b/functions/create-storage.sh new file mode 100755 index 00000000..7251ea78 --- /dev/null +++ b/functions/create-storage.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Need commands to fail early. +set -e +set -o pipefail + +if ! [ -x "$(command -v az)" ]; then + echo "Error Azure CLI not installed."; >&2 + echo "See: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest to install Azure CLI"; >&2 + exit 1 +fi + +if [ -z "$RESOURCE_GROUP" ]; then + echo "Need to set resource group in the environment."; >&2 + exit 1 +fi + +if [ -z "$STORAGE_NAME" ]; then + echo "Need to set storage name in the environment."; >&2 + exit 1 +fi + +echo "Creating Storage Account" + +az storage account create --resource-group $RESOURCE_GROUP --name $STORAGE_NAME --sku Standard_LRS +STORAGE_KEY=`az storage account keys list -n $STORAGE_NAME --query [0].value` + + +echo "Creating Temporary Storage Container" +az storage container create -n temporary --account-key $STORAGE_KEY --account-name $STORAGE_NAME + +echo "Creating Permanent Storage Container" +az storage container create -n permanent --account-key $STORAGE_KEY --account-name $STORAGE_NAME + +echo "Done!" \ No newline at end of file From f7fd2ef6ce5354a161770e457432e4a3e551fe0d Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Thu, 1 Nov 2018 14:38:43 -0700 Subject: [PATCH 039/145] Creating upload func def in pipeline Can deploy upload and download to azure via cli --- .../.python_packages/bin/easy_install | 24 ++++ .../.python_packages/bin/easy_install-3.6 | 24 ++++ .../.python_packages/bin/easy_install-3.6-3.7 | 24 ++++ .../.python_packages/bin/easy_install-3.7 | 24 ++++ functions/pipeline/upload/__init__.py | 105 ++++++++++++++++++ functions/pipeline/upload/function.json | 20 ++++ functions/pipeline/upload/sample.dat | 3 + 7 files changed, 224 insertions(+) create mode 100644 functions/pipeline/.python_packages/bin/easy_install create mode 100644 functions/pipeline/.python_packages/bin/easy_install-3.6 create mode 100644 functions/pipeline/.python_packages/bin/easy_install-3.6-3.7 create mode 100644 functions/pipeline/.python_packages/bin/easy_install-3.7 create mode 100644 functions/pipeline/upload/__init__.py create mode 100644 functions/pipeline/upload/function.json create mode 100644 functions/pipeline/upload/sample.dat diff --git a/functions/pipeline/.python_packages/bin/easy_install b/functions/pipeline/.python_packages/bin/easy_install new file mode 100644 index 00000000..877b90f8 --- /dev/null +++ b/functions/pipeline/.python_packages/bin/easy_install @@ -0,0 +1,24 @@ +#!/usr/local/opt/python/bin/python3.7 + +# -*- coding: utf-8 -*- +if __name__ == '__main__': + import sys, re + + def _resolve(module, func): + __import__(module) + mod = sys.modules[module] + parts = func.split('.') + result = getattr(mod, parts.pop(0)) + for p in parts: + result = getattr(result, p) + return result + + try: + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + + func = _resolve('setuptools.command.easy_install', 'main') + rc = func() # None interpreted as 0 + except Exception as e: # only supporting Python >= 2.6 + sys.stderr.write('%s\n' % e) + rc = 1 + sys.exit(rc) diff --git a/functions/pipeline/.python_packages/bin/easy_install-3.6 b/functions/pipeline/.python_packages/bin/easy_install-3.6 new file mode 100644 index 00000000..877b90f8 --- /dev/null +++ b/functions/pipeline/.python_packages/bin/easy_install-3.6 @@ -0,0 +1,24 @@ +#!/usr/local/opt/python/bin/python3.7 + +# -*- coding: utf-8 -*- +if __name__ == '__main__': + import sys, re + + def _resolve(module, func): + __import__(module) + mod = sys.modules[module] + parts = func.split('.') + result = getattr(mod, parts.pop(0)) + for p in parts: + result = getattr(result, p) + return result + + try: + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + + func = _resolve('setuptools.command.easy_install', 'main') + rc = func() # None interpreted as 0 + except Exception as e: # only supporting Python >= 2.6 + sys.stderr.write('%s\n' % e) + rc = 1 + sys.exit(rc) diff --git a/functions/pipeline/.python_packages/bin/easy_install-3.6-3.7 b/functions/pipeline/.python_packages/bin/easy_install-3.6-3.7 new file mode 100644 index 00000000..877b90f8 --- /dev/null +++ b/functions/pipeline/.python_packages/bin/easy_install-3.6-3.7 @@ -0,0 +1,24 @@ +#!/usr/local/opt/python/bin/python3.7 + +# -*- coding: utf-8 -*- +if __name__ == '__main__': + import sys, re + + def _resolve(module, func): + __import__(module) + mod = sys.modules[module] + parts = func.split('.') + result = getattr(mod, parts.pop(0)) + for p in parts: + result = getattr(result, p) + return result + + try: + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + + func = _resolve('setuptools.command.easy_install', 'main') + rc = func() # None interpreted as 0 + except Exception as e: # only supporting Python >= 2.6 + sys.stderr.write('%s\n' % e) + rc = 1 + sys.exit(rc) diff --git a/functions/pipeline/.python_packages/bin/easy_install-3.7 b/functions/pipeline/.python_packages/bin/easy_install-3.7 new file mode 100644 index 00000000..877b90f8 --- /dev/null +++ b/functions/pipeline/.python_packages/bin/easy_install-3.7 @@ -0,0 +1,24 @@ +#!/usr/local/opt/python/bin/python3.7 + +# -*- coding: utf-8 -*- +if __name__ == '__main__': + import sys, re + + def _resolve(module, func): + __import__(module) + mod = sys.modules[module] + parts = func.split('.') + result = getattr(mod, parts.pop(0)) + for p in parts: + result = getattr(result, p) + return result + + try: + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + + func = _resolve('setuptools.command.easy_install', 'main') + rc = func() # None interpreted as 0 + except Exception as e: # only supporting Python >= 2.6 + sys.stderr.write('%s\n' % e) + rc = 1 + sys.exit(rc) diff --git a/functions/pipeline/upload/__init__.py b/functions/pipeline/upload/__init__.py new file mode 100644 index 00000000..35ba2823 --- /dev/null +++ b/functions/pipeline/upload/__init__.py @@ -0,0 +1,105 @@ +import logging +import os +import json +import pg8000 + +import azure.functions as func + +from enum import IntEnum, unique + +# TODO: Create DB access library ------------------------ +@unique +class ImageTagState(IntEnum): + NOT_READY = 0 + READY_TO_TAG = 1 + TAG_IN_PROGRESS = 2 + COMPLETED_TAG = 3 + INCOMPLETE_TAG = 4 + ABANDONED = 5 + +def get_connection(): + return __new_postgres_connection(os.environ['DB_HOST'],os.environ['DB_NAME'],os.environ['DB_USER'],os.environ['DB_PASS']) + +def __new_postgres_connection(host_name,db_name,db_user,db_pass): + return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) + +def update_tagged_images(conn,list_of_image_ids): + __update_images(conn,list_of_image_ids,ImageTagState.COMPLETED_TAG) + print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.COMPLETED_TAG.name}") + +def update_untagged_images(conn,list_of_image_ids): + __update_images(conn,list_of_image_ids,ImageTagState.INCOMPLETE_TAG) + print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.INCOMPLETE_TAG.name}") + +def __update_images(conn, list_of_image_ids, new_image_tag_state): + if not isinstance(new_image_tag_state, ImageTagState): + raise TypeError('new_image_tag_state must be an instance of Direction Enum') + + if(len(list_of_image_ids) > 0): + cursor = conn.cursor() + image_ids_as_strings = [str(i) for i in list_of_image_ids] + images_to_update = '{0}'.format(', '.join(image_ids_as_strings)) + query = "UPDATE Image_Tagging_State SET TagStateId = {0}, ModifiedDtim = now() WHERE ImageId IN ({1})" + cursor.execute(query.format(new_image_tag_state,images_to_update)) + conn.commit() + #print(f"Updated {len(list_of_image_ids)} image(s) to the state {new_image_tag_state.name}") + else: + print("No images to update") + +# TODO: Create DB access library ------------------------ + +# TODO: Move this into a library +def get_id_from_filename(filename): + path_components = filename.split('/') + filename = path_components[-1] + return int(filename.split('.')[0]) + +# TODO: Move this into a library +def process_vott_json(json): + all_frame_data = json['frames'] + + # Scrub filename keys to only have integer Id, drop path and file extensions. + id_to_tags_dict = {} + for full_path_key in sorted(all_frame_data.keys()): + id_to_tags_dict[get_id_from_filename(full_path_key)] = all_frame_data[full_path_key] + all_ids = id_to_tags_dict.keys() + + # Do the same with visitedFrames + visited_ids = sorted(json['visitedFrames']) + for index, filename in enumerate(visited_ids): + visited_ids[index] = get_id_from_filename(filename) + + # Unvisisted imageIds + unvisited_ids = sorted(list(set(all_ids) - set(visited_ids))) + + return { + "totalNumImages" : len(all_ids), + "numImagesVisted" : len(visited_ids), + "numImagesNotVisted" : len(unvisited_ids), + "imagesVisited" : visited_ids, + "imageNotVisisted" : unvisited_ids + } + +def main(req: func.HttpRequest) -> func.HttpResponse: + logging.info('Python HTTP trigger function processed a request.') + + try: + + vott_json = req.get_json() + stats = process_vott_json(vott_json) + + # Update tagged images + update_tagged_images(get_connection(), stats["imagesVisited"]) + + # Update untagged images + update_untagged_images(get_connection(), stats["imageNotVisisted"]) + + return func.HttpResponse( + str(stats) + str(os.environ), + status_code=200 + ) + except Exception as e: + return func.HttpResponse( + "exception:" + str(e), + status_code=500 + ) \ No newline at end of file diff --git a/functions/pipeline/upload/function.json b/functions/pipeline/upload/function.json new file mode 100644 index 00000000..550280c8 --- /dev/null +++ b/functions/pipeline/upload/function.json @@ -0,0 +1,20 @@ +{ + "scriptFile": "__init__.py", + "bindings": [ + { + "authLevel": "anonymous", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "put", + "post" + ] + }, + { + "type": "http", + "direction": "out", + "name": "$return" + } + ] +} \ No newline at end of file diff --git a/functions/pipeline/upload/sample.dat b/functions/pipeline/upload/sample.dat new file mode 100644 index 00000000..2e609439 --- /dev/null +++ b/functions/pipeline/upload/sample.dat @@ -0,0 +1,3 @@ +{ + "name": "Azure" +} \ No newline at end of file From 97c004aae54d1c1c288812ba070f2930ff0b2388 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Thu, 1 Nov 2018 17:35:40 -0700 Subject: [PATCH 040/145] uploading tag state in data_access. Removing unneeded debug in upload response. also adding onboarding to deployment --- functions/pipeline/onboarding/__init__.py | 18 ++++++++++++++++++ functions/pipeline/onboarding/function.json | 20 ++++++++++++++++++++ functions/pipeline/onboarding/sample.dat | 3 +++ functions/pipeline/shared/data_access.py | 7 +++---- functions/pipeline/upload/__init__.py | 2 +- 5 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 functions/pipeline/onboarding/__init__.py create mode 100644 functions/pipeline/onboarding/function.json create mode 100644 functions/pipeline/onboarding/sample.dat diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py new file mode 100644 index 00000000..9bb6528f --- /dev/null +++ b/functions/pipeline/onboarding/__init__.py @@ -0,0 +1,18 @@ +import logging +import azure.functions as func + + +def main(req: func.HttpRequest) -> func.HttpResponse: + logging.info('Python HTTP trigger function processed a request.') + + try: + req_body = req.get_json() + logging.error(req.get_json()) + url_list = req_body["imageUrls"] + url_string = (", ".join(url_list)) + except ValueError: + print("Unable to decode JSON body") + return func.HttpResponse("Unable to decode POST body", status_code=400) + + logging.error(req_body) + return func.HttpResponse("Got body: " + url_string, status_code=200) \ No newline at end of file diff --git a/functions/pipeline/onboarding/function.json b/functions/pipeline/onboarding/function.json new file mode 100644 index 00000000..4667f0ac --- /dev/null +++ b/functions/pipeline/onboarding/function.json @@ -0,0 +1,20 @@ +{ + "scriptFile": "__init__.py", + "bindings": [ + { + "authLevel": "anonymous", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "get", + "post" + ] + }, + { + "type": "http", + "direction": "out", + "name": "$return" + } + ] +} \ No newline at end of file diff --git a/functions/pipeline/onboarding/sample.dat b/functions/pipeline/onboarding/sample.dat new file mode 100644 index 00000000..2e609439 --- /dev/null +++ b/functions/pipeline/onboarding/sample.dat @@ -0,0 +1,3 @@ +{ + "name": "Azure" +} \ No newline at end of file diff --git a/functions/pipeline/shared/data_access.py b/functions/pipeline/shared/data_access.py index 8d3a8420..1ba005fa 100644 --- a/functions/pipeline/shared/data_access.py +++ b/functions/pipeline/shared/data_access.py @@ -5,10 +5,9 @@ import pg8000 # Getting an error - E0401: Unable to import # Constants -untagged_state = 0 -tagging_state = 1 -tagged_state = 2 - +untagged_state = 1 +tagging_state = 2 +tagged_state = 3 host = os.getenv('DB_HOST', None) user = os.getenv('DB_USER', None) diff --git a/functions/pipeline/upload/__init__.py b/functions/pipeline/upload/__init__.py index 35ba2823..b64285c0 100644 --- a/functions/pipeline/upload/__init__.py +++ b/functions/pipeline/upload/__init__.py @@ -95,7 +95,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: update_untagged_images(get_connection(), stats["imageNotVisisted"]) return func.HttpResponse( - str(stats) + str(os.environ), + str(stats), status_code=200 ) except Exception as e: From f2983cef0079fcf7f2ad74f9c4e31a352c463dea Mon Sep 17 00:00:00 2001 From: Amanda Kaufman Date: Fri, 2 Nov 2018 11:56:53 -0600 Subject: [PATCH 041/145] Added actual image URLs from random Google Image search for testing. Added headers to fix issue with JSON decoding by HTTP trigger function. --- .../onboarding/OnboardingTrigger/onboarding-client.py | 11 +++++++---- .../onboarding/OnboardingTrigger/urlList.json | 4 +++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py index 7b4058ce..fdc7e634 100644 --- a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py +++ b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py @@ -5,13 +5,16 @@ print("Now executing cURL POST request to onboard images...") -functionURL = "http://localhost:7071/api/TestHTTPTrigger" -urlList = { "imageUrls": ["url1", "url2", "url3"] } +functionURL = "https://mtarngfunc-test.azurewebsites.net/api/onboarding?code=ezQ4rW/DvaNtm6DlHZ7XQp1Enrtao3WpsW4FFR5V/nFLVb9vq4P7PQ==" +headers = {"Content-Type": "application/json"} +urlList = { "imageUrls": ["http://www.whitneyway.com/Images/15/2017%20Puppies%20in%20Easter%20basket%204-16-17_800.JPG", + "http://allpetcages.com/wp-content/uploads/2017/06/puppy-whelping-box.jpg", + "http://78.media.tumblr.com/eea2f882ec08255e40cecaf8ca1d4543/tumblr_nmxjbjIK141qi4ucgo1_500.jpg"] } -response = requests.post(url = functionURL, data = json.dumps(urlList)) +response = requests.post(url = functionURL, headers=headers, data = json.dumps(urlList)) print("Completed cURL POST request.") postresponse = response.text -print("Response: " + response.text) +print("Response: " + response.text) \ No newline at end of file diff --git a/functions/pipeline/onboarding/OnboardingTrigger/urlList.json b/functions/pipeline/onboarding/OnboardingTrigger/urlList.json index 41db355d..b1a20e7c 100644 --- a/functions/pipeline/onboarding/OnboardingTrigger/urlList.json +++ b/functions/pipeline/onboarding/OnboardingTrigger/urlList.json @@ -1 +1,3 @@ -{ "imageUrls": [ "url1", "url2", "url3" ] } \ No newline at end of file +{ "imageUrls": ["http://www.whitneyway.com/Images/15/2017%20Puppies%20in%20Easter%20basket%204-16-17_800.JPG", + "http://allpetcages.com/wp-content/uploads/2017/06/puppy-whelping-box.jpg", + "http://78.media.tumblr.com/eea2f882ec08255e40cecaf8ca1d4543/tumblr_nmxjbjIK141qi4ucgo1_500.jpg"] } \ No newline at end of file From 201bf41b531e4eac3a9672165ffe9035fe8a5fd0 Mon Sep 17 00:00:00 2001 From: Amanda Kaufman Date: Fri, 2 Nov 2018 12:10:44 -0600 Subject: [PATCH 042/145] Formatted response output for readability during testing. --- .../onboarding/OnboardingTrigger/onboarding-client.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py index fdc7e634..d270cb95 100644 --- a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py +++ b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py @@ -11,10 +11,12 @@ "http://allpetcages.com/wp-content/uploads/2017/06/puppy-whelping-box.jpg", "http://78.media.tumblr.com/eea2f882ec08255e40cecaf8ca1d4543/tumblr_nmxjbjIK141qi4ucgo1_500.jpg"] } -response = requests.post(url = functionURL, headers=headers, data = json.dumps(urlList)) +response = requests.post(url = functionURL, headers=headers, json = urlList) print("Completed cURL POST request.") -postresponse = response.text +raw_response = response.text +response_array = raw_response.split(", ") +response_output = "\n".join(response_array) -print("Response: " + response.text) \ No newline at end of file +print("Response: " + response_output) \ No newline at end of file From c73270646f9d09c257387d90c6f361c7c7de7b5f Mon Sep 17 00:00:00 2001 From: Amanda Kaufman Date: Fri, 2 Nov 2018 12:18:51 -0600 Subject: [PATCH 043/145] Added response status code to output for testing. --- .../onboarding/OnboardingTrigger/onboarding-client.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py index d270cb95..4bb98b9e 100644 --- a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py +++ b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py @@ -1,9 +1,13 @@ import requests import json +# The following mock client imitates the CLI during the onboarding scenario for new images. +# The CLI uploads images to a temporary blob store, then gets a list of URLs to those images and +# passes it to an HTTP trigger function, which calls the DAL to create rows in the database. + print("\nTest client for CLI Onboarding scenario\n-------------------------------------\n") -print("Now executing cURL POST request to onboard images...") +print("Now executing POST request to onboard images...") functionURL = "https://mtarngfunc-test.azurewebsites.net/api/onboarding?code=ezQ4rW/DvaNtm6DlHZ7XQp1Enrtao3WpsW4FFR5V/nFLVb9vq4P7PQ==" headers = {"Content-Type": "application/json"} @@ -19,4 +23,5 @@ response_array = raw_response.split(", ") response_output = "\n".join(response_array) +print("Response status code: " + str(response.status_code)) print("Response: " + response_output) \ No newline at end of file From 96329f790ebe4a3f29ff0b4dbc2f6a3b726d412a Mon Sep 17 00:00:00 2001 From: Amanda Kaufman Date: Fri, 2 Nov 2018 12:43:51 -0600 Subject: [PATCH 044/145] Change to function.json, removed get method. Deleted sample.dat. --- functions/pipeline/onboarding/OnboardingTrigger/function.json | 1 - functions/pipeline/onboarding/OnboardingTrigger/sample.dat | 3 --- 2 files changed, 4 deletions(-) delete mode 100644 functions/pipeline/onboarding/OnboardingTrigger/sample.dat diff --git a/functions/pipeline/onboarding/OnboardingTrigger/function.json b/functions/pipeline/onboarding/OnboardingTrigger/function.json index 4667f0ac..852fa7b0 100644 --- a/functions/pipeline/onboarding/OnboardingTrigger/function.json +++ b/functions/pipeline/onboarding/OnboardingTrigger/function.json @@ -7,7 +7,6 @@ "direction": "in", "name": "req", "methods": [ - "get", "post" ] }, diff --git a/functions/pipeline/onboarding/OnboardingTrigger/sample.dat b/functions/pipeline/onboarding/OnboardingTrigger/sample.dat deleted file mode 100644 index 26aac46f..00000000 --- a/functions/pipeline/onboarding/OnboardingTrigger/sample.dat +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "Azure" -} \ No newline at end of file From 395eb3779b1e297605630baa8e55760dc66e2ace Mon Sep 17 00:00:00 2001 From: Amanda Kaufman Date: Fri, 2 Nov 2018 13:07:13 -0600 Subject: [PATCH 045/145] Implemented option to read JSON URL list from a file. Fixed some formatting in HTTP response. --- .../onboarding/OnboardingTrigger/__init__.py | 2 +- .../OnboardingTrigger/onboarding-client.py | 20 +++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/functions/pipeline/onboarding/OnboardingTrigger/__init__.py b/functions/pipeline/onboarding/OnboardingTrigger/__init__.py index e58aafac..9b5cdea5 100644 --- a/functions/pipeline/onboarding/OnboardingTrigger/__init__.py +++ b/functions/pipeline/onboarding/OnboardingTrigger/__init__.py @@ -15,4 +15,4 @@ def main(req: func.HttpRequest) -> func.HttpResponse: return func.HttpResponse("Unable to decode POST body", status_code=400) logging.error(req_body) - return func.HttpResponse("Got body: " + url_string, status_code=200) \ No newline at end of file + return func.HttpResponse("Got body\n\nURL List:\n" + url_string, status_code=200) \ No newline at end of file diff --git a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py index 4bb98b9e..1fa5aba6 100644 --- a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py +++ b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py @@ -5,23 +5,27 @@ # The CLI uploads images to a temporary blob store, then gets a list of URLs to those images and # passes it to an HTTP trigger function, which calls the DAL to create rows in the database. -print("\nTest client for CLI Onboarding scenario\n-------------------------------------\n") +print("\nTest client for CLI Onboarding scenario") +print('-' * 40) print("Now executing POST request to onboard images...") -functionURL = "https://mtarngfunc-test.azurewebsites.net/api/onboarding?code=ezQ4rW/DvaNtm6DlHZ7XQp1Enrtao3WpsW4FFR5V/nFLVb9vq4P7PQ==" +#functionURL = "https://mtarngfunc-test.azurewebsites.net/api/onboarding?code=ezQ4rW/DvaNtm6DlHZ7XQp1Enrtao3WpsW4FFR5V/nFLVb9vq4P7PQ==" +functionURL = "http://localhost:7071/api/OnboardingTrigger" headers = {"Content-Type": "application/json"} -urlList = { "imageUrls": ["http://www.whitneyway.com/Images/15/2017%20Puppies%20in%20Easter%20basket%204-16-17_800.JPG", - "http://allpetcages.com/wp-content/uploads/2017/06/puppy-whelping-box.jpg", - "http://78.media.tumblr.com/eea2f882ec08255e40cecaf8ca1d4543/tumblr_nmxjbjIK141qi4ucgo1_500.jpg"] } +# urlList = { "imageUrls": ["http://www.whitneyway.com/Images/15/2017%20Puppies%20in%20Easter%20basket%204-16-17_800.JPG", +# "http://allpetcages.com/wp-content/uploads/2017/06/puppy-whelping-box.jpg", +# "http://78.media.tumblr.com/eea2f882ec08255e40cecaf8ca1d4543/tumblr_nmxjbjIK141qi4ucgo1_500.jpg"] } +with open('urlList.json', 'r') as urls: + urlList=json.loads(urls.read()) response = requests.post(url = functionURL, headers=headers, json = urlList) -print("Completed cURL POST request.") +print("Completed POST request.") raw_response = response.text response_array = raw_response.split(", ") response_output = "\n".join(response_array) -print("Response status code: " + str(response.status_code)) -print("Response: " + response_output) \ No newline at end of file +print(f"Response status code: {response.status_code}") +print(f"Response: {response_output}") \ No newline at end of file From 2c21ba29a091ee0e5840952418156ce1e86b9b78 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Fri, 2 Nov 2018 13:19:28 -0700 Subject: [PATCH 046/145] Fixing upload response body to json --- functions/pipeline/upload/__init__.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/functions/pipeline/upload/__init__.py b/functions/pipeline/upload/__init__.py index b64285c0..6f8a463d 100644 --- a/functions/pipeline/upload/__init__.py +++ b/functions/pipeline/upload/__init__.py @@ -95,11 +95,14 @@ def main(req: func.HttpRequest) -> func.HttpResponse: update_untagged_images(get_connection(), stats["imageNotVisisted"]) return func.HttpResponse( - str(stats), - status_code=200 + body = json.dumps(stats), + status_code = 200, + headers = { + "content-type": "application/json" + } ) except Exception as e: return func.HttpResponse( - "exception:" + str(e), - status_code=500 + "exception:" + str(e), + status_code = 500 ) \ No newline at end of file From 96ca20b22a500a156a27b8fbd28caf9cbc70baf1 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Fri, 2 Nov 2018 15:40:52 -0700 Subject: [PATCH 047/145] Shared files for vott and db_access --- .DS_Store | Bin 0 -> 8196 bytes functions/.DS_Store | Bin 0 -> 6148 bytes functions/pipeline/.DS_Store | Bin 0 -> 6148 bytes functions/pipeline/download/__init__.py | 2 +- functions/pipeline/shared/db_access.py | 42 ++++++++ .../shared/vott_json_parser.py} | 28 +----- functions/pipeline/upload/__init__.py | 90 ++---------------- functions/upload/function.json | 20 ---- functions/upload/host.json | 2 - 9 files changed, 53 insertions(+), 131 deletions(-) create mode 100644 .DS_Store create mode 100644 functions/.DS_Store create mode 100644 functions/pipeline/.DS_Store create mode 100644 functions/pipeline/shared/db_access.py rename functions/{upload/__init__.py => pipeline/shared/vott_json_parser.py} (51%) delete mode 100644 functions/upload/function.json delete mode 100644 functions/upload/host.json diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..54ebab083002d87246d53426958d045bae4be027 GIT binary patch literal 8196 zcmeHM(QeZ)6un-%EiFP+8fbgW3la}w>R_-3gjBliVG3AYv1EI+0BSZREN!7qAenFP}!C)p;=P+ zI@g7=qDMAh1^7fQx=B3>P+JRVJ75*C3RnfK0#*U5z(r61?`$s4Iq!XS)wWgvtH6J$ z06!mGRJIjuXUfV)2O60Iz~(V53;M_dB*)dZqU}ssNrg|9JqS$|I>iu*j_WSNVJq6s zlvQ*RicUh$EOdq<BF`tZl6VR)IwYICtM5kIraF{Y?HIB9D(SGN2tAQ>lckpR%Awl%ocLW1zkos3K4?{Jw$rHaznj21k4}IM*_qIyL308dxuX zX-Lqr#~rM(nVns18lDQ^dWfh)J~$pcn2a9=V+9O9>s3bnDHVAE(G0PI#(XUUgTX5N zf#Ht^J+1CHzZV9Bq+I?kR&x2(wROiSI>pPy*R@VOswG}B98|sjOaAr5OFF*pKa1mV z-uL|HL2FbmT|J1S#0#QUUy_4n3y@bYf~Xmfs_`&t4y2!&y5Kkkr%*3#O(uKg^0vEs z=hk%Fo$T+UzjyoYbXssWukYSJKIx9nChw;oJ|ip?p`XcgMg5+)U(j13&bwMa3gf8F zRMa(WU>BRw=55UiCpR!H+!{Rustt65#s-#en>2PE*kd}NBYI3VIx^6_(P?yno&x!R z4(So>lADRQT{x+2FUbS*7F!?4UKcBia0~E(N$8Z4?2Lq)Aj8iAg{ZSAjyQwL1I35X z@WzKEgIfiz4}UmNhDSu2K{`MVQDfi(FqRx_ahi&ARiXnNZew?3L}{ejQ2YLe4z^eY zF1i9awZJXT|Buf9{(sTKuB8;@sf`K@g45RvLn(jHNVh%}V3*+%mR;c?a#*$~er zQ1Kk*O;VTyJ)X{sXTUS?uQR}Bw?P?|ba`AXoZp8Sx&7UW-GoFX)A3MF`PXDvbLEl*Gs(vxgfM?);V1Vz3 z0LmB&)(-8}fyR~qz$V;QVB4R6V89MwC|Em$2cldm(4{IVF_hE}%B5pGl=#}AODAPl z#yqmJk_tsh>7fD}PAYWhThD-JV3C1_>vs74Kl*$9znJ8Eo&nFmm100O2hpI9Ey>%u xvN?Wh1Lzr)h2v_6HU*75$JXGdcn4|)V*wk$P_T9g55)fnSQ>oe8CWX=KLA&PxGn$y literal 0 HcmV?d00001 diff --git a/functions/pipeline/.DS_Store b/functions/pipeline/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..131c5394dbb4c132691ea49cb3018daf636281aa GIT binary patch literal 6148 zcmeHKJ5B>J5PeP}l#nJ81(aJ-MWUuzMWLYP06-E%f}2h_R>nhrEI*ISXdVdB|+8+1fVBXEe&LWWqpaGUv>c zU(KuvypraIv*vh09`QwyGJl7WV_vs#BlT35YV4Bl)JCPn0TMXyv>`y{m8nE!_>2P85;X-B?b|_A>bNocZ;Zl!QngXUkRe`#1 zc4YlO*}ng;lB{J4m;(Pw0oUlC^?RIBSX#>!HBKv!db XA{Am9u<*zpn*9i<3|5!|zpB7Dw|a`` literal 0 HcmV?d00001 diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py index 910a7aef..21832d45 100644 --- a/functions/pipeline/download/__init__.py +++ b/functions/pipeline/download/__init__.py @@ -3,7 +3,7 @@ import azure.functions as func import json import os -from shared import data_access as DataAccess +from ..shared import data_access as DataAccess def main(req: func.HttpRequest) -> func.HttpResponse: #logging.info('Python HTTP trigger function processed a request.') diff --git a/functions/pipeline/shared/db_access.py b/functions/pipeline/shared/db_access.py new file mode 100644 index 00000000..420c2854 --- /dev/null +++ b/functions/pipeline/shared/db_access.py @@ -0,0 +1,42 @@ +import os +import pg8000 + +from enum import IntEnum, unique + +@unique +class ImageTagState(IntEnum): + NOT_READY = 0 + READY_TO_TAG = 1 + TAG_IN_PROGRESS = 2 + COMPLETED_TAG = 3 + INCOMPLETE_TAG = 4 + ABANDONED = 5 + +def get_connection(): + return __new_postgres_connection(os.getenv('DB_HOST', None), os.getenv('DB_NAME', None), os.getenv('DB_USER', None), os.getenv('DB_PASS', None)) + +def __new_postgres_connection(host_name, db_name, db_user, db_pass): + return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) + +def update_tagged_images(conn,list_of_image_ids): + __update_images(conn, list_of_image_ids, ImageTagState.COMPLETED_TAG) + print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.COMPLETED_TAG.name}") + +def update_untagged_images(conn,list_of_image_ids): + __update_images(conn, list_of_image_ids, ImageTagState.INCOMPLETE_TAG) + print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.INCOMPLETE_TAG.name}") + +def __update_images(conn, list_of_image_ids, new_image_tag_state): + if not isinstance(new_image_tag_state, ImageTagState): + raise TypeError('new_image_tag_state must be an instance of Direction Enum') + + if(len(list_of_image_ids) > 0): + cursor = conn.cursor() + image_ids_as_strings = [str(i) for i in list_of_image_ids] + images_to_update = '{0}'.format(', '.join(image_ids_as_strings)) + query = "UPDATE Image_Tagging_State SET TagStateId = {0}, ModifiedDtim = now() WHERE ImageId IN ({1})" + cursor.execute(query.format(new_image_tag_state,images_to_update)) + conn.commit() + #print(f"Updated {len(list_of_image_ids)} image(s) to the state {new_image_tag_state.name}") + else: + print("No images to update") \ No newline at end of file diff --git a/functions/upload/__init__.py b/functions/pipeline/shared/vott_json_parser.py similarity index 51% rename from functions/upload/__init__.py rename to functions/pipeline/shared/vott_json_parser.py index fc1bd0fb..990f6595 100644 --- a/functions/upload/__init__.py +++ b/functions/pipeline/shared/vott_json_parser.py @@ -1,26 +1,23 @@ -import os import json -# TODO: Move this into a library -def get_id_from_filename(filename): +def __get_id_from_filename(filename): path_components = filename.split('/') filename = path_components[-1] return int(filename.split('.')[0]) -# TODO: Move this into a library def process_vott_json(json): all_frame_data = json['frames'] # Scrub filename keys to only have integer Id, drop path and file extensions. id_to_tags_dict = {} for full_path_key in sorted(all_frame_data.keys()): - id_to_tags_dict[get_id_from_filename(full_path_key)] = all_frame_data[full_path_key] + id_to_tags_dict[__get_id_from_filename(full_path_key)] = all_frame_data[full_path_key] all_ids = id_to_tags_dict.keys() # Do the same with visitedFrames visited_ids = sorted(json['visitedFrames']) for index, filename in enumerate(visited_ids): - visited_ids[index] = get_id_from_filename(filename) + visited_ids[index] = __get_id_from_filename(filename) # Unvisisted imageIds unvisited_ids = sorted(list(set(all_ids) - set(visited_ids))) @@ -32,22 +29,3 @@ def process_vott_json(json): "imagesVisited" : visited_ids, "imageNotVisisted" : unvisited_ids } - -def main(): - try: - vott_json = json.loads(open(os.environ['req']).read()) - - stats = process_vott_json(vott_json) - # TODO: Call interface to update imagesVisited to 'COMPLETED_TAG' state and imageNotVisisted to 'INCOMPLETE_TAG' - - response = open(os.environ['res'], 'w') - response.write(str(stats)) - response.close() - except Exception as e: - response = open(os.environ['res'], 'w') - # TODO: Add error status code and proper message? - response.write(str(e)) - response.close() - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/functions/pipeline/upload/__init__.py b/functions/pipeline/upload/__init__.py index 6f8a463d..3e710b64 100644 --- a/functions/pipeline/upload/__init__.py +++ b/functions/pipeline/upload/__init__.py @@ -1,98 +1,22 @@ -import logging -import os import json -import pg8000 -import azure.functions as func - -from enum import IntEnum, unique - -# TODO: Create DB access library ------------------------ -@unique -class ImageTagState(IntEnum): - NOT_READY = 0 - READY_TO_TAG = 1 - TAG_IN_PROGRESS = 2 - COMPLETED_TAG = 3 - INCOMPLETE_TAG = 4 - ABANDONED = 5 - -def get_connection(): - return __new_postgres_connection(os.environ['DB_HOST'],os.environ['DB_NAME'],os.environ['DB_USER'],os.environ['DB_PASS']) - -def __new_postgres_connection(host_name,db_name,db_user,db_pass): - return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) - -def update_tagged_images(conn,list_of_image_ids): - __update_images(conn,list_of_image_ids,ImageTagState.COMPLETED_TAG) - print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.COMPLETED_TAG.name}") - -def update_untagged_images(conn,list_of_image_ids): - __update_images(conn,list_of_image_ids,ImageTagState.INCOMPLETE_TAG) - print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.INCOMPLETE_TAG.name}") - -def __update_images(conn, list_of_image_ids, new_image_tag_state): - if not isinstance(new_image_tag_state, ImageTagState): - raise TypeError('new_image_tag_state must be an instance of Direction Enum') - - if(len(list_of_image_ids) > 0): - cursor = conn.cursor() - image_ids_as_strings = [str(i) for i in list_of_image_ids] - images_to_update = '{0}'.format(', '.join(image_ids_as_strings)) - query = "UPDATE Image_Tagging_State SET TagStateId = {0}, ModifiedDtim = now() WHERE ImageId IN ({1})" - cursor.execute(query.format(new_image_tag_state,images_to_update)) - conn.commit() - #print(f"Updated {len(list_of_image_ids)} image(s) to the state {new_image_tag_state.name}") - else: - print("No images to update") +from ..shared import db_access as DB_Access +from ..shared import vott_json_parser as Vott_json_parser -# TODO: Create DB access library ------------------------ - -# TODO: Move this into a library -def get_id_from_filename(filename): - path_components = filename.split('/') - filename = path_components[-1] - return int(filename.split('.')[0]) - -# TODO: Move this into a library -def process_vott_json(json): - all_frame_data = json['frames'] - - # Scrub filename keys to only have integer Id, drop path and file extensions. - id_to_tags_dict = {} - for full_path_key in sorted(all_frame_data.keys()): - id_to_tags_dict[get_id_from_filename(full_path_key)] = all_frame_data[full_path_key] - all_ids = id_to_tags_dict.keys() - - # Do the same with visitedFrames - visited_ids = sorted(json['visitedFrames']) - for index, filename in enumerate(visited_ids): - visited_ids[index] = get_id_from_filename(filename) - - # Unvisisted imageIds - unvisited_ids = sorted(list(set(all_ids) - set(visited_ids))) - - return { - "totalNumImages" : len(all_ids), - "numImagesVisted" : len(visited_ids), - "numImagesNotVisted" : len(unvisited_ids), - "imagesVisited" : visited_ids, - "imageNotVisisted" : unvisited_ids - } +import azure.functions as func def main(req: func.HttpRequest) -> func.HttpResponse: - logging.info('Python HTTP trigger function processed a request.') - try: vott_json = req.get_json() - stats = process_vott_json(vott_json) + stats = Vott_json_parser.process_vott_json(vott_json) + connection = DB_Access.get_connection() # Update tagged images - update_tagged_images(get_connection(), stats["imagesVisited"]) + DB_Access.update_tagged_images(connection, stats["imagesVisited"]) # Update untagged images - update_untagged_images(get_connection(), stats["imageNotVisisted"]) + DB_Access.update_untagged_images(connection, stats["imageNotVisisted"]) return func.HttpResponse( body = json.dumps(stats), diff --git a/functions/upload/function.json b/functions/upload/function.json deleted file mode 100644 index d841bddd..00000000 --- a/functions/upload/function.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "bindings": [ - { - "authLevel": "anonymous", - "type": "httpTrigger", - "direction": "in", - "name": "req", - "methods": [ - "post", - "put" - ] - }, - { - "type": "http", - "direction": "out", - "name": "res" - } - ], - "disabled": false - } \ No newline at end of file diff --git a/functions/upload/host.json b/functions/upload/host.json deleted file mode 100644 index 7a73a41b..00000000 --- a/functions/upload/host.json +++ /dev/null @@ -1,2 +0,0 @@ -{ -} \ No newline at end of file From f2ab2b3bd4d133c64d9784747975674bf50bf3c4 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Fri, 2 Nov 2018 16:01:24 -0700 Subject: [PATCH 048/145] deprecating data_access.py and moving to only use db_access.py --- functions/pipeline/download/__init__.py | 7 +- functions/pipeline/shared/data_access.py | 117 ++++++++++++----------- functions/pipeline/shared/db_access.py | 32 ++++++- 3 files changed, 94 insertions(+), 62 deletions(-) diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py index 21832d45..19a763fa 100644 --- a/functions/pipeline/download/__init__.py +++ b/functions/pipeline/download/__init__.py @@ -3,10 +3,10 @@ import azure.functions as func import json import os -from ..shared import data_access as DataAccess +from ..shared import db_access as DB_Access def main(req: func.HttpRequest) -> func.HttpResponse: - #logging.info('Python HTTP trigger function processed a request.') + logging.info('Python HTTP trigger function processed a request.') imageCount = req.params.get('imageCount') # setup response object @@ -21,7 +21,8 @@ def main(req: func.HttpRequest) -> func.HttpResponse: ) else: # setup response object - images = DataAccess.get_unvisited_items(imageCount) + connection = DB_Access.get_connection() + images = DB_Access.get_images_for_tagging(connection, imageCount) content = json.dumps(images) return func.HttpResponse( status_code=200, diff --git a/functions/pipeline/shared/data_access.py b/functions/pipeline/shared/data_access.py index 1ba005fa..9f390c20 100644 --- a/functions/pipeline/shared/data_access.py +++ b/functions/pipeline/shared/data_access.py @@ -1,67 +1,70 @@ -import logging -import json -import azure.functions as func # Getting an error - E0401: Unable to import -import os -import pg8000 # Getting an error - E0401: Unable to import +# DEPRECATED - Moving all database access components into db_access.py +# Saving for notes for now.... -# Constants -untagged_state = 1 -tagging_state = 2 -tagged_state = 3 +# import logging +# import json +# import azure.functions as func # Getting an error - E0401: Unable to import +# import os +# import pg8000 # Getting an error - E0401: Unable to import -host = os.getenv('DB_HOST', None) -user = os.getenv('DB_USER', None) -dbname = os.getenv('DB_NAME', None) -password = os.getenv('DB_PASS', None) +# # Constants +# untagged_state = 1 +# tagging_state = 2 +# tagged_state = 3 -# Creates rows in the database for new images uploaded to blob storage. -# Requires: TBD -# Receives: List of new image names, user id of the user performing the upload -# Returns: None. -# TODO: Clarify if input list is a list of original image names or new ImageIds -# Code: +# host = os.getenv('DB_HOST', None) +# user = os.getenv('DB_USER', None) +# dbname = os.getenv('DB_NAME', None) +# password = os.getenv('DB_PASS', None) -# get_unvisited_items -# # Retrieves a number of untagged images for the user to tag. -# Requires: Assumes that the CLI (the requestor) handles setting a cap on the number of images that may be requested. -# For now, assumes the user wants to use a LIFO strategy, and pull newest images first. -# Receives: num_images = Number of images the user wants to download for tagging -# Returns: List of URLs to the selected images (in blob storage) that need to be tagged. Status for these images is updated to "tagging" status in the DB. -# TODO: Future inputs: Strategy for selecting images (enum), user_id for tracking which user made the request (string) -def get_unvisited_items(num_images): - # Connect to database - # TODO: Add error handling - db = pg8000.connect(user, host=host, unix_sock=None, port=5432, database=dbname, password=password, ssl=True, timeout=None, application_name=None) - cursor = db.cursor() +# # Creates rows in the database for new images uploaded to blob storage. +# # Requires: TBD +# # Receives: List of new image names, user id of the user performing the upload +# # Returns: None. +# # TODO: Clarify if input list is a list of original image names or new ImageIds +# # Code: - # From the database, select the number of images the user requested where tag state is "untagged" - cursor.execute("SELECT b.ImageId, b.OriginalImageName, a.TagStateId, b.ImageLocation FROM Image_Tagging_State a JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = {0} order by a.createddtim DESC limit {1}".format(untagged_state, num_images)) +# # get_unvisited_items +# # # Retrieves a number of untagged images for the user to tag. +# # Requires: Assumes that the CLI (the requestor) handles setting a cap on the number of images that may be requested. +# # For now, assumes the user wants to use a LIFO strategy, and pull newest images first. +# # Receives: num_images = Number of images the user wants to download for tagging +# # Returns: List of URLs to the selected images (in blob storage) that need to be tagged. Status for these images is updated to "tagging" status in the DB. +# # TODO: Future inputs: Strategy for selecting images (enum), user_id for tracking which user made the request (string) +# def get_unvisited_items(num_images): +# # Connect to database +# # TODO: Add error handling +# db = pg8000.connect(user, host=host, unix_sock=None, port=5432, database=dbname, password=password, ssl=True, timeout=None, application_name=None) +# cursor = db.cursor() - # Put the ImageId and ImageLocation (URL) for the images to tag into a dictionary named selected_images_to_tag - selected_images_to_tag = {} - for row in cursor: - print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) - selected_images_to_tag[str(row[0])] = str(row[3]) +# # From the database, select the number of images the user requested where tag state is "untagged" +# cursor.execute("SELECT b.ImageId, b.OriginalImageName, a.TagStateId, b.ImageLocation FROM Image_Tagging_State a JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = {0} order by a.createddtim DESC limit {1}".format(untagged_state, num_images)) - # If there are images in the list, update the tagging state for the selected images from "untagged" to "tagging" state - # If there are no images left to tag, output a message to the user - # TODO: Separate this code out into an "update" helper function? - if(len(selected_images_to_tag) > 0): - images_to_update = '{0}'.format(', '.join(selected_images_to_tag.keys())) - cursor.execute("UPDATE Image_Tagging_State SET TagStateId = {0} WHERE ImageId IN ({1})".format(tagging_state,images_to_update)) - db.commit() - print(f"Updated {len(selected_images_to_tag)} images to the state {tagging_state}") - else: - print("No images untagged images left!") +# # Put the ImageId and ImageLocation (URL) for the images to tag into a dictionary named selected_images_to_tag +# selected_images_to_tag = {} +# for row in cursor: +# print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) +# selected_images_to_tag[str(row[0])] = str(row[3]) - # Return the list of URLs to the user (values in the selected_images_to_tag dictionary) - return list(selected_images_to_tag.values()) +# # If there are images in the list, update the tagging state for the selected images from "untagged" to "tagging" state +# # If there are no images left to tag, output a message to the user +# # TODO: Separate this code out into an "update" helper function? +# if(len(selected_images_to_tag) > 0): +# images_to_update = '{0}'.format(', '.join(selected_images_to_tag.keys())) +# cursor.execute("UPDATE Image_Tagging_State SET TagStateId = {0} WHERE ImageId IN ({1})".format(tagging_state,images_to_update)) +# db.commit() +# print(f"Updated {len(selected_images_to_tag)} images to the state {tagging_state}") +# else: +# print("No images untagged images left!") -# TODO: Create helper function to update status of a list of images in the DB from one state to another. +# # Return the list of URLs to the user (values in the selected_images_to_tag dictionary) +# return list(selected_images_to_tag.values()) + +# # TODO: Create helper function to update status of a list of images in the DB from one state to another. -# get_unvisited_items (count of items, strategy enum, user id) -# Returns a list of image locations -# update_visited_items (List of visited image names, user id) -# void -# update_unvisited_items (List of unvisited image names, user id) -# Void +# # get_unvisited_items (count of items, strategy enum, user id) +# # Returns a list of image locations +# # update_visited_items (List of visited image names, user id) +# # void +# # update_unvisited_items (List of unvisited image names, user id) +# # Void diff --git a/functions/pipeline/shared/db_access.py b/functions/pipeline/shared/db_access.py index 420c2854..d280758c 100644 --- a/functions/pipeline/shared/db_access.py +++ b/functions/pipeline/shared/db_access.py @@ -3,6 +3,8 @@ from enum import IntEnum, unique +# TODO: Add error handling cases + @unique class ImageTagState(IntEnum): NOT_READY = 0 @@ -15,14 +17,40 @@ class ImageTagState(IntEnum): def get_connection(): return __new_postgres_connection(os.getenv('DB_HOST', None), os.getenv('DB_NAME', None), os.getenv('DB_USER', None), os.getenv('DB_PASS', None)) +def get_images_for_tagging(conn, num_images): + cursor = conn.cursor() + + # From the database, select the number of images the user requested where tag state is "READY_TO_TAG" + # TODO: Add INCOMPLETE_TAG as well? + cursor.execute("SELECT b.ImageId, b.OriginalImageName, a.TagStateId, b.ImageLocation FROM Image_Tagging_State a JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = {0} order by a.createddtim DESC limit {1}".format(ImageTagState.READY_TO_TAG, num_images)) + + # Put the ImageId and ImageLocation (URL) for the images to tag into a dictionary named selected_images_to_tag + selected_images_to_tag = {} + for row in cursor: + print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) + selected_images_to_tag[str(row[0])] = str(row[3]) + + # If there are images in the list, update the tagging state for the selected images from "READY_TO_TAG" to "TAG_IN_PROGRESS" state + # If there are no images left to tag, output a message to the user + # TODO: Separate this code out into an "update" helper function? + if(len(selected_images_to_tag) > 0): + images_to_update = '{0}'.format(', '.join(selected_images_to_tag.keys())) + cursor.execute("UPDATE Image_Tagging_State SET TagStateId = {0} WHERE ImageId IN ({1})".format(ImageTagState.TAG_IN_PROGRESS, images_to_update)) + conn.commit() + print(f"Updated {len(selected_images_to_tag)} images to the state {ImageTagState.TAG_IN_PROGRESS}") + else: + print("No images untagged images left!") + # Return the list of URLs to the user (values in the selected_images_to_tag dictionary) + return list(selected_images_to_tag.values()) + def __new_postgres_connection(host_name, db_name, db_user, db_pass): return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) -def update_tagged_images(conn,list_of_image_ids): +def update_tagged_images(conn, list_of_image_ids): __update_images(conn, list_of_image_ids, ImageTagState.COMPLETED_TAG) print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.COMPLETED_TAG.name}") -def update_untagged_images(conn,list_of_image_ids): +def update_untagged_images(conn, list_of_image_ids): __update_images(conn, list_of_image_ids, ImageTagState.INCOMPLETE_TAG) print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.INCOMPLETE_TAG.name}") From 84eb03e5c150bb93e732853d6c0c85d6c4832532 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Fri, 2 Nov 2018 17:39:53 -0700 Subject: [PATCH 049/145] Downloading Incomplete_tag state also. Fixed typo. Adding place for db creds for local testing --- functions/pipeline/download/__init__.py | 3 +++ functions/pipeline/shared/db_access.py | 11 ++++++++--- functions/pipeline/shared/vott_json_parser.py | 2 +- functions/pipeline/upload/__init__.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py index 19a763fa..18f7ffcb 100644 --- a/functions/pipeline/download/__init__.py +++ b/functions/pipeline/download/__init__.py @@ -23,6 +23,9 @@ def main(req: func.HttpRequest) -> func.HttpResponse: # setup response object connection = DB_Access.get_connection() images = DB_Access.get_images_for_tagging(connection, imageCount) + + # TODO: Build vott json + content = json.dumps(images) return func.HttpResponse( status_code=200, diff --git a/functions/pipeline/shared/db_access.py b/functions/pipeline/shared/db_access.py index d280758c..e9530e27 100644 --- a/functions/pipeline/shared/db_access.py +++ b/functions/pipeline/shared/db_access.py @@ -14,15 +14,20 @@ class ImageTagState(IntEnum): INCOMPLETE_TAG = 4 ABANDONED = 5 +# Temp for local testing/ +default_db_host = "" +default_db_name = "" +default_db_user = "" +default_db_pass = "" + def get_connection(): - return __new_postgres_connection(os.getenv('DB_HOST', None), os.getenv('DB_NAME', None), os.getenv('DB_USER', None), os.getenv('DB_PASS', None)) + return __new_postgres_connection(os.getenv('DB_HOST', default_db_host), os.getenv('DB_NAME', default_db_name), os.getenv('DB_USER', default_db_user), os.getenv('DB_PASS', default_db_pass)) def get_images_for_tagging(conn, num_images): cursor = conn.cursor() # From the database, select the number of images the user requested where tag state is "READY_TO_TAG" - # TODO: Add INCOMPLETE_TAG as well? - cursor.execute("SELECT b.ImageId, b.OriginalImageName, a.TagStateId, b.ImageLocation FROM Image_Tagging_State a JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = {0} order by a.createddtim DESC limit {1}".format(ImageTagState.READY_TO_TAG, num_images)) + cursor.execute("SELECT b.ImageId, b.OriginalImageName, a.TagStateId, b.ImageLocation FROM Image_Tagging_State a JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId IN ({0},{1}) order by a.createddtim ASC limit {2}".format(ImageTagState.READY_TO_TAG, ImageTagState.INCOMPLETE_TAG,num_images)) # Put the ImageId and ImageLocation (URL) for the images to tag into a dictionary named selected_images_to_tag selected_images_to_tag = {} diff --git a/functions/pipeline/shared/vott_json_parser.py b/functions/pipeline/shared/vott_json_parser.py index 990f6595..ff392742 100644 --- a/functions/pipeline/shared/vott_json_parser.py +++ b/functions/pipeline/shared/vott_json_parser.py @@ -27,5 +27,5 @@ def process_vott_json(json): "numImagesVisted" : len(visited_ids), "numImagesNotVisted" : len(unvisited_ids), "imagesVisited" : visited_ids, - "imageNotVisisted" : unvisited_ids + "imagesNotVisited" : unvisited_ids } diff --git a/functions/pipeline/upload/__init__.py b/functions/pipeline/upload/__init__.py index 3e710b64..8d4e48d2 100644 --- a/functions/pipeline/upload/__init__.py +++ b/functions/pipeline/upload/__init__.py @@ -16,7 +16,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: DB_Access.update_tagged_images(connection, stats["imagesVisited"]) # Update untagged images - DB_Access.update_untagged_images(connection, stats["imageNotVisisted"]) + DB_Access.update_untagged_images(connection, stats["imagesNotVisited"]) return func.HttpResponse( body = json.dumps(stats), From 810538d6bb9a975c924af0509aeacfadc17c76d6 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Fri, 2 Nov 2018 19:00:08 -0700 Subject: [PATCH 050/145] Vott Download Json --- functions/pipeline/download/__init__.py | 10 ++++- functions/pipeline/shared/vott_json_parser.py | 40 ++++++++++++++++--- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py index 18f7ffcb..70327a7c 100644 --- a/functions/pipeline/download/__init__.py +++ b/functions/pipeline/download/__init__.py @@ -3,7 +3,9 @@ import azure.functions as func import json import os + from ..shared import db_access as DB_Access +from ..shared import vott_json_parser as vott_json_parser def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') @@ -22,11 +24,15 @@ def main(req: func.HttpRequest) -> func.HttpResponse: else: # setup response object connection = DB_Access.get_connection() - images = DB_Access.get_images_for_tagging(connection, imageCount) + # TODO: images need more meaningful data than just download urls + image_urls = DB_Access.get_images_for_tagging(connection, imageCount) # TODO: Build vott json + vott_json = vott_json_parser.create_starting_json(image_urls) + + return_body_json = {"imageUrls": image_urls, "vottJson": vott_json} - content = json.dumps(images) + content = json.dumps(return_body_json) return func.HttpResponse( status_code=200, headers=headers, diff --git a/functions/pipeline/shared/vott_json_parser.py b/functions/pipeline/shared/vott_json_parser.py index ff392742..2d5a9d6a 100644 --- a/functions/pipeline/shared/vott_json_parser.py +++ b/functions/pipeline/shared/vott_json_parser.py @@ -1,9 +1,25 @@ import json -def __get_id_from_filename(filename): +def __build_frames_data(images): + frames = {} + for filename in images: + # TODO: Build tag data per frame if they exist already + frames[__get_filename_from_fullpath(filename)] = [] #list of tags + return frames + +# TODO: Change return from db to have more tag data...for now input is a list of blobstore urls +def create_starting_json(images): + return { + "frames" : __build_frames_data(images), + "inputTags": "", # TODO: populate classifications that exist in db already + } + +def __get_filename_from_fullpath(filename): path_components = filename.split('/') - filename = path_components[-1] - return int(filename.split('.')[0]) + return path_components[-1] + +def __get_id_from_fullpath(fullpath): + return int(__get_filename_from_fullpath(fullpath).split('.')[0]) def process_vott_json(json): all_frame_data = json['frames'] @@ -11,13 +27,13 @@ def process_vott_json(json): # Scrub filename keys to only have integer Id, drop path and file extensions. id_to_tags_dict = {} for full_path_key in sorted(all_frame_data.keys()): - id_to_tags_dict[__get_id_from_filename(full_path_key)] = all_frame_data[full_path_key] + id_to_tags_dict[__get_id_from_fullpath(full_path_key)] = all_frame_data[full_path_key] all_ids = id_to_tags_dict.keys() # Do the same with visitedFrames visited_ids = sorted(json['visitedFrames']) for index, filename in enumerate(visited_ids): - visited_ids[index] = __get_id_from_filename(filename) + visited_ids[index] = __get_id_from_fullpath(filename) # Unvisisted imageIds unvisited_ids = sorted(list(set(all_ids) - set(visited_ids))) @@ -29,3 +45,17 @@ def process_vott_json(json): "imagesVisited" : visited_ids, "imagesNotVisited" : unvisited_ids } + +def main(): + images = { + "1012.png" : {}, + "1013.png" : {}, + "1014.png" : {}, + "1015.png" : {}, + "1016.png" : {} + } + generated_json = create_starting_json(images) + print(json.dumps(generated_json)) + +if __name__ == '__main__': + main() From 7d7b3e23c622119624dd9ba6f576ec41fd2ce740 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Fri, 2 Nov 2018 19:12:13 -0700 Subject: [PATCH 051/145] removing .DS_Store files --- .DS_Store | Bin 8196 -> 0 bytes functions/.DS_Store | Bin 6148 -> 0 bytes functions/pipeline/.DS_Store | Bin 6148 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store delete mode 100644 functions/.DS_Store delete mode 100644 functions/pipeline/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 54ebab083002d87246d53426958d045bae4be027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHM(QeZ)6un-%EiFP+8fbgW3la}w>R_-3gjBliVG3AYv1EI+0BSZREN!7qAenFP}!C)p;=P+ zI@g7=qDMAh1^7fQx=B3>P+JRVJ75*C3RnfK0#*U5z(r61?`$s4Iq!XS)wWgvtH6J$ z06!mGRJIjuXUfV)2O60Iz~(V53;M_dB*)dZqU}ssNrg|9JqS$|I>iu*j_WSNVJq6s zlvQ*RicUh$EOdq<BF`tZl6VR)IwYICtM5kIraF{Y?HIB9D(SGN2tAQ>lckpR%Awl%ocLW1zkos3K4?{Jw$rHaznj21k4}IM*_qIyL308dxuX zX-Lqr#~rM(nVns18lDQ^dWfh)J~$pcn2a9=V+9O9>s3bnDHVAE(G0PI#(XUUgTX5N zf#Ht^J+1CHzZV9Bq+I?kR&x2(wROiSI>pPy*R@VOswG}B98|sjOaAr5OFF*pKa1mV z-uL|HL2FbmT|J1S#0#QUUy_4n3y@bYf~Xmfs_`&t4y2!&y5Kkkr%*3#O(uKg^0vEs z=hk%Fo$T+UzjyoYbXssWukYSJKIx9nChw;oJ|ip?p`XcgMg5+)U(j13&bwMa3gf8F zRMa(WU>BRw=55UiCpR!H+!{Rustt65#s-#en>2PE*kd}NBYI3VIx^6_(P?yno&x!R z4(So>lADRQT{x+2FUbS*7F!?4UKcBia0~E(N$8Z4?2Lq)Aj8iAg{ZSAjyQwL1I35X z@WzKEgIfiz4}UmNhDSu2K{`MVQDfi(FqRx_ahi&ARiXnNZew?3L}{ejQ2YLe4z^eY zF1i9awZJXT|Buf9{(sTKuB8;@sf`K@g45RvLn(jHNVh%}V3*+%mR;c?a#*$~er zQ1Kk*O;VTyJ)X{sXTUS?uQR}Bw?P?|ba`AXoZp8Sx&7UW-GoFX)A3MF`PXDvbLEl*Gs(vxgfM?);V1Vz3 z0LmB&)(-8}fyR~qz$V;QVB4R6V89MwC|Em$2cldm(4{IVF_hE}%B5pGl=#}AODAPl z#yqmJk_tsh>7fD}PAYWhThD-JV3C1_>vs74Kl*$9znJ8Eo&nFmm100O2hpI9Ey>%u xvN?Wh1Lzr)h2v_6HU*75$JXGdcn4|)V*wk$P_T9g55)fnSQ>oe8CWX=KLA&PxGn$y diff --git a/functions/pipeline/.DS_Store b/functions/pipeline/.DS_Store deleted file mode 100644 index 131c5394dbb4c132691ea49cb3018daf636281aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJ5B>J5PeP}l#nJ81(aJ-MWUuzMWLYP06-E%f}2h_R>nhrEI*ISXdVdB|+8+1fVBXEe&LWWqpaGUv>c zU(KuvypraIv*vh09`QwyGJl7WV_vs#BlT35YV4Bl)JCPn0TMXyv>`y{m8nE!_>2P85;X-B?b|_A>bNocZ;Zl!QngXUkRe`#1 zc4YlO*}ng;lB{J4m;(Pw0oUlC^?RIBSX#>!HBKv!db XA{Am9u<*zpn*9i<3|5!|zpB7Dw|a`` From c6045d37e4c16a0b4864dd4942cc96f344d6df90 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Fri, 2 Nov 2018 19:14:52 -0700 Subject: [PATCH 052/145] deleting auto gen sample data --- functions/pipeline/onboarding/sample.dat | 3 --- functions/pipeline/upload/sample.dat | 3 --- 2 files changed, 6 deletions(-) delete mode 100644 functions/pipeline/onboarding/sample.dat delete mode 100644 functions/pipeline/upload/sample.dat diff --git a/functions/pipeline/onboarding/sample.dat b/functions/pipeline/onboarding/sample.dat deleted file mode 100644 index 2e609439..00000000 --- a/functions/pipeline/onboarding/sample.dat +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "Azure" -} \ No newline at end of file diff --git a/functions/pipeline/upload/sample.dat b/functions/pipeline/upload/sample.dat deleted file mode 100644 index 2e609439..00000000 --- a/functions/pipeline/upload/sample.dat +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "Azure" -} \ No newline at end of file From 471191ee7c826078bd746a235cc53f0256e54cab Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Mon, 5 Nov 2018 09:35:05 -0800 Subject: [PATCH 053/145] removing .python_packages --- .../.python_packages/bin/easy_install | 24 ------------------- .../.python_packages/bin/easy_install-3.6 | 24 ------------------- .../.python_packages/bin/easy_install-3.6-3.7 | 24 ------------------- .../.python_packages/bin/easy_install-3.7 | 24 ------------------- 4 files changed, 96 deletions(-) delete mode 100644 functions/pipeline/.python_packages/bin/easy_install delete mode 100644 functions/pipeline/.python_packages/bin/easy_install-3.6 delete mode 100644 functions/pipeline/.python_packages/bin/easy_install-3.6-3.7 delete mode 100644 functions/pipeline/.python_packages/bin/easy_install-3.7 diff --git a/functions/pipeline/.python_packages/bin/easy_install b/functions/pipeline/.python_packages/bin/easy_install deleted file mode 100644 index 877b90f8..00000000 --- a/functions/pipeline/.python_packages/bin/easy_install +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/local/opt/python/bin/python3.7 - -# -*- coding: utf-8 -*- -if __name__ == '__main__': - import sys, re - - def _resolve(module, func): - __import__(module) - mod = sys.modules[module] - parts = func.split('.') - result = getattr(mod, parts.pop(0)) - for p in parts: - result = getattr(result, p) - return result - - try: - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - - func = _resolve('setuptools.command.easy_install', 'main') - rc = func() # None interpreted as 0 - except Exception as e: # only supporting Python >= 2.6 - sys.stderr.write('%s\n' % e) - rc = 1 - sys.exit(rc) diff --git a/functions/pipeline/.python_packages/bin/easy_install-3.6 b/functions/pipeline/.python_packages/bin/easy_install-3.6 deleted file mode 100644 index 877b90f8..00000000 --- a/functions/pipeline/.python_packages/bin/easy_install-3.6 +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/local/opt/python/bin/python3.7 - -# -*- coding: utf-8 -*- -if __name__ == '__main__': - import sys, re - - def _resolve(module, func): - __import__(module) - mod = sys.modules[module] - parts = func.split('.') - result = getattr(mod, parts.pop(0)) - for p in parts: - result = getattr(result, p) - return result - - try: - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - - func = _resolve('setuptools.command.easy_install', 'main') - rc = func() # None interpreted as 0 - except Exception as e: # only supporting Python >= 2.6 - sys.stderr.write('%s\n' % e) - rc = 1 - sys.exit(rc) diff --git a/functions/pipeline/.python_packages/bin/easy_install-3.6-3.7 b/functions/pipeline/.python_packages/bin/easy_install-3.6-3.7 deleted file mode 100644 index 877b90f8..00000000 --- a/functions/pipeline/.python_packages/bin/easy_install-3.6-3.7 +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/local/opt/python/bin/python3.7 - -# -*- coding: utf-8 -*- -if __name__ == '__main__': - import sys, re - - def _resolve(module, func): - __import__(module) - mod = sys.modules[module] - parts = func.split('.') - result = getattr(mod, parts.pop(0)) - for p in parts: - result = getattr(result, p) - return result - - try: - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - - func = _resolve('setuptools.command.easy_install', 'main') - rc = func() # None interpreted as 0 - except Exception as e: # only supporting Python >= 2.6 - sys.stderr.write('%s\n' % e) - rc = 1 - sys.exit(rc) diff --git a/functions/pipeline/.python_packages/bin/easy_install-3.7 b/functions/pipeline/.python_packages/bin/easy_install-3.7 deleted file mode 100644 index 877b90f8..00000000 --- a/functions/pipeline/.python_packages/bin/easy_install-3.7 +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/local/opt/python/bin/python3.7 - -# -*- coding: utf-8 -*- -if __name__ == '__main__': - import sys, re - - def _resolve(module, func): - __import__(module) - mod = sys.modules[module] - parts = func.split('.') - result = getattr(mod, parts.pop(0)) - for p in parts: - result = getattr(result, p) - return result - - try: - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - - func = _resolve('setuptools.command.easy_install', 'main') - rc = func() # None interpreted as 0 - except Exception as e: # only supporting Python >= 2.6 - sys.stderr.write('%s\n' % e) - rc = 1 - sys.exit(rc) From 771d50bfb93e13f8dd53c9996221c78fb9667847 Mon Sep 17 00:00:00 2001 From: Amanda Kaufman Date: Mon, 5 Nov 2018 12:35:59 -0700 Subject: [PATCH 054/145] Added get_image_ids_for_new_images and ImageInfo class to db_access.py. (For use in onboarding) --- functions/pipeline/shared/db_access.py | 28 +++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/functions/pipeline/shared/db_access.py b/functions/pipeline/shared/db_access.py index e9530e27..0d646775 100644 --- a/functions/pipeline/shared/db_access.py +++ b/functions/pipeline/shared/db_access.py @@ -14,6 +14,14 @@ class ImageTagState(IntEnum): INCOMPLETE_TAG = 4 ABANDONED = 5 +# An entity class for a VOTT image +class ImageInfo(object): + def __init__(self, image_name, image_location, height, width): + self.image_name = image_name + self.image_location = image_location + self.height = height + self.width = width + # Temp for local testing/ default_db_host = "" default_db_name = "" @@ -23,6 +31,23 @@ class ImageTagState(IntEnum): def get_connection(): return __new_postgres_connection(os.getenv('DB_HOST', default_db_host), os.getenv('DB_NAME', default_db_name), os.getenv('DB_USER', default_db_user), os.getenv('DB_PASS', default_db_pass)) +def __new_postgres_connection(host_name, db_name, db_user, db_pass): + return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) + +def get_image_ids_for_new_images(conn, list_of_image_infos): + url_to_image_id_map = {} + if(len(list_of_image_infos) > 0): + cursor = conn.cursor() + for img in list(list_of_image_infos): + query = "INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) VALUES ('{0}','{1}',{2},{3}) RETURNING ImageId;" + cursor.execute(query.format(img.image_name,img.image_location,str(img.height),str(img.width))) + new_img_id = cursor.fetchone()[0] + url_to_image_id_map[img.image_location] = new_img_id + #__update_images(conn,[new_img_id],ImageTagState.NOT_READY) + conn.commit() + print(f"Inserted {len(url_to_image_id_map)} images to the DB") + return url_to_image_id_map + def get_images_for_tagging(conn, num_images): cursor = conn.cursor() @@ -48,9 +73,6 @@ def get_images_for_tagging(conn, num_images): # Return the list of URLs to the user (values in the selected_images_to_tag dictionary) return list(selected_images_to_tag.values()) -def __new_postgres_connection(host_name, db_name, db_user, db_pass): - return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) - def update_tagged_images(conn, list_of_image_ids): __update_images(conn, list_of_image_ids, ImageTagState.COMPLETED_TAG) print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.COMPLETED_TAG.name}") From 6c532afcf36a9cb4522d707e49c50f1864721d4c Mon Sep 17 00:00:00 2001 From: Amanda Kaufman Date: Mon, 5 Nov 2018 14:09:34 -0700 Subject: [PATCH 055/145] Added code to create new rows in DB for newly onboarded images. --- .../onboarding/OnboardingTrigger/__init__.py | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/functions/pipeline/onboarding/OnboardingTrigger/__init__.py b/functions/pipeline/onboarding/OnboardingTrigger/__init__.py index 9b5cdea5..e2e7bf59 100644 --- a/functions/pipeline/onboarding/OnboardingTrigger/__init__.py +++ b/functions/pipeline/onboarding/OnboardingTrigger/__init__.py @@ -1,6 +1,7 @@ import logging import azure.functions as func +from ...shared import db_access as DB_Access def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') @@ -15,4 +16,36 @@ def main(req: func.HttpRequest) -> func.HttpResponse: return func.HttpResponse("Unable to decode POST body", status_code=400) logging.error(req_body) - return func.HttpResponse("Got body\n\nURL List:\n" + url_string, status_code=200) \ No newline at end of file + + # Verbose output of HttpResponse, for testing + return func.HttpResponse("Got body\n\nURL List:\n" + url_string, status_code=200) + + # Build list of image objects to pass to DAL for insertion into DB. + image_object_list = [] + + for url in url_list: + # Split original image name from URL + original_filename = url.split("/")[-1] + + # Create ImageInfo object (def in db_access.py) + # Note: For testing, default image height/width are set to 50x50 + image = ImageInfo(original_filename, url, 50, 50) + + # Append image object to the list + image_object_list.append(image) + + # Connect to DB + db = DB_Access.get_connection() + + # Hand off list of image objects to DAL to create rows in database + # Receive dictionary of mapped { ImageID : ImageURL } + image_id_url_map = DB_Access.get_image_ids_for_new_images(db, image_object_list) + + # Update image names in temporary blob store to reflect new ImageID returned from previous function + + + # Copy over images to permanent blob store, get list of URLs to iamges in permanent storage + + + # Close connection to database. + db.close() \ No newline at end of file From ac341f8c80967504d91b400943cc860a6ece62e7 Mon Sep 17 00:00:00 2001 From: Samiya Date: Mon, 5 Nov 2018 15:37:36 -0800 Subject: [PATCH 056/145] jupyter notebook for visualization dashboard first pass (#20) --- dashboard/.gitignore | 4 +- dashboard/config.json | 8 + dashboard/dashboard.ipynb | 147 + dashboard/server/server.py | 25 - dashboard/static/package-lock.json | 7809 ----------------- dashboard/static/package.json | 39 - dashboard/static/readme.md | 13 - .../static/src/activelearningstatistics.css | 10 - .../static/src/activelearningstatistics.tsx | 53 - dashboard/static/src/dataviz.tsx | 25 - dashboard/static/src/index.html | 15 - dashboard/static/src/index.tsx | 9 - dashboard/static/tsconfig.json | 17 - dashboard/static/webpack.config.js | 65 - 14 files changed, 156 insertions(+), 8083 deletions(-) create mode 100644 dashboard/config.json create mode 100644 dashboard/dashboard.ipynb delete mode 100644 dashboard/server/server.py delete mode 100644 dashboard/static/package-lock.json delete mode 100644 dashboard/static/package.json delete mode 100644 dashboard/static/readme.md delete mode 100644 dashboard/static/src/activelearningstatistics.css delete mode 100644 dashboard/static/src/activelearningstatistics.tsx delete mode 100644 dashboard/static/src/dataviz.tsx delete mode 100644 dashboard/static/src/index.html delete mode 100644 dashboard/static/src/index.tsx delete mode 100644 dashboard/static/tsconfig.json delete mode 100644 dashboard/static/webpack.config.js diff --git a/dashboard/.gitignore b/dashboard/.gitignore index b9ba630e..58461f25 100644 --- a/dashboard/.gitignore +++ b/dashboard/.gitignore @@ -1,3 +1 @@ -static/dist/ -static/node_modules/ -server/venv/ \ No newline at end of file +.ipynb_checkpoints \ No newline at end of file diff --git a/dashboard/config.json b/dashboard/config.json new file mode 100644 index 00000000..3271090a --- /dev/null +++ b/dashboard/config.json @@ -0,0 +1,8 @@ +{ + "database": "dbname", + "user": "username", + "host": "hostname", + "passw": "password", + "plotlyusername": "username", + "plotlyapikey": "apikey" +} \ No newline at end of file diff --git a/dashboard/dashboard.ipynb b/dashboard/dashboard.ipynb new file mode 100644 index 00000000..ee2655ea --- /dev/null +++ b/dashboard/dashboard.ipynb @@ -0,0 +1,147 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Active Learning dashboard" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import psycopg2\n", + "import pandas as pd\n", + "import plotly\n", + "import plotly.plotly as py\n", + "import plotly.graph_objs as go\n", + "\n", + "with open('config.json') as f:\n", + " conf = json.load(f)\n", + "conn_str = \"host={} dbname={} user={} password={}\".format(conf['host'], conf['database'], conf['user'], conf['passw'])\n", + "conn = psycopg2.connect(conn_str)\n", + "plotly.tools.set_credentials_file(username=conf['plotlyusername'], api_key=conf['plotlyapikey'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting a pie chart for current image tagging status:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "names = []\n", + "numbers = []\n", + "cursor = conn.cursor()\n", + "cursor.execute('select count(a.imageid), b.tagstatename from Image_Tagging_State a join tagstate b ON a.tagstateid = b.tagstateid group by b.tagstatename')\n", + "for (number, name) in cursor:\n", + " names.append(name)\n", + " numbers.append(number)\n", + "\n", + "trace = go.Pie(labels=names, values=numbers)\n", + "py.iplot([trace], filename='basic')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting a time chart for the tagging activity over the last few days: " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "High five! You successfully sent some data to your account on plotly. View your plot in your browser at https://plot.ly/~samiyaakhtar/0 or inside your plot.ly account where it is named 'basic-scatter'\n" + ] + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dates = []\n", + "numimages = []\n", + "cursor = conn.cursor()\n", + "cursor.execute(\"select count(imageid), date_trunc('day', modifieddtim) timerange from image_tagging_state_audit group by date_trunc('day', modifieddtim) order by timerange\")\n", + "for (numimage, date) in cursor:\n", + " x = pd.to_datetime(date)\n", + " dates.append(x)\n", + " numimages.append(numimage)\n", + "\n", + "# Create a trace\n", + "trace = go.Scatter(\n", + " x = dates,\n", + " y = numimages,\n", + " # mode = 'markers'\n", + " name = 'Number of tagging activities'\n", + ")\n", + "data = [trace]\n", + "layout = dict(title = 'Number of tagging activities by date', xaxis=dict(title='Date'), yaxis=dict(title='Tagging activities'))\n", + "fig = dict(data=data, layout=layout)\n", + "py.iplot(fig, filename='basic-scatter')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/dashboard/server/server.py b/dashboard/server/server.py deleted file mode 100644 index 7d7726f8..00000000 --- a/dashboard/server/server.py +++ /dev/null @@ -1,25 +0,0 @@ -# server.py -from flask import Flask, render_template -import json - -app = Flask(__name__, static_folder="../static/dist", template_folder="../static/src") -statistics = {} -# todo: bring this data from db -statistics['count'] = 100 -statistics['totag'] = 20 -statistics['tagging'] = 50 -statistics['tagged'] = 30 - -@app.route("/") -def index(): - return render_template("index.html") - -@app.route("/stats") -def stats(): - if statistics['tagging'] > 0: - statistics['tagging'] -= 1 - statistics['tagged'] += 1 - return json.dumps(statistics) - -if __name__ == "__main__": - app.run() \ No newline at end of file diff --git a/dashboard/static/package-lock.json b/dashboard/static/package-lock.json deleted file mode 100644 index 314c3d4f..00000000 --- a/dashboard/static/package-lock.json +++ /dev/null @@ -1,7809 +0,0 @@ -{ - "name": "active-learning-detect", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@microsoft/load-themed-styles": { - "version": "1.8.24", - "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.8.24.tgz", - "integrity": "sha512-Rzsg84Y65jCQ1uwVRTJpTFf0txjYRnxJStW5WTd0XbMxcYTaeUIcTd7FTfMMBtyqv01Fff/ESmNkeCFBlsP2SQ==", - "dev": true - }, - "@types/d3-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-1.2.1.tgz", - "integrity": "sha512-YBaAfimGdWE4nDuoGVKsH89/dkz2hWZ0i8qC+xxqmqi+XJ/aXiRF0jPtzXmN7VdkpVjy1xuDmM5/m1FNuB6VWA==", - "dev": true - }, - "@types/d3-axis": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-1.0.10.tgz", - "integrity": "sha512-5YF0wfdQMPKw01VAAupLIlg/T4pn5M3/vL9u0KZjiemnVnnKBEWE24na4X1iW+TfZiYJ8j+BgK2KFYnAAT54Ug==", - "dev": true, - "requires": { - "@types/d3-selection": "*" - } - }, - "@types/d3-path": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-1.0.7.tgz", - "integrity": "sha512-U8dFRG+8WhkLJr2sxZ9Cw/5WeRgBnNqMxGdA1+Z0+ZG6tK0s75OQ4OXnxeyfKuh6E4wQPY8OAKr1+iNDx01BEQ==", - "dev": true - }, - "@types/d3-scale": { - "version": "2.0.0", - "resolved": "http://registry.npmjs.org/@types/d3-scale/-/d3-scale-2.0.0.tgz", - "integrity": "sha512-fFLSdP3p9qQQ3W6ouO3GBI4Qg94CSykTWVc61U8SI1V62dfBWtOigBj5voxDcOniwh9MjKzTHldMSsGJ5qAFpA==", - "dev": true, - "requires": { - "@types/d3-time": "*" - } - }, - "@types/d3-selection": { - "version": "1.3.0", - "resolved": "http://registry.npmjs.org/@types/d3-selection/-/d3-selection-1.3.0.tgz", - "integrity": "sha512-1SJhi3kTk/SHHIE6XkHuHU2REYkbSOjkQuo3HT71FOTs8/tjeGcvtXMsX4N3kU1UE1nVG+A5pg7TSjuJ4zUN3A==", - "dev": true - }, - "@types/d3-shape": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.2.4.tgz", - "integrity": "sha512-X4Xq2mpChPIMDMAXwLfxHKLbqv+sowkJ94bENeSMqqhQJ5v4oXuoyLo0vnIkydVbuQ52ZwPplk219K0m2HJODg==", - "dev": true, - "requires": { - "@types/d3-path": "*" - } - }, - "@types/d3-time": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.0.9.tgz", - "integrity": "sha512-m+D4NbQdDlTVaO7QgXAnatR3IDxQYDMBtRhgSCi5rs9R1LPq1y7/2aqa1FJ2IWjFm1mOV63swDxonnCDlHgHMA==", - "dev": true - }, - "@types/d3-time-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.1.0.tgz", - "integrity": "sha512-/myT3I7EwlukNOX2xVdMzb8FRgNzRMpsZddwst9Ld/VFe6LyJyRp0s32l/V9XoUzk+Gqu56F/oGk6507+8BxrA==", - "dev": true - }, - "@types/node": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.2.tgz", - "integrity": "sha512-bjk1RIeZBCe/WukrFToIVegOf91Pebr8cXYBwLBIsfiGWVQ+ifwWsT59H3RxrWzWrzd1l/Amk1/ioY5Fq3/bpA==", - "dev": true - }, - "@types/react": { - "version": "16.3.14", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.3.14.tgz", - "integrity": "sha512-wNUGm49fPl7eE2fnYdF0v5vSOrUMdKMQD/4NwtQRnb6mnPwtkhabmuFz37eq90+hhyfz0pWd38jkZHOcaZ6LGw==", - "dev": true, - "requires": { - "csstype": "^2.2.0" - } - }, - "@types/react-dom": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.0.5.tgz", - "integrity": "sha512-ony2hEYlGXCLWNAWWgbsHR7qVvDbeMRFc5b43+7dhj3n+zXzxz81HV9Yjpc3JD8vLCiwYoSLqFCI6bD0+0zG2Q==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/react": "*" - } - }, - "@uifabric/charting": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@uifabric/charting/-/charting-0.25.2.tgz", - "integrity": "sha512-igKNEB2npOWADqk/Ih288KrvLjCA5SRDYxU7kkPHcQinAEUXzJ6YXLLHnMEP5fcmbYPP4PIXP+k+pEo8f65KFw==", - "dev": true, - "requires": { - "@microsoft/load-themed-styles": "^1.7.13", - "@types/d3-array": "1.2.1", - "@types/d3-axis": "1.0.10", - "@types/d3-scale": "2.0.0", - "@types/d3-selection": "1.3.0", - "@types/d3-shape": "^1.2.3", - "@types/d3-time-format": "^2.1.0", - "@uifabric/icons": ">=6.1.2 <7.0.0", - "@uifabric/set-version": ">=1.1.3 <2.0.0", - "d3-array": "1.2.1", - "d3-axis": "1.0.8", - "d3-scale": "2.0.0", - "d3-selection": "1.3.0", - "d3-shape": "^1.2.0", - "d3-time-format": "^2.1.3", - "office-ui-fabric-react": ">=6.91.0 <7.0.0", - "prop-types": "^15.5.10", - "tslib": "^1.7.1" - } - }, - "@uifabric/icons": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@uifabric/icons/-/icons-6.1.2.tgz", - "integrity": "sha512-G2fMLUqSpQXoODu1B4823dRW6e/Lu6D++AJzEfg2+mkyDYwH++nS7bwvvE56w0tGH85oqiiiJqR6I4+8E83uTw==", - "dev": true, - "requires": { - "@uifabric/set-version": ">=1.1.2 <2.0.0", - "@uifabric/styling": ">=6.29.2 <7.0.0", - "tslib": "^1.7.1" - } - }, - "@uifabric/merge-styles": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-6.10.4.tgz", - "integrity": "sha512-s4pXzTU+s0gPOZ9RkunS7t8jxGGPOUXLVSJ7I1DHvs4SpcDQLGZh6X7p5MpJa4BpZbE4yWDi2agRoC3V8+Df9Q==", - "dev": true, - "requires": { - "@uifabric/set-version": ">=1.1.3 <2.0.0", - "tslib": "^1.7.1" - } - }, - "@uifabric/set-version": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-1.1.3.tgz", - "integrity": "sha512-IYpwVIuN7MJOeiWzZzr9AmFSvA5zc6gJn4fNHtEFIQnNB8WVWIcYrvx8Tbf7wWj9MvhdHYp70F054zZlHbL/Ag==", - "dev": true, - "requires": { - "tslib": "^1.7.1" - } - }, - "@uifabric/styling": { - "version": "6.32.2", - "resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-6.32.2.tgz", - "integrity": "sha512-QLtqMPC2vLjM5B/gJFmYMVToYu1FHfa6h62T9ZeGNDpaQue+MLgX7aw+9OPbf2BjoUhdA+hyFYisVbCOX9NnCA==", - "dev": true, - "requires": { - "@microsoft/load-themed-styles": "^1.7.13", - "@uifabric/merge-styles": ">=6.10.4 <7.0.0", - "@uifabric/set-version": ">=1.1.3 <2.0.0", - "@uifabric/utilities": ">=6.23.1 <7.0.0", - "tslib": "^1.7.1" - } - }, - "@uifabric/utilities": { - "version": "6.23.1", - "resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-6.23.1.tgz", - "integrity": "sha512-In/J78i27Ku85YgNDTG144KziyA1W4X3srINRXpGQ1bpLLCWyOYLMWjDWTm8DMu6VM1hXGPY9kFf7Plnifirug==", - "dev": true, - "requires": { - "@uifabric/merge-styles": ">=6.10.2 <7.0.0", - "@uifabric/set-version": ">=1.1.3 <2.0.0", - "prop-types": "^15.5.10", - "tslib": "^1.7.1" - } - }, - "@webassemblyjs/ast": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.3.1.tgz", - "integrity": "sha512-WJKy500MK6cM5LNcOjKlLHnYtTU5PcmL06iXErYriA90GLn7W/EzIyknZRx0Bj3W6FjYKTPkHADdE3GM0ZJk1Q==", - "dev": true, - "requires": { - "@webassemblyjs/helper-wasm-bytecode": "1.3.1", - "@webassemblyjs/wast-parser": "1.3.1", - "webassemblyjs": "1.3.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.3.1.tgz", - "integrity": "sha512-8kCRyt0bQSnZD67UQfDTONO0jD7HCxmNUUJfT9OnVok0RWYs/AnpS83kfHtQjHucRMyx2d+YlsJWkdhXdLobqA==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.3.1.tgz", - "integrity": "sha512-xIcxcfkBrrivLauyXJ57i/ArPy+kFgZjMDrxm4pSUBG2VtwwYKjOZAyjf4qsM4JbP5vRuRzMD2gp+a9WMyC3PA==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.3.1.tgz", - "integrity": "sha512-X305tLl7qeTixYz0/Y0Xu+bcNizJLfHUZ1iTiVtorDkh5mLrIZ8hLkkM2oYNSq/oaoW6gpHDrHRfYZItExTeeQ==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.3.1" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.3.1.tgz", - "integrity": "sha512-Be1G8ZDTP1T+vXaVMraXY8+SoJnOVNarRkByrM83PHjW+vqUwubwYPpA4U2NBTz4WG19vYpfsUccCZwOPiyK+Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.3.1.tgz", - "integrity": "sha512-rOIjy/Cmd+hspim9B/c7dUqhW8AyKsRceVcQtWljIvFSitx9rsL5m73NGaGFUVAEaMDvvEzYczehjwbrHPz4KA==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.3.1.tgz", - "integrity": "sha512-mDBlDsrsl1Y7LGEdmlTzdDwr/SCe2l9ZsQZ1GYXird71jlU/0djs5ZXfxyufd1G3wO+yuxW997m50Patk4s1fA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.3.1", - "@webassemblyjs/helper-buffer": "1.3.1", - "@webassemblyjs/helper-wasm-bytecode": "1.3.1", - "@webassemblyjs/wasm-gen": "1.3.1" - } - }, - "@webassemblyjs/leb128": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.3.1.tgz", - "integrity": "sha512-CgkWUXRINTGs/+Swp8COvwOk5Ci4spv1MKDdGfRecyFiLGs7wYm/p4fgRQWzBEFaotEP/ftPa9O6BFykrwghzw==", - "dev": true, - "requires": { - "leb": "^0.3.0" - } - }, - "@webassemblyjs/validation": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/validation/-/validation-1.3.1.tgz", - "integrity": "sha512-afp32tgDVwW53lQc58PtIBifyZf3qGzRpl9r+8SNHzPOe6lBamjK1RWEA83YHwvu7qk6uBV7IAeUC7BgdxPtsA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.3.1" - } - }, - "@webassemblyjs/wasm-edit": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.3.1.tgz", - "integrity": "sha512-0T75tHKR0dIDiO3oqBZmo+2McJy5FkgSL2AIP3rJvqrDFaJ19jCrC5KLqGbqo3ZicdY9x9Xdc9zaY2A1TCkAiw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.3.1", - "@webassemblyjs/helper-buffer": "1.3.1", - "@webassemblyjs/helper-wasm-bytecode": "1.3.1", - "@webassemblyjs/helper-wasm-section": "1.3.1", - "@webassemblyjs/wasm-gen": "1.3.1", - "@webassemblyjs/wasm-opt": "1.3.1", - "@webassemblyjs/wasm-parser": "1.3.1", - "@webassemblyjs/wast-printer": "1.3.1", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.3.1.tgz", - "integrity": "sha512-iYgQ3UJpsKiJnXerHulT//JpJAHuLavqMPEtUiRnSh0r/WvZh8pNtYBaN2v64+d9yTtu9aMlJmlKi6uz1j5FFg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.3.1", - "@webassemblyjs/helper-wasm-bytecode": "1.3.1", - "@webassemblyjs/leb128": "1.3.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.3.1.tgz", - "integrity": "sha512-Eqi1he5VuGxMYKGhrBU+UxUhIwTDlnuvJmwrad3k4dD2UQpqu3HedRndGdJTQ68xj2GqDCdE6QiLzjytSN4KVQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.3.1", - "@webassemblyjs/helper-buffer": "1.3.1", - "@webassemblyjs/wasm-gen": "1.3.1", - "@webassemblyjs/wasm-parser": "1.3.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.3.1.tgz", - "integrity": "sha512-euRnqP/bky9DGbXf5Nqvtmc5soOM7xkvwI2H+LSP88NAFkcGMPEnrAP4UbsFAH+ESnS4kAW6wL5UyzjWBiiTbA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.3.1", - "@webassemblyjs/helper-wasm-bytecode": "1.3.1", - "@webassemblyjs/leb128": "1.3.1", - "@webassemblyjs/wasm-parser": "1.3.1", - "webassemblyjs": "1.3.1" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.3.1.tgz", - "integrity": "sha512-lM7Kwsp1mqqL3jq1kXKeoT8Z/cXvPQ2kWBNg19nZXbL1eLgr+4qRi83WvQU45+5+uIovigtBw/WU0nLLev7LGA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.3.1", - "@webassemblyjs/floating-point-hex-parser": "1.3.1", - "@webassemblyjs/helper-code-frame": "1.3.1", - "@webassemblyjs/helper-fsm": "1.3.1", - "long": "^3.2.0", - "webassemblyjs": "1.3.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.3.1.tgz", - "integrity": "sha512-V2SMByzsrTT2wGQOjm/3ctCiy8mdYOSLDk+EkOpNHVZWB9ISJc+gZWzniTgihih03UWqqNa1S/0XpyVz7ZEYSQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.3.1", - "@webassemblyjs/wast-parser": "1.3.1", - "long": "^3.2.0" - } - }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "dev": true, - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "^5.0.0" - } - }, - "ajv": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", - "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0", - "uri-js": "^4.2.1" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", - "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", - "dev": true - }, - "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - } - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", - "dev": true - }, - "awesome-typescript-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-5.0.0.tgz", - "integrity": "sha512-/80vlBnWp5IlERQ0sxRDQfz5voqht02MRNgUdbn90rKHrope6eh0PYr0qepD2TpYYnCSvq0DzdWc8udHM0KefA==", - "dev": true, - "requires": { - "chalk": "^2.3.1", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.1.0", - "lodash": "^4.17.5", - "micromatch": "^3.1.9", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.3" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", - "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, - "axios": { - "version": "0.18.0", - "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "dev": true, - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "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" - } - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, - "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "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", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, - "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "dev": true, - "requires": { - "regenerator-transform": "^0.10.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-preset-env": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", - "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^3.2.6", - "invariant": "^2.2.2", - "semver": "^5.3.0" - }, - "dependencies": { - "browserslist": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.7.tgz", - "integrity": "sha512-oYVLxFVqpX9uMhOIQBLtZL+CX4uY8ZpWcjNTaxyWl5rO8yA9SSNikFnAfvk8J3P/7z3BZwNmEqFKaJoYltj3MQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000835", - "electron-to-chromium": "^1.3.45" - } - } - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "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" - } - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "~2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "~1.6.15" - }, - "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" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "bootstrap": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.1.tgz", - "integrity": "sha512-SpiDSOcbg4J/PjVSt4ny5eY6j74VbVSjROY4Fb/WIUXBV9cnb5luyR4KnPvNoXuGnBK1T+nJIWqRsvU3yP8Mcg==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "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=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", - "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "caniuse-lite": { - "version": "1.0.30000839", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000839.tgz", - "integrity": "sha512-gJZIfmkuy84agOeAZc7WJOexZhisZaBSFk96gkGM6TkH7+1mBfr/MSPnXC8lO0g7guh/ucbswYjruvDbzc6i0g==", - "dev": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", - "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.1.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.0" - } - }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true - }, - "chrome-trace-event": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", - "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-css": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", - "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", - "dev": true, - "requires": { - "source-map": "0.5.x" - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "clone-deep": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", - "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", - "requires": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.0", - "shallow-clone": "^1.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "^1.1.1" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "compressible": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", - "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", - "dev": true, - "requires": { - "mime-db": ">= 1.33.0 < 2" - } - }, - "compression": { - "version": "1.7.2", - "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", - "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "bytes": "3.0.0", - "compressible": "~2.0.13", - "debug": "2.6.9", - "on-headers": "~1.0.1", - "safe-buffer": "5.1.1", - "vary": "~1.1.2" - }, - "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" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", - "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.0.tgz", - "integrity": "sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "css-selector-tokenizer": "^0.7.0", - "icss-utils": "^2.1.0", - "loader-utils": "^1.0.2", - "lodash.camelcase": "^4.3.0", - "postcss": "^6.0.23", - "postcss-modules-extract-imports": "^1.2.0", - "postcss-modules-local-by-default": "^1.2.0", - "postcss-modules-scope": "^1.1.0", - "postcss-modules-values": "^1.3.0", - "postcss-value-parser": "^3.3.0", - "source-list-map": "^2.0.0" - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-selector-tokenizer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", - "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", - "dev": true, - "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - }, - "dependencies": { - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - } - } - }, - "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", - "dev": true - }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true - }, - "csstype": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.2.tgz", - "integrity": "sha512-epoHrKPywwUhFTXadQNA5PPx4GChtkM03SkBeFZTaFtJcn6QfXpBkX2IAc4J9Oe18nha5NrTOo2OMOge+qH1mw==", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, - "d3-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", - "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==", - "dev": true - }, - "d3-axis": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz", - "integrity": "sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo=", - "dev": true - }, - "d3-collection": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", - "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==", - "dev": true - }, - "d3-color": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.3.tgz", - "integrity": "sha512-x37qq3ChOTLd26hnps36lexMRhNXEtVxZ4B25rL0DVdDsGQIJGB18S7y9XDwlDD6MD/ZBzITCf4JjGMM10TZkw==", - "dev": true - }, - "d3-format": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.3.2.tgz", - "integrity": "sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ==", - "dev": true - }, - "d3-interpolate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz", - "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==", - "dev": true, - "requires": { - "d3-color": "1" - } - }, - "d3-path": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.7.tgz", - "integrity": "sha512-q0cW1RpvA5c5ma2rch62mX8AYaiLX0+bdaSM2wxSU9tXjU4DNvkx9qiUvjkuWCj3p22UO/hlPivujqMiR9PDzA==", - "dev": true - }, - "d3-scale": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.0.0.tgz", - "integrity": "sha512-Sa2Ny6CoJT7x6dozxPnvUQT61epGWsgppFvnNl8eJEzfJBG0iDBBTJAtz2JKem7Mb+NevnaZiDiIDHsuWkv6vg==", - "dev": true, - "requires": { - "d3-array": "^1.2.0", - "d3-collection": "1", - "d3-format": "1", - "d3-interpolate": "1", - "d3-time": "1", - "d3-time-format": "2" - } - }, - "d3-selection": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.3.0.tgz", - "integrity": "sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA==", - "dev": true - }, - "d3-shape": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.2.tgz", - "integrity": "sha512-hUGEozlKecFZ2bOSNt7ENex+4Tk9uc/m0TtTEHBvitCBxUNjhzm5hS2GrrVRD/ae4IylSmxGeqX5tWC2rASMlQ==", - "dev": true, - "requires": { - "d3-path": "1" - } - }, - "d3-time": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.10.tgz", - "integrity": "sha512-hF+NTLCaJHF/JqHN5hE8HVGAXPStEq6/omumPE/SxyHVrR7/qQxusFDo0t0c/44+sCGHthC7yNGFZIEgju0P8g==", - "dev": true - }, - "d3-time-format": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.3.tgz", - "integrity": "sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA==", - "dev": true, - "requires": { - "d3-time": "1" - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, - "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "detect-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", - "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "dom-converter": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", - "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", - "dev": true, - "requires": { - "utila": "~0.3" - }, - "dependencies": { - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "dev": true, - "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", - "dev": true - }, - "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.45", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz", - "integrity": "sha1-RYrBscXHYM6IEaFtK/vZfsMLr7g=", - "dev": true - }, - "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "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" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "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.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", - "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", - "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true, - "requires": { - "is-callable": "^1.1.1", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" - } - }, - "es5-ext": { - "version": "0.10.42", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", - "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "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=", - "dev": true - }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true, - "requires": { - "original": ">=0.0.5" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "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" - }, - "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=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.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" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "express": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", - "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.3", - "qs": "6.5.1", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "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" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fastparse": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", - "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", - "dev": true - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", - "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.9" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - } - } - }, - "file-loader": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", - "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", - "dev": true, - "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^0.4.5" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "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=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - }, - "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" - } - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } - }, - "follow-redirects": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", - "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", - "dev": true, - "requires": { - "debug": "^3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "requires": { - "for-in": "^1.0.1" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", - "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.9.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "^2.1.0" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.9.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "~0.4.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "global-modules-path": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz", - "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==", - "dev": true - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", - "dev": true - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, - "requires": { - "function-bind": "^1.0.2" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "html-minifier": { - "version": "3.5.15", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.15.tgz", - "integrity": "sha512-OZa4rfb6tZOZ3Z8Xf0jKxXkiDcFWldQePGYFDcgKqES2sXeWaEv9y6QQvWUtX3ySI3feApQi5uCsHLINQ6NoAw==", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.1.x", - "commander": "2.15.x", - "he": "1.1.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.3.x" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "uglify-js": { - "version": "3.3.24", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.24.tgz", - "integrity": "sha512-hS7+TDiqIqvWScCcKRybCQzmMnEzJ4ryl9ErRmW4GFyG48p0/dKZiy/5mVLbsFzU8CCnCgQdxMiJzZythvLzCg==", - "dev": true, - "requires": { - "commander": "~2.15.0", - "source-map": "~0.6.1" - } - } - } - }, - "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", - "dev": true, - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - } - } - }, - "htmlparser2": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", - "dev": true, - "requires": { - "domelementtype": "1", - "domhandler": "2.1", - "domutils": "1.1", - "readable-stream": "1.0" - }, - "dependencies": { - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "http-parser-js": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz", - "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=", - "dev": true - }, - "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", - "dev": true, - "requires": { - "eventemitter3": "^3.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", - "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", - "dev": true, - "requires": { - "http-proxy": "^1.16.2", - "is-glob": "^4.0.0", - "lodash": "^4.17.5", - "micromatch": "^3.1.9" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - } - }, - "ieee754": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", - "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "dev": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "internal-ip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", - "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", - "dev": true, - "requires": { - "meow": "^3.3.0" - } - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "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=", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ipaddr.js": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", - "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "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=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "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=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "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=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "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" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" - }, - "killable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", - "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "leb": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz", - "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=", - "dev": true - }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "lodash.tail": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", - "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=" - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", - "dev": true - }, - "loglevelnext": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", - "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", - "dev": true, - "requires": { - "es6-symbol": "^3.1.1", - "object.assign": "^4.1.0" - } - }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "requires": { - "js-tokens": "^3.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "map-age-cleaner": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz", - "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "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", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.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=", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "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" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "requires": { - "mime-db": "~1.33.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.0.tgz", - "integrity": "sha512-2Zik6PhUZ/MbiboG6SDS9UTPL4XXy4qnyGjSdCIWRrr8xb6PwLtHE+AYOjkXJWdF0OG8vo/yrJ8CgS5WbMpzIg==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "webpack-sources": "^1.1.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" - } - } - }, - "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" - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "neo-async": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", - "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==" - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "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" - } - }, - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", - "dev": true - }, - "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^1.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "office-ui-fabric-react": { - "version": "6.92.0", - "resolved": "https://registry.npmjs.org/office-ui-fabric-react/-/office-ui-fabric-react-6.92.0.tgz", - "integrity": "sha512-+Lw1EjT/DkXOyZeARfbFrwtcLMNjF7KXSPJy+MQyj/fj768t+tPeuc9g41gD0YnaTJ6U+Sh0CtS0TTuMqqvgrA==", - "dev": true, - "requires": { - "@microsoft/load-themed-styles": "^1.7.13", - "@uifabric/icons": ">=6.1.2 <7.0.0", - "@uifabric/merge-styles": ">=6.10.4 <7.0.0", - "@uifabric/set-version": ">=1.1.3 <2.0.0", - "@uifabric/styling": ">=6.32.2 <7.0.0", - "@uifabric/utilities": ">=6.23.1 <7.0.0", - "prop-types": "^15.5.10", - "tslib": "^1.7.1" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "original": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", - "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", - "dev": true, - "requires": { - "url-parse": "1.0.x" - }, - "dependencies": { - "url-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", - "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", - "dev": true, - "requires": { - "querystringify": "0.0.x", - "requires-port": "1.0.x" - } - } - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true - }, - "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", - "dev": true, - "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=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", - "dev": true - }, - "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", - "dev": true, - "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" - } - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "pbkdf2": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", - "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "portfinder": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", - "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", - "dev": true, - "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" - }, - "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" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-modules-extract-imports": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", - "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "prop-types": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", - "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", - "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" - } - }, - "proxy-addr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", - "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.6.0" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.0.tgz", - "integrity": "sha512-UWi0klDoq8xtVzlMRgENV9F7iCTZExaJQSQL187UXsxpk9NnrKGqTqqUNYAKGOzucSOxs2+jUnRNI+rLviPhJg==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", - "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", - "dev": true - }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - } - } - }, - "react": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/react/-/react-16.3.2.tgz", - "integrity": "sha512-o5GPdkhciQ3cEph6qgvYB7LTOHw/GB0qRI6ZFNugj49qJCFfgHwVNjZ5u+b7nif4vOeMIOuYj3CeYe2IBD74lg==", - "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.0" - } - }, - "react-dom": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.3.2.tgz", - "integrity": "sha512-MMPko3zYncNrz/7gG17wJWUREZDvskZHXOwbttzl0F0L3wDmToyuETuo/r8Y5yvDejwYcRyWI1lvVBjLJWFwKA==", - "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true, - "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "renderkid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", - "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", - "dev": true, - "requires": { - "css-select": "^1.1.0", - "dom-converter": "~0.1", - "htmlparser2": "~3.3.0", - "strip-ansi": "^3.0.0", - "utila": "~0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sass-loader": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", - "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", - "requires": { - "clone-deep": "^2.0.1", - "loader-utils": "^1.0.1", - "lodash.tail": "^4.1.1", - "neo-async": "^2.5.0", - "pify": "^3.0.0", - "semver": "^5.5.0" - } - }, - "schema-utils": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", - "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", - "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", - "dev": true, - "requires": { - "node-forge": "0.7.5" - } - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "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" - } - } - } - }, - "serialize-javascript": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", - "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", - "dev": true - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "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" - } - } - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^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=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", - "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", - "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^5.0.0", - "mixin-object": "^2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "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" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" - } - }, - "sockjs-client": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", - "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", - "dev": true, - "requires": { - "debug": "^2.6.6", - "eventsource": "0.1.6", - "faye-websocket": "~0.11.0", - "inherits": "^2.0.1", - "json3": "^3.3.2", - "url-parse": "^1.1.8" - }, - "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" - } - }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - } - } - }, - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", - "dev": true - }, - "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", - "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", - "dev": true, - "requires": { - "debug": "^2.6.8", - "handle-thing": "^1.2.5", - "http-deceiver": "^1.2.7", - "safe-buffer": "^5.0.1", - "select-hose": "^2.0.0", - "spdy-transport": "^2.0.18" - }, - "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" - } - } - } - }, - "spdy-transport": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", - "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", - "dev": true, - "requires": { - "debug": "^2.6.8", - "detect-node": "^2.0.3", - "hpack.js": "^2.1.6", - "obuf": "^1.1.1", - "readable-stream": "^2.2.9", - "safe-buffer": "^5.0.1", - "wbuf": "^1.7.2" - }, - "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" - } - } - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.1" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", - "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", - "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "style-loader": { - "version": "0.22.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.22.1.tgz", - "integrity": "sha512-WXUrLeinPIR1Oat3PfCDro7qTniwNTJqGqv1KcQiL3JR5PzrVLTyNsd9wTsPXG/qNCJ7lzR2NY/QDjFsP7nuSQ==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^0.4.5" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "tapable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", - "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" - } - }, - "thunky": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", - "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "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=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.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=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "dev": true - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.3.tgz", - "integrity": "sha512-+81MUSyX+BaSo+u2RbozuQk/UWx6hfG0a5gHu4ANEM4sU96XbuIyAB+rWBW1u70c6a5QuZfuYICn3s2UjuHUpA==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.18", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.18.tgz", - "integrity": "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA==" - }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "uglifyjs-webpack-plugin": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz", - "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==", - "dev": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unique-filename": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", - "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", - "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.5.tgz", - "integrity": "sha512-qbKn90aDQ0YEwvXoLqj0oiuUYroLX2lVHZ+b+xwjozFasAOC4GneDq5+OaIG5Zj+jFmbz/uO+f7a9qxjktJQww==", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "uri-js": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz", - "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-join": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", - "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", - "dev": true - }, - "url-loader": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.0.1.tgz", - "integrity": "sha512-rAonpHy7231fmweBKUFe0bYnlGDty77E+fm53NZdij7j/YOpyGzc7ttqG1nAXl3aRs0k41o0PC3TvGXQiw2Zvw==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^0.4.3" - }, - "dependencies": { - "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", - "dev": true - } - } - }, - "url-parse": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", - "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", - "dev": true, - "requires": { - "querystringify": "^2.0.0", - "requires-port": "^1.0.0" - }, - "dependencies": { - "querystringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", - "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", - "dev": true - } - } - }, - "use": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", - "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "webassemblyjs": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/webassemblyjs/-/webassemblyjs-1.3.1.tgz", - "integrity": "sha512-jaqGpR+MLye6fzxKTiv0/TPEm6ma7ypef76JlQVk9E1z5M2N6EXNrsMOuh7P6aXUVFHJSioRp4N9QOFpcWfIVA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.3.1", - "@webassemblyjs/validation": "1.3.1", - "@webassemblyjs/wasm-parser": "1.3.1", - "@webassemblyjs/wast-parser": "1.3.1", - "long": "^3.2.0" - } - }, - "webpack": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.8.1.tgz", - "integrity": "sha512-xkxthzaVR298HmvmrjBCjiCmgzWnBnvBlgPzuvqmxWSh8QImrPvCCmr482YIx7ixWkTtQj1aMRz+cjoNPUsGEQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.3.1", - "@webassemblyjs/wasm-edit": "1.3.1", - "@webassemblyjs/wasm-parser": "1.3.1", - "acorn": "^5.0.0", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^0.1.1", - "enhanced-resolve": "^4.0.0", - "eslint-scope": "^3.7.1", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.0.0", - "uglifyjs-webpack-plugin": "^1.2.4", - "watchpack": "^1.5.0", - "webpack-sources": "^1.0.1" - } - }, - "webpack-cli": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz", - "integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.0", - "global-modules-path": "^2.3.0", - "import-local": "^2.0.0", - "interpret": "^1.1.0", - "loader-utils": "^1.1.0", - "supports-color": "^5.5.0", - "v8-compile-cache": "^2.0.2", - "yargs": "^12.0.2" - }, - "dependencies": { - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.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==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^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==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", - "dev": true, - "requires": { - "p-try": "^2.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==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^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==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "webpack-dev-middleware": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz", - "integrity": "sha512-I6Mmy/QjWU/kXwCSFGaiOoL5YEQIVmbb0o45xMoCyQAg/mClqZVTcsX327sPfekDyJWpCxb+04whNyLOIxpJdQ==", - "dev": true, - "requires": { - "loud-rejection": "^1.6.0", - "memory-fs": "~0.4.1", - "mime": "^2.1.0", - "path-is-absolute": "^1.0.0", - "range-parser": "^1.0.3", - "url-join": "^4.0.0", - "webpack-log": "^1.0.1" - }, - "dependencies": { - "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", - "dev": true - } - } - }, - "webpack-dev-server": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz", - "integrity": "sha512-itcIUDFkHuj1/QQxzUFOEXXmxOj5bku2ScLEsOFPapnq2JRTm58gPdtnBphBJOKL2+M3p6+xygL64bI+3eyzzw==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "array-includes": "^3.0.3", - "bonjour": "^3.5.0", - "chokidar": "^2.0.0", - "compression": "^1.5.2", - "connect-history-api-fallback": "^1.3.0", - "debug": "^3.1.0", - "del": "^3.0.0", - "express": "^4.16.2", - "html-entities": "^1.2.0", - "http-proxy-middleware": "~0.18.0", - "import-local": "^1.0.0", - "internal-ip": "1.2.0", - "ip": "^1.1.5", - "killable": "^1.0.0", - "loglevel": "^1.4.1", - "opn": "^5.1.0", - "portfinder": "^1.0.9", - "selfsigned": "^1.9.1", - "serve-index": "^1.7.2", - "sockjs": "0.3.19", - "sockjs-client": "1.1.4", - "spdy": "^3.4.1", - "strip-ansi": "^3.0.0", - "supports-color": "^5.1.0", - "webpack-dev-middleware": "3.1.3", - "webpack-log": "^1.1.2", - "yargs": "11.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.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", - "yargs-parser": "^9.0.2" - } - } - } - }, - "webpack-log": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", - "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", - "dev": true, - "requires": { - "chalk": "^2.1.0", - "log-symbols": "^2.1.0", - "loglevelnext": "^1.0.1", - "uuid": "^3.1.0" - } - }, - "webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "dev": true, - "requires": { - "http-parser-js": ">=0.4.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true - }, - "whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "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=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "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==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", - "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^2.0.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": "^10.1.0" - }, - "dependencies": { - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "requires": { - "xregexp": "4.0.0" - } - }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "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" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "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==", - "dev": true - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "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==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "mem": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", - "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" - } - }, - "os-locale": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", - "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", - "dev": true, - "requires": { - "execa": "^0.10.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", - "dev": true, - "requires": { - "p-try": "^2.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==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } -} diff --git a/dashboard/static/package.json b/dashboard/static/package.json deleted file mode 100644 index fb3fb167..00000000 --- a/dashboard/static/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "active-learning-detect", - "version": "1.0.0", - "description": "Display a stats dashboard for active learning pipeline", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "start": "webpack-dev-server --mode development --inline --hot --open", - "build": "webpack --mode development" - }, - "author": "", - "license": "ISC", - "devDependencies": { - "@types/react": "^16.3.14", - "@types/react-dom": "^16.0.5", - "@uifabric/charting": "^0.25.2", - "awesome-typescript-loader": "^5.0.0", - "axios": "^0.18.0", - "babel-core": "^6.26.3", - "babel-preset-env": "^1.7.0", - "css-loader": "^1.0.0", - "file-loader": "^1.1.11", - "html-webpack-plugin": "^3.2.0", - "mini-css-extract-plugin": "^0.4.0", - "office-ui-fabric-react": "^6.92.0", - "style-loader": "^0.22.1", - "typescript": "^3.0.1", - "url-loader": "^1.0.1", - "webpack": "^4.8.1", - "webpack-cli": "^3.1.0", - "webpack-dev-server": "^3.1.4" - }, - "dependencies": { - "bootstrap": "^4.1.1", - "react": "^16.3.2", - "react-dom": "^16.3.2", - "sass-loader": "^7.1.0" - } -} diff --git a/dashboard/static/readme.md b/dashboard/static/readme.md deleted file mode 100644 index 4c2915d0..00000000 --- a/dashboard/static/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -## Prerequisites - -Install [Node.js and npm](https://nodejs.org/en/) (v8.9.4 or higher) if they are not already installed on your computer. - -> Verify that you are running at least node v8.x.x and npm 5.x.x by running `node -v` and `npm -v` -in a terminal/console window. Older versions may produce errors. - -## Steps to build it - -1. cd into the static folder and run `npm install`, then `npm run build` -2. cd .. -3. cd into the server folder and initialize a new virtualenv -4. `python server.py` \ No newline at end of file diff --git a/dashboard/static/src/activelearningstatistics.css b/dashboard/static/src/activelearningstatistics.css deleted file mode 100644 index 9268791a..00000000 --- a/dashboard/static/src/activelearningstatistics.css +++ /dev/null @@ -1,10 +0,0 @@ -.title { - padding: 10px 10px 0px 20px; - font-family: 'Helvetica' -} - -.chart { - width: 500px; - padding: 30px 10px 30px 20px; - height: 400px; -} \ No newline at end of file diff --git a/dashboard/static/src/activelearningstatistics.tsx b/dashboard/static/src/activelearningstatistics.tsx deleted file mode 100644 index bc305174..00000000 --- a/dashboard/static/src/activelearningstatistics.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import * as React from 'react'; -import { DataViz } from './dataviz'; -import axios from 'axios'; -import './activelearningstatistics.css'; - -export interface IActiveLearningStatisticsState { - totag: number; - tagging: number; - count: number; - tagged: number; -} - -export class ActiveLearningStatistics extends React.Component<{}, IActiveLearningStatisticsState> { - constructor(props: {}) { - super(props); - this.state = { - totag: 0, - tagging: 0, - tagged: 0, - count: 0 - } - } - refreshData = () => { - axios.get('/stats').then(response => { - console.log(response.data); - this.setState({ - totag: response.data.totag, - tagging: response.data.tagging, - tagged: response.data.tagged, - count: response.data.count - }) - }); - } - - componentDidMount() { - this.refreshData(); - window.setInterval(this.refreshData, 10000); - } - public render() { - return ( -

    ); - } -} - diff --git a/dashboard/static/src/dataviz.tsx b/dashboard/static/src/dataviz.tsx deleted file mode 100644 index c3e9b184..00000000 --- a/dashboard/static/src/dataviz.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as React from 'react'; -import { DonutChart, IDonutChartProps, IChartProps, IChartDataPoint } from '@uifabric/charting'; -import { DefaultPalette } from 'office-ui-fabric-react/lib/Styling'; - -export interface IDataVizProps { - totag: number; - tagged: number; - tagging: number; -} - -export class DataViz extends React.Component { - public render() { - const points: IChartDataPoint[] = [ - { legend: 'To tag', data: this.props.totag, color: DefaultPalette.orangeLighter }, - { legend: 'Tagging', data: this.props.tagging, color: DefaultPalette.purpleLight }, - { legend: 'Tagged', data: this.props.tagged, color: DefaultPalette.greenLight } - ]; - - const data: IChartProps = { - chartData: points - }; - return ; - } -} - diff --git a/dashboard/static/src/index.html b/dashboard/static/src/index.html deleted file mode 100644 index bde9a852..00000000 --- a/dashboard/static/src/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - -
    - -
    -
    - - - \ No newline at end of file diff --git a/dashboard/static/src/index.tsx b/dashboard/static/src/index.tsx deleted file mode 100644 index 102396d6..00000000 --- a/dashboard/static/src/index.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import * as React from 'react'; -import * as ReactDOM from 'react-dom'; - -import { ActiveLearningStatistics } from './activelearningstatistics'; - - ReactDOM.render( - , - document.getElementById('root') - ); \ No newline at end of file diff --git a/dashboard/static/tsconfig.json b/dashboard/static/tsconfig.json deleted file mode 100644 index 8d8e19e6..00000000 --- a/dashboard/static/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "compilerOptions": { - "target": "es6", - "module": "es6", - "moduleResolution": "node", - "declaration": false, - "noImplicitAny": false, - "sourceMap": true, - "jsx": "react", - "noLib": false, - "suppressImplicitAnyIndexErrors": true - }, - "compileOnSave": false, - "exclude": [ - "node_modules" - ] -} \ No newline at end of file diff --git a/dashboard/static/webpack.config.js b/dashboard/static/webpack.config.js deleted file mode 100644 index 480aee53..00000000 --- a/dashboard/static/webpack.config.js +++ /dev/null @@ -1,65 +0,0 @@ -let path = require('path'); -let HtmlWebpackPlugin = require('html-webpack-plugin'); -let MiniCssExtractPlugin = require('mini-css-extract-plugin'); -let webpack = require('webpack'); - -var basePath = __dirname; - -module.exports = { - context: path.join(basePath, 'src'), - resolve: { - extensions: ['.js', '.ts', '.tsx'] - }, - entry: { - app: './index.tsx', - vendorStyles: [ - '../node_modules/bootstrap/dist/css/bootstrap.css', - ], - }, - output: { - // path: path.join(basePath, 'dist'), - path: __dirname + '/dist', - filename: '[name].js', - }, - module: { - rules: [ - { - test: /\.tsx$/, - exclude: /node_modules/, - loader: 'awesome-typescript-loader', - options: { - useBabel: true, - }, - }, - { - test: /\.css$/, - use: [MiniCssExtractPlugin.loader, "css-loader"], - }, - { - test: /\.(png|jpg|gif|svg)$/, - loader: 'file-loader', - options: { - name: 'assets/img/[name].[ext]?[hash]' - } - }, - ], - }, - // For development https://webpack.js.org/configuration/devtool/#for-development - devtool: 'inline-source-map', - devServer: { - port: 8080, - noInfo: true, - }, - plugins: [ - //Generate index.html in /dist => https://github.com/ampedandwired/html-webpack-plugin - new HtmlWebpackPlugin({ - filename: 'index.html', //Name of file in ./dist/ - template: 'index.html', //Name of template in ./src - hash: true, - }), - new MiniCssExtractPlugin({ - filename: "[name].css", - chunkFilename: "[id].css" - }), - ], -}; \ No newline at end of file From e0b173a5ab81aa576c6368488d68f901b09de2df Mon Sep 17 00:00:00 2001 From: Amanda Kaufman Date: Mon, 5 Nov 2018 16:48:50 -0700 Subject: [PATCH 057/145] Added code to copy image from temp storage into permanent storage. Copies image as new filename == ImageID from row created in DB. Note: Changes not yet tested. --- .../onboarding/OnboardingTrigger/__init__.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/functions/pipeline/onboarding/OnboardingTrigger/__init__.py b/functions/pipeline/onboarding/OnboardingTrigger/__init__.py index e2e7bf59..d1a3ecd1 100644 --- a/functions/pipeline/onboarding/OnboardingTrigger/__init__.py +++ b/functions/pipeline/onboarding/OnboardingTrigger/__init__.py @@ -1,6 +1,7 @@ +import os import logging import azure.functions as func - +from shutil import copyfile from ...shared import db_access as DB_Access def main(req: func.HttpRequest) -> func.HttpResponse: @@ -41,11 +42,15 @@ def main(req: func.HttpRequest) -> func.HttpResponse: # Receive dictionary of mapped { ImageID : ImageURL } image_id_url_map = DB_Access.get_image_ids_for_new_images(db, image_object_list) - # Update image names in temporary blob store to reflect new ImageID returned from previous function - - # Copy over images to permanent blob store, get list of URLs to iamges in permanent storage - + # Iterating over a dictionary in Python: https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops + # Syntax for copying a file in Python: copyfile(src, dst) + # TODO: Figure out how to parse final filename: https://stackoverflow.com/questions/26443308/find-last-occurrence-of-character-in-string-python + for key, value in image_id_url_map.items(): + file_extension = os.path.splitext(value)[1] + permanent_storage_directory = "some_storage_url" + permanent_storage_path = permanent_storage_directory + "/" + key + file_extension + copyfile(value, permanent_storage_path) # Close connection to database. db.close() \ No newline at end of file From bb85ba229416ed53f2e4859be955c15e005d4758 Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Mon, 5 Nov 2018 16:34:20 -0800 Subject: [PATCH 058/145] Single endpoint support (#21) --- cli/operations.py | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/cli/operations.py b/cli/operations.py index 2f625b93..f78585cb 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -67,7 +67,8 @@ def _download_bounds(num_images): def download(config, num_images, strategy=None): - functions_url = config.get("url") + # TODO: better/more proper URI handling. + functions_url = config.get("url") + "/api/download" images_to_download = _download_bounds(num_images) query = { "imageCount": images_to_download @@ -77,10 +78,14 @@ def download(config, num_images, strategy=None): response.raise_for_status() json_resp = response.json() + count = len(json_resp['imageUrls']) - print("Received " + str(json_resp["count"]) + " files.") + print("Received " + str(count) + " files.") + + file_tree = pathlib.Path(os.path.expanduser( + config.get("tagging_location")) + ) - file_tree = pathlib.Path(os.path.expanduser(config.get("tagging_location"))) if file_tree.exists(): print("Removing existing tag data directory: " + str(file_tree)) @@ -103,8 +108,8 @@ def download_images(config, image_dir, json_resp): # Write generated VoTT data from the function to a file. write_vott_data(image_dir, json_resp) - urls = json_resp['urls'] - dummy = urls[0] + urls = json_resp['imageUrls'] + dummy = "https://cdn.pixabay.com/photo/2017/02/20/18/03/cat-2083492_960_720.jpg" for index in range(len(urls)): url = urls[index] @@ -127,7 +132,8 @@ def download_images(config, image_dir, json_resp): def write_vott_data(image_dir, json_resp): data_file = pathlib.Path(image_dir / "data.json") - vott_data = json_resp.get("vott", None) + # vott_data = json_resp.get("vott", None) + vott_data = None if not vott_data: return @@ -164,13 +170,16 @@ def prepend_file_paths(image_dir, vott_json): def upload(config): - functions_url = config.get('url') - tagging_location = pathlib.Path(config.get("tagging_location")) + functions_url = config.get("url") + "/api/upload" + tagging_location = pathlib.Path( + os.path.expanduser(config.get("tagging_location")) + ) print("Uploading VOTT json file…") - vott_json = pathlib.Path(tagging_location / "data.json") - json_data = json.loads(vott_json) + + with open(str(vott_json)) as json_file: + json_data = json.load(json_file) # Munge the vott json file. munged_json = trim_file_paths(json_data) @@ -178,8 +187,7 @@ def upload(config): response = requests.post(functions_url, json=munged_json) response.raise_for_status() - json_resp = response.json() - print(json_resp) + resp_json = response.json() print("Done!") From 424a35e820f3c15d33d05e92be229bdd99703e41 Mon Sep 17 00:00:00 2001 From: Amanda Kaufman Date: Tue, 6 Nov 2018 14:02:28 -0700 Subject: [PATCH 059/145] Random small changes --- functions/pipeline/onboarding/OnboardingTrigger/__init__.py | 2 +- .../onboarding/OnboardingTrigger/onboarding-client.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/functions/pipeline/onboarding/OnboardingTrigger/__init__.py b/functions/pipeline/onboarding/OnboardingTrigger/__init__.py index d1a3ecd1..d1ec1d11 100644 --- a/functions/pipeline/onboarding/OnboardingTrigger/__init__.py +++ b/functions/pipeline/onboarding/OnboardingTrigger/__init__.py @@ -30,7 +30,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: # Create ImageInfo object (def in db_access.py) # Note: For testing, default image height/width are set to 50x50 - image = ImageInfo(original_filename, url, 50, 50) + image = DB_Access.ImageInfo(original_filename, url, 50, 50) # Append image object to the list image_object_list.append(image) diff --git a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py index 1fa5aba6..d72eb5d3 100644 --- a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py +++ b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py @@ -10,8 +10,10 @@ print("Now executing POST request to onboard images...") -#functionURL = "https://mtarngfunc-test.azurewebsites.net/api/onboarding?code=ezQ4rW/DvaNtm6DlHZ7XQp1Enrtao3WpsW4FFR5V/nFLVb9vq4P7PQ==" -functionURL = "http://localhost:7071/api/OnboardingTrigger" +#functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/onboardingtrigger?code=mYOL/zprAqL5TlU21WJA4VWFJdf0oqOnf0fhMtveJsVEampMqrLhGw==" +#functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/OnboardingHttpTrigger" +functionURL = "https://mtarngfunc-test.azurewebsites.net/api/onboarding?code=ezQ4rW/DvaNtm6DlHZ7XQp1Enrtao3WpsW4FFR5V/nFLVb9vq4P7PQ==" +#functionURL = "http://localhost:7071/api/OnboardingTrigger" headers = {"Content-Type": "application/json"} # urlList = { "imageUrls": ["http://www.whitneyway.com/Images/15/2017%20Puppies%20in%20Easter%20basket%204-16-17_800.JPG", # "http://allpetcages.com/wp-content/uploads/2017/06/puppy-whelping-box.jpg", From c69e4057b3672f8f9dfb9bc62bfe02ab797a4dbb Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Tue, 6 Nov 2018 13:31:08 -0800 Subject: [PATCH 060/145] Revert "Onboarding modifications" (#24) --- .../onboarding/OnboardingTrigger/__init__.py | 56 ------------------- .../OnboardingTrigger/function.json | 19 ------- .../onboarding/OnboardingTrigger/host.json | 3 - .../OnboardingTrigger/onboarding-client.py | 33 ----------- .../onboarding/OnboardingTrigger/urlList.json | 3 - functions/pipeline/onboarding/host.json | 3 - functions/pipeline/shared/db_access.py | 28 +--------- 7 files changed, 3 insertions(+), 142 deletions(-) delete mode 100644 functions/pipeline/onboarding/OnboardingTrigger/__init__.py delete mode 100644 functions/pipeline/onboarding/OnboardingTrigger/function.json delete mode 100644 functions/pipeline/onboarding/OnboardingTrigger/host.json delete mode 100644 functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py delete mode 100644 functions/pipeline/onboarding/OnboardingTrigger/urlList.json delete mode 100644 functions/pipeline/onboarding/host.json diff --git a/functions/pipeline/onboarding/OnboardingTrigger/__init__.py b/functions/pipeline/onboarding/OnboardingTrigger/__init__.py deleted file mode 100644 index d1ec1d11..00000000 --- a/functions/pipeline/onboarding/OnboardingTrigger/__init__.py +++ /dev/null @@ -1,56 +0,0 @@ -import os -import logging -import azure.functions as func -from shutil import copyfile -from ...shared import db_access as DB_Access - -def main(req: func.HttpRequest) -> func.HttpResponse: - logging.info('Python HTTP trigger function processed a request.') - - try: - req_body = req.get_json() - logging.error(req.get_json()) - url_list = req_body["imageUrls"] - url_string = (", ".join(url_list)) - except ValueError: - print("Unable to decode JSON body") - return func.HttpResponse("Unable to decode POST body", status_code=400) - - logging.error(req_body) - - # Verbose output of HttpResponse, for testing - return func.HttpResponse("Got body\n\nURL List:\n" + url_string, status_code=200) - - # Build list of image objects to pass to DAL for insertion into DB. - image_object_list = [] - - for url in url_list: - # Split original image name from URL - original_filename = url.split("/")[-1] - - # Create ImageInfo object (def in db_access.py) - # Note: For testing, default image height/width are set to 50x50 - image = DB_Access.ImageInfo(original_filename, url, 50, 50) - - # Append image object to the list - image_object_list.append(image) - - # Connect to DB - db = DB_Access.get_connection() - - # Hand off list of image objects to DAL to create rows in database - # Receive dictionary of mapped { ImageID : ImageURL } - image_id_url_map = DB_Access.get_image_ids_for_new_images(db, image_object_list) - - # Copy over images to permanent blob store, get list of URLs to iamges in permanent storage - # Iterating over a dictionary in Python: https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops - # Syntax for copying a file in Python: copyfile(src, dst) - # TODO: Figure out how to parse final filename: https://stackoverflow.com/questions/26443308/find-last-occurrence-of-character-in-string-python - for key, value in image_id_url_map.items(): - file_extension = os.path.splitext(value)[1] - permanent_storage_directory = "some_storage_url" - permanent_storage_path = permanent_storage_directory + "/" + key + file_extension - copyfile(value, permanent_storage_path) - - # Close connection to database. - db.close() \ No newline at end of file diff --git a/functions/pipeline/onboarding/OnboardingTrigger/function.json b/functions/pipeline/onboarding/OnboardingTrigger/function.json deleted file mode 100644 index 852fa7b0..00000000 --- a/functions/pipeline/onboarding/OnboardingTrigger/function.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "scriptFile": "__init__.py", - "bindings": [ - { - "authLevel": "anonymous", - "type": "httpTrigger", - "direction": "in", - "name": "req", - "methods": [ - "post" - ] - }, - { - "type": "http", - "direction": "out", - "name": "$return" - } - ] -} \ No newline at end of file diff --git a/functions/pipeline/onboarding/OnboardingTrigger/host.json b/functions/pipeline/onboarding/OnboardingTrigger/host.json deleted file mode 100644 index 81e35b7b..00000000 --- a/functions/pipeline/onboarding/OnboardingTrigger/host.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "2.0" -} \ No newline at end of file diff --git a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py b/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py deleted file mode 100644 index d72eb5d3..00000000 --- a/functions/pipeline/onboarding/OnboardingTrigger/onboarding-client.py +++ /dev/null @@ -1,33 +0,0 @@ -import requests -import json - -# The following mock client imitates the CLI during the onboarding scenario for new images. -# The CLI uploads images to a temporary blob store, then gets a list of URLs to those images and -# passes it to an HTTP trigger function, which calls the DAL to create rows in the database. - -print("\nTest client for CLI Onboarding scenario") -print('-' * 40) - -print("Now executing POST request to onboard images...") - -#functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/onboardingtrigger?code=mYOL/zprAqL5TlU21WJA4VWFJdf0oqOnf0fhMtveJsVEampMqrLhGw==" -#functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/OnboardingHttpTrigger" -functionURL = "https://mtarngfunc-test.azurewebsites.net/api/onboarding?code=ezQ4rW/DvaNtm6DlHZ7XQp1Enrtao3WpsW4FFR5V/nFLVb9vq4P7PQ==" -#functionURL = "http://localhost:7071/api/OnboardingTrigger" -headers = {"Content-Type": "application/json"} -# urlList = { "imageUrls": ["http://www.whitneyway.com/Images/15/2017%20Puppies%20in%20Easter%20basket%204-16-17_800.JPG", -# "http://allpetcages.com/wp-content/uploads/2017/06/puppy-whelping-box.jpg", -# "http://78.media.tumblr.com/eea2f882ec08255e40cecaf8ca1d4543/tumblr_nmxjbjIK141qi4ucgo1_500.jpg"] } -with open('urlList.json', 'r') as urls: - urlList=json.loads(urls.read()) - -response = requests.post(url = functionURL, headers=headers, json = urlList) - -print("Completed POST request.") - -raw_response = response.text -response_array = raw_response.split(", ") -response_output = "\n".join(response_array) - -print(f"Response status code: {response.status_code}") -print(f"Response: {response_output}") \ No newline at end of file diff --git a/functions/pipeline/onboarding/OnboardingTrigger/urlList.json b/functions/pipeline/onboarding/OnboardingTrigger/urlList.json deleted file mode 100644 index b1a20e7c..00000000 --- a/functions/pipeline/onboarding/OnboardingTrigger/urlList.json +++ /dev/null @@ -1,3 +0,0 @@ -{ "imageUrls": ["http://www.whitneyway.com/Images/15/2017%20Puppies%20in%20Easter%20basket%204-16-17_800.JPG", - "http://allpetcages.com/wp-content/uploads/2017/06/puppy-whelping-box.jpg", - "http://78.media.tumblr.com/eea2f882ec08255e40cecaf8ca1d4543/tumblr_nmxjbjIK141qi4ucgo1_500.jpg"] } \ No newline at end of file diff --git a/functions/pipeline/onboarding/host.json b/functions/pipeline/onboarding/host.json deleted file mode 100644 index 81e35b7b..00000000 --- a/functions/pipeline/onboarding/host.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "2.0" -} \ No newline at end of file diff --git a/functions/pipeline/shared/db_access.py b/functions/pipeline/shared/db_access.py index 0d646775..e9530e27 100644 --- a/functions/pipeline/shared/db_access.py +++ b/functions/pipeline/shared/db_access.py @@ -14,14 +14,6 @@ class ImageTagState(IntEnum): INCOMPLETE_TAG = 4 ABANDONED = 5 -# An entity class for a VOTT image -class ImageInfo(object): - def __init__(self, image_name, image_location, height, width): - self.image_name = image_name - self.image_location = image_location - self.height = height - self.width = width - # Temp for local testing/ default_db_host = "" default_db_name = "" @@ -31,23 +23,6 @@ def __init__(self, image_name, image_location, height, width): def get_connection(): return __new_postgres_connection(os.getenv('DB_HOST', default_db_host), os.getenv('DB_NAME', default_db_name), os.getenv('DB_USER', default_db_user), os.getenv('DB_PASS', default_db_pass)) -def __new_postgres_connection(host_name, db_name, db_user, db_pass): - return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) - -def get_image_ids_for_new_images(conn, list_of_image_infos): - url_to_image_id_map = {} - if(len(list_of_image_infos) > 0): - cursor = conn.cursor() - for img in list(list_of_image_infos): - query = "INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) VALUES ('{0}','{1}',{2},{3}) RETURNING ImageId;" - cursor.execute(query.format(img.image_name,img.image_location,str(img.height),str(img.width))) - new_img_id = cursor.fetchone()[0] - url_to_image_id_map[img.image_location] = new_img_id - #__update_images(conn,[new_img_id],ImageTagState.NOT_READY) - conn.commit() - print(f"Inserted {len(url_to_image_id_map)} images to the DB") - return url_to_image_id_map - def get_images_for_tagging(conn, num_images): cursor = conn.cursor() @@ -73,6 +48,9 @@ def get_images_for_tagging(conn, num_images): # Return the list of URLs to the user (values in the selected_images_to_tag dictionary) return list(selected_images_to_tag.values()) +def __new_postgres_connection(host_name, db_name, db_user, db_pass): + return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) + def update_tagged_images(conn, list_of_image_ids): __update_images(conn, list_of_image_ids, ImageTagState.COMPLETED_TAG) print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.COMPLETED_TAG.name}") From f00c853fbca19d443ca58cfa8f3ae276d996adb6 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Wed, 7 Nov 2018 10:00:14 -0800 Subject: [PATCH 061/145] Changes to support User auditing and Classifications (#22) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema --- db/Deploy-Python-Functions.sh | 3 - db/SeedData.sql | 21 --- db/data/seed_tag_states.sql | 8 ++ db/functions/log_image_info_insert.sql | 4 +- .../log_image_tagging_state_changes.sql | 4 +- .../log_image_tagging_state_insert.sql | 4 +- db/install-db-resources.py | 55 +++++++- db/postgres-client.py | 124 +++++++++++------- db/tables/000_classification_info.sql | 7 + ....sql => 000_image_tagging_state_audit.sql} | 1 + .../{tag_state.sql => 000_tag_state.sql} | 0 db/tables/000_user_info.sql | 7 + .../{image_info.sql => 010_image_info.sql} | 1 + ..._state.sql => 100_image_tagging_state.sql} | 1 + .../{image_tags.sql => 100_image_tags.sql} | 10 +- db/tables/100_tags_classification.sql | 10 ++ functions/pipeline/requirements.txt | 1 + 17 files changed, 173 insertions(+), 88 deletions(-) delete mode 100644 db/SeedData.sql create mode 100644 db/data/seed_tag_states.sql create mode 100644 db/tables/000_classification_info.sql rename db/tables/{image_tagging_state_audit.sql => 000_image_tagging_state_audit.sql} (86%) rename db/tables/{tag_state.sql => 000_tag_state.sql} (100%) create mode 100644 db/tables/000_user_info.sql rename db/tables/{image_info.sql => 010_image_info.sql} (86%) rename db/tables/{image_tagging_state.sql => 100_image_tagging_state.sql} (83%) rename db/tables/{image_tags.sql => 100_image_tags.sql} (61%) create mode 100644 db/tables/100_tags_classification.sql diff --git a/db/Deploy-Python-Functions.sh b/db/Deploy-Python-Functions.sh index 45de075b..c74d6510 100644 --- a/db/Deploy-Python-Functions.sh +++ b/db/Deploy-Python-Functions.sh @@ -26,8 +26,6 @@ if [[ "$StorageName" != *[a-z0-9]* ]]; then exit 1 fi - -#$filtered_output=$(az extension list) # See http://jmespath.org/tutorial.html for querying filtered_output=$(az extension list --query "[?name=='functionapp'].name") @@ -60,7 +58,6 @@ echo "Create a storage account for the function (if it does not exist for the cu echo az storage account create -n $StorageName -l "WestUS" -g $ResourceGroup --sku Standard_LRS - echo echo "Create a function app (if it does not exist for the current subscription)" echo diff --git a/db/SeedData.sql b/db/SeedData.sql deleted file mode 100644 index dbda07a9..00000000 --- a/db/SeedData.sql +++ /dev/null @@ -1,21 +0,0 @@ --- Set up the states -INSERT INTO TagState VALUES (0, 'Not Ready'); -INSERT INTO TagState VALUES (1, 'Ready To Tag'); -INSERT INTO TagState VALUES (2, 'Tag In Progress'); -INSERT INTO TagState VALUES (3, 'Completed Tag'); -INSERT INTO TagState VALUES (4, 'Incomplete Tag'); -INSERT INTO TagState VALUES (5, 'Abandoned'); - --- Create fake image entries -INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) -VALUES ('MyTestImage.jpg', 'https://csehackstorage.blob.core.windows.net/image-to-tag/1.jpg', 40,40); -INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) -VALUES ('AnotherImage.jpg', 'https://csehackstorage.blob.core.windows.net/image-to-tag/2.jpg', 60, 80); -INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) -VALUES ('NonexistantImage.jpg', 'https://csehackstorage.blob.core.windows.net/image-to-tag/3.jpg', 60, 80); - --- Create "ready to tag" states for the 2 fake images -INSERT INTO Image_Tagging_State (ImageId,TagStateId) VALUES (1, 1); -INSERT INTO Image_Tagging_State (ImageId,TagStateId) VALUES (2, 1); -INSERT INTO Image_Tagging_State (ImageId,TagStateId) VALUES (3, 1); - diff --git a/db/data/seed_tag_states.sql b/db/data/seed_tag_states.sql new file mode 100644 index 00000000..8f8ad5c1 --- /dev/null +++ b/db/data/seed_tag_states.sql @@ -0,0 +1,8 @@ +-- Set up the states +INSERT INTO TagState VALUES + (0, 'Not Ready'), + (1, 'Ready To Tag'), + (2, 'Tag In Progress'), + (3, 'Completed Tag'), + (4, 'Incomplete Tag'), + (5, 'Abandoned'); diff --git a/db/functions/log_image_info_insert.sql b/db/functions/log_image_info_insert.sql index 52617256..d5d55614 100644 --- a/db/functions/log_image_info_insert.sql +++ b/db/functions/log_image_info_insert.sql @@ -3,8 +3,8 @@ CREATE OR REPLACE FUNCTION log_image_info_insert() RETURNS trigger AS ' BEGIN - INSERT INTO Image_Tagging_State(ImageId,TagStateId,ModifiedDtim,CreatedDtim) - VALUES(NEW.ImageId,0,current_timestamp,current_timestamp); + INSERT INTO Image_Tagging_State(ImageId,TagStateId,ModifiedByUser,ModifiedDtim,CreatedDtim) + VALUES(NEW.ImageId,0,NEW.CreatedByUser,current_timestamp,current_timestamp); RETURN NEW; END; diff --git a/db/functions/log_image_tagging_state_changes.sql b/db/functions/log_image_tagging_state_changes.sql index df65ed55..85580d51 100644 --- a/db/functions/log_image_tagging_state_changes.sql +++ b/db/functions/log_image_tagging_state_changes.sql @@ -4,8 +4,8 @@ CREATE OR REPLACE FUNCTION log_image_tagging_state_changes() ' BEGIN IF NEW.TagStateId <> OLD.TagStateId THEN - INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedDtim,ArchiveDtim,ActionFlag) - VALUES(NEW.ImageId,NEW.TagStateId,NEW.ModifiedDtim,current_timestamp,2); + INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedByUser,ModifiedDtim,ArchiveDtim,ActionFlag) + VALUES(NEW.ImageId,NEW.TagStateId,NEW.ModifiedByUser,NEW.ModifiedDtim,current_timestamp,2); END IF; RETURN NEW; diff --git a/db/functions/log_image_tagging_state_insert.sql b/db/functions/log_image_tagging_state_insert.sql index 1e011ae0..366e67a4 100644 --- a/db/functions/log_image_tagging_state_insert.sql +++ b/db/functions/log_image_tagging_state_insert.sql @@ -3,8 +3,8 @@ CREATE OR REPLACE FUNCTION log_image_tagging_state_insert() RETURNS trigger AS ' BEGIN - INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedDtim,ArchiveDtim,ActionFlag) - VALUES(NEW.ImageId,NEW.TagStateId,NEW.ModifiedDtim,current_timestamp,1); + INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedByUser,ModifiedDtim,ArchiveDtim,ActionFlag) + VALUES(NEW.ImageId,NEW.TagStateId,NEW.ModifiedByUser,NEW.ModifiedDtim,current_timestamp,1); RETURN NEW; END; diff --git a/db/install-db-resources.py b/db/install-db-resources.py index ee52c552..b6db48b7 100644 --- a/db/install-db-resources.py +++ b/db/install-db-resources.py @@ -1,6 +1,7 @@ import pg8000 import os import sys +import collections from os import listdir from os.path import isfile, join @@ -24,6 +25,16 @@ def execute_queries_from_map(conn, file_query_map): print("\t{0}".format(file_path)) return +def database_exists(conn, db_name): + if db_name: + cursor = conn.cursor() + query = "SELECT 1 FROM pg_database WHERE datname='{0}'" + cursor.execute(query.format(db_name)) + row = cursor.fetchone() + if row: + return int(row[0]) == 1 + return False + def create_database(conn, db_name): if db_name: cursor = conn.cursor() @@ -36,6 +47,18 @@ def create_database(conn, db_name): print("No database created due to empty parameter") return +def install_extensions(conn, list_of_extensions): + if (len(list_of_extensions) > 0): + cursor = conn.cursor() + conn.autocommit = True + for ext in list_of_extensions: + query = "CREATE EXTENSION {0};" + cursor.execute(query.format(ext)) + print("Installed extension named '{0}'".format(ext)) + else: + print("No extensions to install") + return + def get_connection(): return __new_postgres_connection(os.environ['DB_HOST'],os.environ['DB_NAME'],os.environ['DB_USER'],os.environ['DB_PASS']) @@ -59,30 +82,48 @@ def execute_files_in_dir_list(conn,list_of_sub_dirs): for sub_dir in list_of_sub_dirs: print("\n****\tReading files in '{0}' directory\t****\n".format(sub_dir)) file_query_map = get_file_query_map(sub_dir) + file_query_map = collections.OrderedDict(sorted(file_query_map.items())) if '' in file_query_map.values(): print("One of the files is empty. Please fix") return execute_queries_from_map(conn,file_query_map) -def main(db_name): +def main(db_name, overwrite_db): try: if(os.getenv("DB_HOST") is None or os.getenv("DB_USER") is None or os.getenv("DB_PASS") is None): print("Please set environment variables for DB_HOST, DB_USER, DB_PASS") return + #TODO: Allow overwriting of existing DB + if (database_exists(get_default_connection(), db_name) and not overwrite_db): + print("Database {0} already exists.".format(db_name)) + return + #Set up the database create_database(get_default_connection(),db_name) + #Install extensions + install_extensions(get_connection_for_db(db_name),['citext']) + #Connect to the new database and install resources conn = get_connection_for_db(db_name) - sub_dirs = ["tables","functions","triggers"] + sub_dirs = ["tables","functions","triggers","data"] execute_files_in_dir_list(conn,sub_dirs) print("Done!") - except Exception as e: print(e) + except Exception as e: + print(e) + #traceback.print_exc() if __name__ == "__main__": - if (len(sys.argv) != 2): - print("Expected 1 argument of type string for db_name") - else: - main(str(sys.argv[1])) + if len(sys.argv) < 2: + print("Usage: python3 {0} (DB Name) [-force]".format(sys.argv[0])) + elif len(sys.argv) == 2: + main(str(sys.argv[1]),False) + ''' + elif str(sys.argv[2]).lower() == "-force": + main(str(sys.argv[1]),True) + else: + main(str(sys.argv[1]),False) + ''' + \ No newline at end of file diff --git a/db/postgres-client.py b/db/postgres-client.py index ec6bd201..92ea5fe4 100644 --- a/db/postgres-client.py +++ b/db/postgres-client.py @@ -44,27 +44,28 @@ def id_generator(size=6, chars=string.ascii_uppercase + string.digits): def generate_test_image_infos(count): list_of_image_infos = [] for i in range(count): - file_name = f'{id_generator(size=random.randint(4,10))}.jpg' - image_location = f'https://mock-storage.blob.core.windows.net/new-uploads/{file_name}' + file_name = "{0}.jpg".format(id_generator(size=random.randint(4,10))) + image_location = "https://mock-storage.blob.core.windows.net/new-uploads/{0}".format(file_name) img = ImageInfo(file_name,image_location,random.randint(100,600),random.randint(100,600)) list_of_image_infos.append(img) return list_of_image_infos -def get_image_ids_for_new_images(conn, list_of_image_infos): +# TODO: Use bulk insert: https://stackoverflow.com/questions/5875953/returning-multiple-serial-values-from-posgtres-batch-insert +def get_image_ids_for_new_images(conn, list_of_image_infos, user_id): url_to_image_id_map = {} - if(len(list_of_image_infos) > 0): + if(len(list_of_image_infos) > 0 and user_id): cursor = conn.cursor() for img in list(list_of_image_infos): - query = "INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) VALUES ('{0}','{1}',{2},{3}) RETURNING ImageId;" - cursor.execute(query.format(img.image_name,img.image_location,str(img.height),str(img.width))) + query = "INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width,CreatedByUser) VALUES ('{0}','{1}',{2},{3},{4}) RETURNING ImageId;" + cursor.execute(query.format(img.image_name,img.image_location,str(img.height),str(img.width),user_id)) new_img_id = cursor.fetchone()[0] url_to_image_id_map[img.image_location] = new_img_id #__update_images(conn,[new_img_id],ImageTagState.NOT_READY) conn.commit() - print(f"Inserted {len(url_to_image_id_map)} images to the DB") + print("Inserted {0} images to the DB".format(len(url_to_image_id_map))) return url_to_image_id_map -def get_new_images(conn,number_of_images): +def get_new_images(conn,number_of_images, user_id): cursor = conn.cursor() # GET N existing UNTAGGED rows @@ -77,37 +78,39 @@ def get_new_images(conn,number_of_images): print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) selected_images_to_tag[str(row[0])] = str(row[1]) - __update_images(conn,selected_images_to_tag,ImageTagState.TAG_IN_PROGRESS) + __update_images(conn,selected_images_to_tag,ImageTagState.TAG_IN_PROGRESS, user_id) return selected_images_to_tag.values() -def update_image_urls(conn,image_id_to_url_map): - for image_id, new_url in image_id_to_url_map.items(): - cursor = conn.cursor() - query = "UPDATE Image_Info SET ImageLocation = '{0}', ModifiedDtim = now() WHERE ImageId = {1}" - cursor.execute(query.format(new_url,image_id)) - print(f"Updated ImageId: {image_id} to new ImageLocation: {new_url}") - __update_images(conn,[image_id],ImageTagState.READY_TO_TAG) - print(f"ImageId: {image_id} to has a new state: {ImageTagState.READY_TO_TAG.name}") - conn.commit() +def update_image_urls(conn,image_id_to_url_map, user_id): + if(len(image_id_to_url_map.items()) and user_id): + for image_id, new_url in image_id_to_url_map.items(): + cursor = conn.cursor() + query = "UPDATE Image_Info SET ImageLocation = '{0}', ModifiedDtim = now() WHERE ImageId = {1}" + cursor.execute(query.format(new_url,image_id)) + conn.commit() + print("Updated ImageId: {0} to new ImageLocation: {1}".format(image_id,new_url)) + __update_images(conn,[image_id],ImageTagState.READY_TO_TAG, user_id) + print("ImageId: {0} to has a new state: {1}".format(image_id,ImageTagState.READY_TO_TAG.name)) + -def update_tagged_images(conn,list_of_image_ids): - __update_images(conn,list_of_image_ids,ImageTagState.COMPLETED_TAG) - print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.COMPLETED_TAG.name}") +def update_tagged_images(conn,list_of_image_ids, user_id): + __update_images(conn,list_of_image_ids,ImageTagState.COMPLETED_TAG,user_id) + print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.COMPLETED_TAG.name)) -def update_untagged_images(conn,list_of_image_ids): - __update_images(conn,list_of_image_ids,ImageTagState.INCOMPLETE_TAG) - print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.INCOMPLETE_TAG.name}") +def update_untagged_images(conn,list_of_image_ids, user_id): + __update_images(conn,list_of_image_ids,ImageTagState.INCOMPLETE_TAG,user_id) + print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.INCOMPLETE_TAG.name)) -def __update_images(conn, list_of_image_ids, new_image_tag_state): +def __update_images(conn, list_of_image_ids, new_image_tag_state, user_id): if not isinstance(new_image_tag_state, ImageTagState): raise TypeError('new_image_tag_state must be an instance of Direction Enum') - if(len(list_of_image_ids) > 0): + if(len(list_of_image_ids) > 0 and user_id): cursor = conn.cursor() image_ids_as_strings = [str(i) for i in list_of_image_ids] images_to_update = '{0}'.format(', '.join(image_ids_as_strings)) - query = "UPDATE Image_Tagging_State SET TagStateId = {0}, ModifiedDtim = now() WHERE ImageId IN ({1})" - cursor.execute(query.format(new_image_tag_state,images_to_update)) + query = "UPDATE Image_Tagging_State SET TagStateId = {0}, ModifiedByUser = {2}, ModifiedDtim = now() WHERE ImageId IN ({1})" + cursor.execute(query.format(new_image_tag_state,images_to_update,user_id)) conn.commit() #print(f"Updated {len(list_of_image_ids)} image(s) to the state {new_image_tag_state.name}") else: @@ -127,22 +130,36 @@ def pretty_print_audit_history(conn, list_of_image_ids): cursor = conn.cursor() image_ids_as_strings = [str(i) for i in list_of_image_ids] images_to_audit = '{0}'.format(', '.join(image_ids_as_strings)) - query = ("SELECT a.imageid,c.originalimagename, b.tagstatename, a.ArchiveDtim FROM image_tagging_state_audit a " + query = ("SELECT a.imageid,c.originalimagename, b.tagstatename, d.username, a.ArchiveDtim FROM image_tagging_state_audit a " "JOIN tagstate b ON a.tagstateid = b.tagstateid " "JOIN image_info c on a.imageid = c.imageid " + "JOIN user_info d on a.modifiedbyuser = d.userid " "WHERE a.ImageId in ({0}) " "ORDER BY a.ImageId,ArchiveDtim ASC") cursor.execute(query.format(images_to_audit)) row = cursor.fetchone() print() if(row != None): - print("ImageId\t\tOriginalImageName\t\tTagState\t\tTransitionTime") + print("ImageId\tImgName\tTagState\tUser\tLoggedTime") while row: - print(f"{str(row[0])}\t\t{str(row[1])}\t\t{str(row[2])}\t\t{str(row[3])}") + print("{0}\t{1}\t{2}\t{3}\t{4}".format(str(row[0]),str(row[1]),str(row[2]),str(row[3]),str(row[4]))) row = cursor.fetchone() else: print("No images!") +def create_user(conn,user_name): + user_id = -1 + if user_name: + try: + cursor = conn.cursor() + query = "INSERT INTO User_Info (UserName) VALUES ('{0}') ON CONFLICT (username) DO UPDATE SET username=EXCLUDED.username RETURNING UserId;" + cursor.execute(query.format(user_name)) + user_id = cursor.fetchone()[0] + conn.commit() + except Exception as e: print(e) + finally: cursor.close() + return user_id + def extract_image_name_no_suffix(url): start_idx = url.rfind('/')+1 end_idx = url.rfind('.') @@ -155,19 +172,30 @@ def extract_image_id_from_urls(list_of_image_urls): extracted_image_ids.append(extracted_id) return extracted_image_ids -def main(): +def main(num_of_images,user_name): try: if(os.getenv("DB_HOST") is None or os.getenv("DB_USER") is None or os.getenv("DB_NAME") is None or os.getenv("DB_PASS") is None): print("Please set environment variables for DB_HOST, DB_USER, DB_NAME, DB_PASS") return + + if(num_of_images < 5 or num_of_images > 20): + print("Number of images should be between 5 and 20") + return + + if(not user_name): + print("User name cannot be empty or whitespace") + return ################################################################# # Below we simulate the following scenarios: + # Creating a User # Onboarding of new images # Checking out images to tag # Checking in images that have or have not been tagged ################################################################# - NUMBER_OF_IMAGES = 5 + user_id = create_user(get_connection(),user_name) + + NUMBER_OF_IMAGES = num_of_images # Simulate new images from VOTT getting created in some blob store mocked_images = generate_test_image_infos(NUMBER_OF_IMAGES) @@ -177,9 +205,9 @@ def main(): print() # Simulate the data access layer creating entries in the DB for the new images # and returning a map of the original image url to generaled image id - url_to_image_id_map = get_image_ids_for_new_images(get_connection(),mocked_images) + url_to_image_id_map = get_image_ids_for_new_images(get_connection(),mocked_images, user_id) print() - + print("***\tBehind the scenes Az Functions move the images to a new blob location") time.sleep(1) print() @@ -192,7 +220,7 @@ def main(): # Simulates the call the client makes to the data access layer # with the new payload. Image urls get updated in the DB - update_image_urls(get_connection(),updated_image_id_url_map) + update_image_urls(get_connection(),updated_image_id_url_map, user_id) print() print("***\tThe newly uploaded images are now onboarded with a 'ready to tag' state. See audit history") @@ -205,12 +233,12 @@ def main(): pretty_print_audit_history(get_connection(),image_ids) time.sleep(3) print() - + print("***\tSubject matter experts use the CLI to retrieve images in a 'ready to tag' state") time.sleep(2) print() - - list_of_image_urls = get_new_images(get_connection(),NUMBER_OF_IMAGES) + + list_of_image_urls = get_new_images(get_connection(),NUMBER_OF_IMAGES, user_id) print() print("***\tLet's wait for image taggers to get through the set of images....") time.sleep(5) @@ -230,14 +258,15 @@ def main(): # call corresponding methods to update tagged and untagged states completed_tagged_ids = [] incomplete_tagged_ids = [] + num_of_incomplete = NUMBER_OF_IMAGES/5 for idx, img_id in enumerate(extracted_image_ids): - if(idx > 2): - incomplete_tagged_ids.append(img_id) - else: + if(idx > num_of_incomplete): completed_tagged_ids.append(img_id) + else: + incomplete_tagged_ids.append(img_id) - update_tagged_images(get_connection(),completed_tagged_ids) - update_untagged_images(get_connection(),incomplete_tagged_ids) + update_tagged_images(get_connection(),completed_tagged_ids,user_id) + update_untagged_images(get_connection(),incomplete_tagged_ids,user_id) print() print("***\tVOTT json results are posted. Lets take a look at the audit history") @@ -251,8 +280,11 @@ def main(): print("Success!") #__verify_connect_to_db(get_connection()) - #get_unvisited_items(get_connection(),count_of_images) + #get_unvisited_items(get_connection(),count_of_images) except Exception as e: print(e) if __name__ == "__main__": - main() + if (len(sys.argv) != 3): + print("Usage: {0} (Number of Images) (User Name)".format(sys.argv[0])) + else: + main(int(sys.argv[1]), str(sys.argv[2])) \ No newline at end of file diff --git a/db/tables/000_classification_info.sql b/db/tables/000_classification_info.sql new file mode 100644 index 00000000..804a438f --- /dev/null +++ b/db/tables/000_classification_info.sql @@ -0,0 +1,7 @@ +-- Set up table +CREATE TABLE Classification_Info ( + ClassificationId SERIAL PRIMARY KEY, + ClassificationName text NOT NULL, + ModifiedDtim timestamp NOT NULL default current_timestamp, + CreatedDtim timestamp NOT NULL default current_timestamp +); diff --git a/db/tables/image_tagging_state_audit.sql b/db/tables/000_image_tagging_state_audit.sql similarity index 86% rename from db/tables/image_tagging_state_audit.sql rename to db/tables/000_image_tagging_state_audit.sql index 16c8c992..9723398f 100644 --- a/db/tables/image_tagging_state_audit.sql +++ b/db/tables/000_image_tagging_state_audit.sql @@ -2,6 +2,7 @@ CREATE TABLE Image_Tagging_State_Audit ( RowId serial primary key, ImageId integer NOT NULL, TagStateId integer NOT NULL, + ModifiedByUser integer NOT NULL, ModifiedDtim timestamp NOT NULL, ArchiveDtim timestamp NOT NULL, ActionFlag integer NOT NULL diff --git a/db/tables/tag_state.sql b/db/tables/000_tag_state.sql similarity index 100% rename from db/tables/tag_state.sql rename to db/tables/000_tag_state.sql diff --git a/db/tables/000_user_info.sql b/db/tables/000_user_info.sql new file mode 100644 index 00000000..a6f7b689 --- /dev/null +++ b/db/tables/000_user_info.sql @@ -0,0 +1,7 @@ +-- Simple User table +CREATE TABLE User_Info ( + UserId SERIAL PRIMARY KEY, + UserName citext NOT NULL UNIQUE, + ModifiedDtim timestamp NOT NULL default current_timestamp, + CreatedDtim timestamp NOT NULL default current_timestamp +); \ No newline at end of file diff --git a/db/tables/image_info.sql b/db/tables/010_image_info.sql similarity index 86% rename from db/tables/image_info.sql rename to db/tables/010_image_info.sql index b094550b..b30ebfc1 100644 --- a/db/tables/image_info.sql +++ b/db/tables/010_image_info.sql @@ -5,6 +5,7 @@ CREATE TABLE Image_Info ( ImageLocation text, Height integer NOT NULL, Width integer NOT NULL, + CreatedByUser integer REFERENCES User_Info(UserId), ModifiedDtim timestamp NOT NULL default current_timestamp, CreatedDtim timestamp NOT NULL default current_timestamp ); \ No newline at end of file diff --git a/db/tables/image_tagging_state.sql b/db/tables/100_image_tagging_state.sql similarity index 83% rename from db/tables/image_tagging_state.sql rename to db/tables/100_image_tagging_state.sql index dbe230ef..d8a1207e 100644 --- a/db/tables/image_tagging_state.sql +++ b/db/tables/100_image_tagging_state.sql @@ -2,6 +2,7 @@ CREATE TABLE Image_Tagging_State ( ImageId integer REFERENCES Image_Info(ImageId), TagStateId integer NOT NULL, + ModifiedByUser integer REFERENCES User_Info(UserId), ModifiedDtim timestamp NOT NULL default current_timestamp, CreatedDtim timestamp NOT NULL default current_timestamp ); \ No newline at end of file diff --git a/db/tables/image_tags.sql b/db/tables/100_image_tags.sql similarity index 61% rename from db/tables/image_tags.sql rename to db/tables/100_image_tags.sql index 9bc65713..ac37cba6 100644 --- a/db/tables/image_tags.sql +++ b/db/tables/100_image_tags.sql @@ -1,13 +1,13 @@ -- Set up table CREATE TABLE Image_Tags ( - ImageTagId integer NOT NULL, + ImageTagId SERIAL UNIQUE, ImageId integer REFERENCES Image_Info(ImageId) ON DELETE RESTRICT, --ClassificationId text NOT NULL, --Needed? --Confidence double precision NOT NULL, --Needed? - X_Min integer NOT NULL, - X_Max integer NOT NULL, - Y_Min integer NOT NULL, - Y_Max integer NOT NULL, + X_Min double precision NOT NULL, + X_Max double precision NOT NULL, + Y_Min double precision NOT NULL, + Y_Max double precision NOT NULL, --VOTT_Data json NOT NULL PRIMARY KEY (ImageTagId,ImageId) ); \ No newline at end of file diff --git a/db/tables/100_tags_classification.sql b/db/tables/100_tags_classification.sql new file mode 100644 index 00000000..f86561be --- /dev/null +++ b/db/tables/100_tags_classification.sql @@ -0,0 +1,10 @@ +-- Set up table +CREATE TABLE Tags_Classification ( + ImageTagId integer REFERENCES Image_Tags(ImageTagId) UNIQUE, + ClassificationId integer REFERENCES Classification_Info(ClassificationId), + ModifiedDtim timestamp NOT NULL default current_timestamp, + CreatedDtim timestamp NOT NULL default current_timestamp, + PRIMARY KEY (ImageTagId,ClassificationId) + --CONSTRAINT FK_IMAGE_TAG FOREIGN KEY(ImageTagId), + --CONSTRAINT FK_CLASSIFICATION FOREIGN KEY(ClassificationId) +); \ No newline at end of file diff --git a/functions/pipeline/requirements.txt b/functions/pipeline/requirements.txt index 654e08aa..fbf84768 100644 --- a/functions/pipeline/requirements.txt +++ b/functions/pipeline/requirements.txt @@ -1,5 +1,6 @@ azure-functions==1.0.0a5 azure-functions-worker==1.0.0a6 +azure-storage grpcio==1.14.2 grpcio-tools==1.14.2 protobuf==3.6.1 From c8929a9c2bd51c6b1c5d547395ffa50f852d5bde Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Thu, 8 Nov 2018 12:24:15 -0800 Subject: [PATCH 062/145] Various changes to support tags, classifications, and testability (#25) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas --- db/install-db-resources.py | 48 ++-- db/tables/000_classification_info.sql | 2 +- db/tables/100_image_tags.sql | 14 +- db/tables/100_tags_classification.sql | 4 +- functions/pipeline/shared/db_access_v2.py | 266 ++++++++++++++++++ functions/pipeline/shared/db_provider.py | 40 +++ .../pipeline/shared/test_db_access_v2.py | 104 +++++++ 7 files changed, 450 insertions(+), 28 deletions(-) create mode 100644 functions/pipeline/shared/db_access_v2.py create mode 100644 functions/pipeline/shared/db_provider.py create mode 100644 functions/pipeline/shared/test_db_access_v2.py diff --git a/db/install-db-resources.py b/db/install-db-resources.py index b6db48b7..2088c893 100644 --- a/db/install-db-resources.py +++ b/db/install-db-resources.py @@ -2,6 +2,7 @@ import os import sys import collections +import argparse from os import listdir from os.path import isfile, join @@ -28,8 +29,8 @@ def execute_queries_from_map(conn, file_query_map): def database_exists(conn, db_name): if db_name: cursor = conn.cursor() - query = "SELECT 1 FROM pg_database WHERE datname='{0}'" - cursor.execute(query.format(db_name)) + query = "SELECT 1 FROM pg_database WHERE datname=%s" + cursor.execute(query,(db_name,)) row = cursor.fetchone() if row: return int(row[0]) == 1 @@ -47,6 +48,18 @@ def create_database(conn, db_name): print("No database created due to empty parameter") return +def remove_database(conn, db_name): + if db_name: + cursor = conn.cursor() + conn.autocommit = True + query = "DROP DATABASE {0};" + print("\nAttempting to drop database '{0}'...This may take up to 30 seconds".format(db_name)) + cursor.execute(query.format(db_name)) + print("Successfully dropped database named '{0}'".format(db_name)) + else: + print("No database dropped due to empty parameter") + return + def install_extensions(conn, list_of_extensions): if (len(list_of_extensions) > 0): cursor = conn.cursor() @@ -93,10 +106,11 @@ def main(db_name, overwrite_db): if(os.getenv("DB_HOST") is None or os.getenv("DB_USER") is None or os.getenv("DB_PASS") is None): print("Please set environment variables for DB_HOST, DB_USER, DB_PASS") return - - #TODO: Allow overwriting of existing DB - if (database_exists(get_default_connection(), db_name) and not overwrite_db): - print("Database {0} already exists.".format(db_name)) + + if (database_exists(get_default_connection(), db_name) and overwrite_db): + remove_database(get_default_connection(),db_name) + elif (database_exists(get_default_connection(), db_name) and not overwrite_db): + print("Database {0} already exists. Please see --help for overwrite option.".format(db_name)) return #Set up the database @@ -116,14 +130,14 @@ def main(db_name, overwrite_db): #traceback.print_exc() if __name__ == "__main__": - if len(sys.argv) < 2: - print("Usage: python3 {0} (DB Name) [-force]".format(sys.argv[0])) - elif len(sys.argv) == 2: - main(str(sys.argv[1]),False) - ''' - elif str(sys.argv[2]).lower() == "-force": - main(str(sys.argv[1]),True) - else: - main(str(sys.argv[1]),False) - ''' - \ No newline at end of file + parser = argparse.ArgumentParser() + + parser.add_argument('database_name', type=str, + help='The name of the database to create and install resources on') + + parser.add_argument('-o','--overwrite', action='store_true', + help='Will drop and restore a database if it already exists') + + args = parser.parse_args() + database_name = args.database_name + main(args.database_name,args.overwrite) \ No newline at end of file diff --git a/db/tables/000_classification_info.sql b/db/tables/000_classification_info.sql index 804a438f..cdf70e20 100644 --- a/db/tables/000_classification_info.sql +++ b/db/tables/000_classification_info.sql @@ -1,7 +1,7 @@ -- Set up table CREATE TABLE Classification_Info ( ClassificationId SERIAL PRIMARY KEY, - ClassificationName text NOT NULL, + ClassificationName citext NOT NULL UNIQUE, ModifiedDtim timestamp NOT NULL default current_timestamp, CreatedDtim timestamp NOT NULL default current_timestamp ); diff --git a/db/tables/100_image_tags.sql b/db/tables/100_image_tags.sql index ac37cba6..421cdb13 100644 --- a/db/tables/100_image_tags.sql +++ b/db/tables/100_image_tags.sql @@ -2,12 +2,12 @@ CREATE TABLE Image_Tags ( ImageTagId SERIAL UNIQUE, ImageId integer REFERENCES Image_Info(ImageId) ON DELETE RESTRICT, - --ClassificationId text NOT NULL, --Needed? - --Confidence double precision NOT NULL, --Needed? - X_Min double precision NOT NULL, - X_Max double precision NOT NULL, - Y_Min double precision NOT NULL, - Y_Max double precision NOT NULL, + X_Min decimal(6,2) NOT NULL, + X_Max decimal(6,2) NOT NULL, + Y_Min decimal(6,2) NOT NULL, + Y_Max decimal(6,2) NOT NULL, + CreatedByUser integer REFERENCES User_Info(UserId), + CreatedDtim timestamp NOT NULL default current_timestamp, --VOTT_Data json NOT NULL - PRIMARY KEY (ImageTagId,ImageId) + PRIMARY KEY (ImageId,X_Min,X_Max,Y_Min,Y_Max) --Should we include the bounded box as well? ); \ No newline at end of file diff --git a/db/tables/100_tags_classification.sql b/db/tables/100_tags_classification.sql index f86561be..a285ee2d 100644 --- a/db/tables/100_tags_classification.sql +++ b/db/tables/100_tags_classification.sql @@ -1,10 +1,8 @@ -- Set up table CREATE TABLE Tags_Classification ( - ImageTagId integer REFERENCES Image_Tags(ImageTagId) UNIQUE, + ImageTagId integer REFERENCES Image_Tags(ImageTagId), ClassificationId integer REFERENCES Classification_Info(ClassificationId), ModifiedDtim timestamp NOT NULL default current_timestamp, CreatedDtim timestamp NOT NULL default current_timestamp, PRIMARY KEY (ImageTagId,ClassificationId) - --CONSTRAINT FK_IMAGE_TAG FOREIGN KEY(ImageTagId), - --CONSTRAINT FK_CLASSIFICATION FOREIGN KEY(ClassificationId) ); \ No newline at end of file diff --git a/functions/pipeline/shared/db_access_v2.py b/functions/pipeline/shared/db_access_v2.py new file mode 100644 index 00000000..ddd7819f --- /dev/null +++ b/functions/pipeline/shared/db_access_v2.py @@ -0,0 +1,266 @@ +import sys +import string +import os +import time +import random +from enum import IntEnum, unique +import getpass +import itertools +from db_provider import DatabaseInfo, PostGresProvider + +@unique +class ImageTagState(IntEnum): + NOT_READY = 0 + READY_TO_TAG = 1 + TAG_IN_PROGRESS = 2 + COMPLETED_TAG = 3 + INCOMPLETE_TAG = 4 + ABANDONED = 5 + +# An entity class for a VOTT image +class ImageInfo(object): + def __init__(self, image_name, image_location, height, width): + self.image_name = image_name + self.image_location = image_location + self.height = height + self.width = width + +class ImageTag(object): + def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names): + self.image_id = image_id + self.x_min = x_min + self.x_max = x_max + self.y_min = y_min + self.y_max = y_max + self.classification_names = classification_names + +class ImageTagDataAccess(object): + def __init__(self, db_provider): + self._db_provider = db_provider + + def test_connection(self): + conn = self._db_provider.get_connection() + cursor = conn.cursor() + cursor.execute('select * from tagstate') + row = cursor.fetchone() + print() + while row: + print(str(row[0]) + " " + str(row[1])) + row = cursor.fetchone() + + def create_user(self,user_name): + user_id = -1 + if not user_name: + raise ArgumentException("Parameter cannot be an empty string") + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + query = "INSERT INTO User_Info (UserName) VALUES (%s) ON CONFLICT (username) DO UPDATE SET username=EXCLUDED.username RETURNING UserId;" + cursor.execute(query,(user_name,)) + user_id = cursor.fetchone()[0] + conn.commit() + finally: cursor.close() + except Exception as e: + print("An error occured creating a user: {0}".format(e)) + raise + finally: conn.close() + return user_id + + def get_new_images(self, number_of_images, user_id): + if number_of_images <= 0: + raise ArgumentException("Parameter must be greater than zero") + + selected_images_to_tag = {} + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + query = ("SELECT b.ImageId, b.ImageLocation, a.TagStateId FROM Image_Tagging_State a " + "JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = 1 order by " + "a.createddtim DESC limit {0}") + cursor.execute(query.format(number_of_images)) + for row in cursor: + print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) + selected_images_to_tag[str(row[0])] = str(row[1]) + self._update_images(selected_images_to_tag,ImageTagState.TAG_IN_PROGRESS, user_id, conn) + finally: cursor.close() + except Exception as e: + print("An errors occured getting images: {0}".format(e)) + raise + finally: conn.close() + return selected_images_to_tag.values() + + def add_new_images(self,list_of_image_infos, user_id): + + if type(user_id) is not int: + raise TypeError('user id must be an integer') + + url_to_image_id_map = {} + if(len(list_of_image_infos) > 0): + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + for img in list(list_of_image_infos): + query = ("INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width,CreatedByUser) " + "VALUES (%s,%s,%s,%s,%s) RETURNING ImageId;") + cursor.execute(query,(img.image_name,img.image_location,img.height,img.width,user_id)) + new_img_id = cursor.fetchone()[0] + url_to_image_id_map[img.image_location] = new_img_id + conn.commit() + finally: cursor.close() + print("Inserted {0} images to the DB".format(len(url_to_image_id_map))) + except Exception as e: + print("An errors occured getting image ids: {0}".format(e)) + raise + finally: conn.close() + return url_to_image_id_map + + def update_untagged_images(self,list_of_image_ids, user_id): + #TODO: Make sure the image ids are in a TAG_IN_PROGRESS state + self._update_images(list_of_image_ids,ImageTagState.INCOMPLETE_TAG,user_id, self._db_provider.get_connection()) + print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.INCOMPLETE_TAG.name)) + + def _update_images(self, list_of_image_ids, new_image_tag_state, user_id, conn): + if not isinstance(new_image_tag_state, ImageTagState): + raise TypeError('new_image_tag_state must be an instance of Direction Enum') + + if type(user_id) is not int: + raise TypeError('user id must be an integer') + + if not conn: + conn = self._db_provider.get_connection() + + try: + if(len(list_of_image_ids) > 0): + cursor = conn.cursor() + try: + image_ids_as_strings = [str(i) for i in list_of_image_ids] + images_to_update = '{0}'.format(', '.join(image_ids_as_strings)) + query = "UPDATE Image_Tagging_State SET TagStateId = %s, ModifiedByUser = %s, ModifiedDtim = now() WHERE ImageId IN (%s)" + cursor.execute(query,(new_image_tag_state,user_id,images_to_update)) + conn.commit() + finally: cursor.close() + else: + print("No images to update") + except Exception as e: + print("An errors occured updating images: {0}".format(e)) + raise + + def update_image_urls(self,image_id_to_url_map, user_id): + if type(user_id) is not int: + raise TypeError('user id must be an integer') + + if(len(image_id_to_url_map.items())): + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + for image_id, new_url in image_id_to_url_map.items(): + cursor = conn.cursor() + query = "UPDATE Image_Info SET ImageLocation = '{0}', ModifiedDtim = now() WHERE ImageId = {1}" + cursor.execute(query.format(new_url,image_id)) + conn.commit() + print("Updated ImageId: {0} to new ImageLocation: {1}".format(image_id,new_url)) + self._update_images([image_id],ImageTagState.READY_TO_TAG, user_id,conn) + print("ImageId: {0} to has a new state: {1}".format(image_id,ImageTagState.READY_TO_TAG.name)) + finally: cursor.close() + except Exception as e: + print("An errors occured updating image urls: {0}".format(e)) + raise + finally: conn.close() + + #TODO: Do safer query string formatting + def update_tagged_images(self,list_of_image_tags, user_id): + if(not list_of_image_tags): + return + + if type(user_id) is not int: + raise TypeError('user id must be an integer') + + groups_by_image_id = itertools.groupby(list_of_image_tags, key=lambda it:it.image_id) + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + for img_id, list_of_tags in groups_by_image_id: + for img_tag in list(list_of_tags): + query = ("with iti AS ( " + "INSERT INTO image_tags (ImageId, X_Min,X_Max,Y_Min,Y_Max,CreatedByUser) " + "VALUES ({0}, {1},{2},{3},{4},{5}) " + "RETURNING ImageTagId), " + "ci AS ( " + "INSERT INTO classification_info (ClassificationName) " + "VALUES {6} " + "ON CONFLICT (ClassificationName) DO UPDATE SET ClassificationName=EXCLUDED.ClassificationName " + "RETURNING (SELECT iti.ImageTagId FROM iti), ClassificationId) " + "INSERT INTO tags_classification (ImageTagId,ClassificationId) " + "SELECT imagetagid,classificationid from ci;") + classifications = ", ".join("('{0}')".format(name) for name in img_tag.classification_names) + cursor.execute(query.format(img_tag.image_id,img_tag.x_min,img_tag.x_max,img_tag.y_min,img_tag.y_max,user_id,classifications)) + self._update_images([img_id],ImageTagState.COMPLETED_TAG,user_id,conn) + conn.commit() + print("Updated {0} image tags".format(len(list_of_image_tags))) + finally: cursor.close() + except Exception as e: + print("An errors occured updating tagged image: {0}".format(e)) + raise + finally: conn.close() + +class ArgumentException(Exception): + pass + + +def main(): + ################################################################# + # This main method is an example of how to use some of + # the ImageTagDataAccess methods. For instance: + # Creating a User + # Onboarding of new images + # Checking in images been tagged + ################################################################# + + #Replace me for testing + db_config = DatabaseInfo("abrig-db.postgres.database.azure.com","micro","abrigtest@abrig-db","abcdABCD123") + data_access = ImageTagDataAccess(PostGresProvider(db_config)) + user_id = data_access.create_user(getpass.getuser()) + print("The user id for '{0}' is {1}".format(getpass.getuser(),user_id)) + + list_of_image_infos = generate_test_image_infos(5) + url_to_image_id_map = data_access.add_new_images(list_of_image_infos,user_id) + + image_tags = generate_test_image_tags(list(url_to_image_id_map.values()),4,4) + data_access.update_tagged_images(image_tags,user_id) + +TestClassifications = ("maine coon","german shephard","goldfinch","mackerel"," african elephant","rattlesnake") + +def generate_test_image_infos(count): + list_of_image_infos = [] + for i in range(count): + file_name = "{0}.jpg".format(id_generator(size=random.randint(4,10))) + image_location = "https://mock-storage.blob.core.windows.net/new-uploads/{0}".format(file_name) + img = ImageInfo(file_name,image_location,random.randint(100,600),random.randint(100,600)) + list_of_image_infos.append(img) + return list_of_image_infos + +def generate_test_image_tags(list_of_image_ids,max_tags_per_image,max_classifications_per_tag): + list_of_image_tags = [] + for image_id in list(list_of_image_ids): + tags_per_image = random.randint(1,max_tags_per_image) + for i in range(tags_per_image): + x_min = random.uniform(50,300) + x_max = random.uniform(x_min,300) + y_min = random.uniform(50,300) + y_max = random.uniform(y_min,300) + classifications_per_tag = random.randint(1,max_classifications_per_tag) + image_tag = ImageTag(image_id,x_min,x_max,y_min,y_max,random.sample(TestClassifications,classifications_per_tag)) + list_of_image_tags.append(image_tag) + return list_of_image_tags + +def id_generator(size=6, chars=string.ascii_uppercase + string.digits): + return ''.join(random.choice(chars) for _ in range(size)) + +if __name__ == "__main__": + main() + diff --git a/functions/pipeline/shared/db_provider.py b/functions/pipeline/shared/db_provider.py new file mode 100644 index 00000000..430da3e0 --- /dev/null +++ b/functions/pipeline/shared/db_provider.py @@ -0,0 +1,40 @@ +import pg8000 +#import pyodbc + +class DatabaseInfo(object): + def __init__(self, db_host_name, db_name, db_user_name, db_password): + self.db_host_name = db_host_name + self.db_name = db_name + self.db_user_name = db_user_name + self.db_password = db_password + +class DBProvider(object): + def __new_connection(self,host_name,db_name,db_user,db_pass): pass + def get_connection(self): pass + def cursor(self):pass + def execute(self, query):pass + +class PostGresProvider(DBProvider): + + def __init__(self, database_info): + self.database_info = database_info + + def __new_connection(self,host_name,db_name,db_user,db_pass): + return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) + + def get_connection(self): + #self.connection = + return self.__new_connection(self.database_info.db_host_name,self.database_info.db_name,self.database_info.db_user_name,self.database_info.db_password) + +''' +class MSSqlProvider(DBProvider): + DRIVER= '{ODBC Driver 17 for SQL Server}' + def __init__(self, database_info): + self.database_info = database_info + + def __new_connection(self,host_name,db_name,db_user,db_pass): + return pyodbc.connect('DRIVER='+self.DRIVER+';PORT=1433;SERVER='+host_name+';PORT=1443;DATABASE='+db_name+';UID='+db_user+';PWD='+ db_pass) + + def get_connection(self): + return self.__new_connection(self.database_info.db_host_name,self.database_info.db_name,self.database_info.db_user_name,self.database_info.db_password) +''' \ No newline at end of file diff --git a/functions/pipeline/shared/test_db_access_v2.py b/functions/pipeline/shared/test_db_access_v2.py new file mode 100644 index 00000000..f51441c5 --- /dev/null +++ b/functions/pipeline/shared/test_db_access_v2.py @@ -0,0 +1,104 @@ +import unittest +from unittest.mock import patch +from unittest.mock import Mock + +from db_provider import( + DatabaseInfo, + DBProvider +) +from db_access_v2 import( + ImageTagDataAccess, + ArgumentException, + ImageTagState, + generate_test_image_infos +# _update_images, +# create_user, +# get_image_ids_for_new_images, +# get_new_images +) + +class MockConnection: + def _mock_cursor(self): + self.fetchCount=5 + + def fetchone(): + if (self.fetchCount): + self.fetchCount = self.fetchCount-1 + return (["A","B"]) + return None + + def execute(query): + return + + test = Mock() + test.execute = execute + test.fetchone = fetchone + return test + + def cursor(self): + return self._mock_cursor() + +class MockDBProvider: + def __init__(self, fail = False): + self.fail = fail + + def get_connection(self): + if self.fail: + raise Exception + return MockConnection() + +class TestImageTagDataAccess(unittest.TestCase): + def test_connection(self): + print("Running...") + data_access = ImageTagDataAccess(MockDBProvider()) + data_access.test_connection() + self.assertEqual(5, 5) + + def test_create_user_empty_string(self): + with self.assertRaises(ArgumentException): + data_access = ImageTagDataAccess(MockDBProvider()) + data_access.create_user('') + + def test_create_user_db_error(self): + with self.assertRaises(Exception): + data_access = ImageTagDataAccess(MockDBProvider(fail=True)) + data_access.create_user('MyUserName') + + def test_update_image_bad_image_state(self): + with self.assertRaises(TypeError): + data_access = ImageTagDataAccess(MockDBProvider()) + data_access._update_images((),"I should be an enum",1,None) + + def test_update_image_db_error(self): + with self.assertRaises(Exception): + data_access = ImageTagDataAccess(MockDBProvider(fail=True)) + data_access._update_images((),ImageTagState.READY_TO_TAG,1,None) + + def test_get_new_images_bad_request(self): + with self.assertRaises(ArgumentException): + data_access = ImageTagDataAccess(MockDBProvider()) + num_of_images = -5 + data_access.get_new_images(num_of_images,5) + + def test_add_new_images_user_id_type_error(self): + with self.assertRaises(TypeError): + data_access = ImageTagDataAccess(MockDBProvider()) + data_access.add_new_images((),"I should be an integer") + + def test_add_new_images_connection_error(self): + with self.assertRaises(Exception): + data_access = ImageTagDataAccess(MockDBProvider(fail=True)) + data_access.add_new_images(generate_test_image_infos(5),10) + + # def test_add_new_images_cursor_error(self): + # with self.assertRaises(Exception): + # data_access = ImageTagDataAccess(MockDBProvider(fail=True)) + # data_access.add_new_images(generate_test_image_infos(5),10) + + def test_update_image_urls_user_id_type_error(self): + with self.assertRaises(TypeError): + data_access = ImageTagDataAccess(MockDBProvider()) + data_access.update_image_urls((),"I should be an integer") + +if __name__ == '__main__': + unittest.main() From bf96c0b4bd8ae8254a4d31fd785745a054d427ae Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Thu, 8 Nov 2018 16:11:11 -0800 Subject: [PATCH 063/145] Trying this again (#27) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix --- azure-pipelines.yml | 7 +- functions/pipeline/shared/__init__.py | 0 functions/pipeline/shared/data_access.py | 70 ------------------- functions/pipeline/shared/db_access.py | 6 +- .../pipeline/shared/test_db_access_v2.py | 4 -- functions/upload/__init__.py | 53 -------------- functions/upload/function.json | 20 ------ functions/upload/host.json | 2 - requirements.txt | 9 ++- 9 files changed, 15 insertions(+), 156 deletions(-) delete mode 100644 functions/pipeline/shared/__init__.py delete mode 100644 functions/pipeline/shared/data_access.py delete mode 100644 functions/upload/__init__.py delete mode 100644 functions/upload/function.json delete mode 100644 functions/upload/host.json diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 12e6fd2f..36eb3f15 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -10,8 +10,9 @@ jobs: vmImage: 'Ubuntu 16.04' strategy: matrix: - Python35: - python.version: '3.5' + #Azure Functions Python preview doesn't support 3.5 + #Python35: + # python.version: '3.5' Python36: python.version: '3.6' Python37: @@ -29,7 +30,7 @@ jobs: - script: | pip install pytest - pytest cli --doctest-modules --junitxml=junit/test-results.xml + pytest cli functions --doctest-modules --junitxml=junit/test-results.xml displayName: 'pytest' - task: PublishTestResults@2 diff --git a/functions/pipeline/shared/__init__.py b/functions/pipeline/shared/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/functions/pipeline/shared/data_access.py b/functions/pipeline/shared/data_access.py deleted file mode 100644 index 9f390c20..00000000 --- a/functions/pipeline/shared/data_access.py +++ /dev/null @@ -1,70 +0,0 @@ -# DEPRECATED - Moving all database access components into db_access.py -# Saving for notes for now.... - -# import logging -# import json -# import azure.functions as func # Getting an error - E0401: Unable to import -# import os -# import pg8000 # Getting an error - E0401: Unable to import - -# # Constants -# untagged_state = 1 -# tagging_state = 2 -# tagged_state = 3 - -# host = os.getenv('DB_HOST', None) -# user = os.getenv('DB_USER', None) -# dbname = os.getenv('DB_NAME', None) -# password = os.getenv('DB_PASS', None) - -# # Creates rows in the database for new images uploaded to blob storage. -# # Requires: TBD -# # Receives: List of new image names, user id of the user performing the upload -# # Returns: None. -# # TODO: Clarify if input list is a list of original image names or new ImageIds -# # Code: - -# # get_unvisited_items -# # # Retrieves a number of untagged images for the user to tag. -# # Requires: Assumes that the CLI (the requestor) handles setting a cap on the number of images that may be requested. -# # For now, assumes the user wants to use a LIFO strategy, and pull newest images first. -# # Receives: num_images = Number of images the user wants to download for tagging -# # Returns: List of URLs to the selected images (in blob storage) that need to be tagged. Status for these images is updated to "tagging" status in the DB. -# # TODO: Future inputs: Strategy for selecting images (enum), user_id for tracking which user made the request (string) -# def get_unvisited_items(num_images): -# # Connect to database -# # TODO: Add error handling -# db = pg8000.connect(user, host=host, unix_sock=None, port=5432, database=dbname, password=password, ssl=True, timeout=None, application_name=None) -# cursor = db.cursor() - -# # From the database, select the number of images the user requested where tag state is "untagged" -# cursor.execute("SELECT b.ImageId, b.OriginalImageName, a.TagStateId, b.ImageLocation FROM Image_Tagging_State a JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = {0} order by a.createddtim DESC limit {1}".format(untagged_state, num_images)) - -# # Put the ImageId and ImageLocation (URL) for the images to tag into a dictionary named selected_images_to_tag -# selected_images_to_tag = {} -# for row in cursor: -# print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) -# selected_images_to_tag[str(row[0])] = str(row[3]) - -# # If there are images in the list, update the tagging state for the selected images from "untagged" to "tagging" state -# # If there are no images left to tag, output a message to the user -# # TODO: Separate this code out into an "update" helper function? -# if(len(selected_images_to_tag) > 0): -# images_to_update = '{0}'.format(', '.join(selected_images_to_tag.keys())) -# cursor.execute("UPDATE Image_Tagging_State SET TagStateId = {0} WHERE ImageId IN ({1})".format(tagging_state,images_to_update)) -# db.commit() -# print(f"Updated {len(selected_images_to_tag)} images to the state {tagging_state}") -# else: -# print("No images untagged images left!") - -# # Return the list of URLs to the user (values in the selected_images_to_tag dictionary) -# return list(selected_images_to_tag.values()) - -# # TODO: Create helper function to update status of a list of images in the DB from one state to another. - -# # get_unvisited_items (count of items, strategy enum, user id) -# # Returns a list of image locations -# # update_visited_items (List of visited image names, user id) -# # void -# # update_unvisited_items (List of unvisited image names, user id) -# # Void diff --git a/functions/pipeline/shared/db_access.py b/functions/pipeline/shared/db_access.py index e9530e27..8c444ffe 100644 --- a/functions/pipeline/shared/db_access.py +++ b/functions/pipeline/shared/db_access.py @@ -42,7 +42,7 @@ def get_images_for_tagging(conn, num_images): images_to_update = '{0}'.format(', '.join(selected_images_to_tag.keys())) cursor.execute("UPDATE Image_Tagging_State SET TagStateId = {0} WHERE ImageId IN ({1})".format(ImageTagState.TAG_IN_PROGRESS, images_to_update)) conn.commit() - print(f"Updated {len(selected_images_to_tag)} images to the state {ImageTagState.TAG_IN_PROGRESS}") + print("Updated {len(selected_images_to_tag)} images to the state {0}".format(ImageTagState.TAG_IN_PROGRESS)) else: print("No images untagged images left!") # Return the list of URLs to the user (values in the selected_images_to_tag dictionary) @@ -53,11 +53,11 @@ def __new_postgres_connection(host_name, db_name, db_user, db_pass): def update_tagged_images(conn, list_of_image_ids): __update_images(conn, list_of_image_ids, ImageTagState.COMPLETED_TAG) - print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.COMPLETED_TAG.name}") + print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.COMPLETED_TAG.name)) def update_untagged_images(conn, list_of_image_ids): __update_images(conn, list_of_image_ids, ImageTagState.INCOMPLETE_TAG) - print(f"Updated {len(list_of_image_ids)} image(s) to the state {ImageTagState.INCOMPLETE_TAG.name}") + print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.INCOMPLETE_TAG.name)) def __update_images(conn, list_of_image_ids, new_image_tag_state): if not isinstance(new_image_tag_state, ImageTagState): diff --git a/functions/pipeline/shared/test_db_access_v2.py b/functions/pipeline/shared/test_db_access_v2.py index f51441c5..d57a284e 100644 --- a/functions/pipeline/shared/test_db_access_v2.py +++ b/functions/pipeline/shared/test_db_access_v2.py @@ -2,10 +2,6 @@ from unittest.mock import patch from unittest.mock import Mock -from db_provider import( - DatabaseInfo, - DBProvider -) from db_access_v2 import( ImageTagDataAccess, ArgumentException, diff --git a/functions/upload/__init__.py b/functions/upload/__init__.py deleted file mode 100644 index fc1bd0fb..00000000 --- a/functions/upload/__init__.py +++ /dev/null @@ -1,53 +0,0 @@ -import os -import json - -# TODO: Move this into a library -def get_id_from_filename(filename): - path_components = filename.split('/') - filename = path_components[-1] - return int(filename.split('.')[0]) - -# TODO: Move this into a library -def process_vott_json(json): - all_frame_data = json['frames'] - - # Scrub filename keys to only have integer Id, drop path and file extensions. - id_to_tags_dict = {} - for full_path_key in sorted(all_frame_data.keys()): - id_to_tags_dict[get_id_from_filename(full_path_key)] = all_frame_data[full_path_key] - all_ids = id_to_tags_dict.keys() - - # Do the same with visitedFrames - visited_ids = sorted(json['visitedFrames']) - for index, filename in enumerate(visited_ids): - visited_ids[index] = get_id_from_filename(filename) - - # Unvisisted imageIds - unvisited_ids = sorted(list(set(all_ids) - set(visited_ids))) - - return { - "totalNumImages" : len(all_ids), - "numImagesVisted" : len(visited_ids), - "numImagesNotVisted" : len(unvisited_ids), - "imagesVisited" : visited_ids, - "imageNotVisisted" : unvisited_ids - } - -def main(): - try: - vott_json = json.loads(open(os.environ['req']).read()) - - stats = process_vott_json(vott_json) - # TODO: Call interface to update imagesVisited to 'COMPLETED_TAG' state and imageNotVisisted to 'INCOMPLETE_TAG' - - response = open(os.environ['res'], 'w') - response.write(str(stats)) - response.close() - except Exception as e: - response = open(os.environ['res'], 'w') - # TODO: Add error status code and proper message? - response.write(str(e)) - response.close() - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/functions/upload/function.json b/functions/upload/function.json deleted file mode 100644 index d841bddd..00000000 --- a/functions/upload/function.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "bindings": [ - { - "authLevel": "anonymous", - "type": "httpTrigger", - "direction": "in", - "name": "req", - "methods": [ - "post", - "put" - ] - }, - { - "type": "http", - "direction": "out", - "name": "res" - } - ], - "disabled": false - } \ No newline at end of file diff --git a/functions/upload/host.json b/functions/upload/host.json deleted file mode 100644 index 7a73a41b..00000000 --- a/functions/upload/host.json +++ /dev/null @@ -1,2 +0,0 @@ -{ -} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 92324a07..9de0ccd9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,9 @@ +azure-functions==1.0.0a5 +azure-functions-worker==1.0.0a6 +azure-storage +grpcio==1.14.2 +grpcio-tools==1.14.2 +protobuf==3.6.1 requests -azure-storage \ No newline at end of file +six==1.11.0 +pg8000==1.12.3 From 96b5eba8ec32874e4085d1af179a879ae3c44c0d Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Thu, 8 Nov 2018 18:26:12 -0800 Subject: [PATCH 064/145] Enforcing Tagging User on CLI config. Updated unit tests (#29) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config --- cli/operations.py | 11 ++++--- cli/test_operations.py | 4 ++- db/install-db-resources.py | 63 +++++++++++++++++++++++++++++++++++++- db/postgres-client.py | 2 +- 4 files changed, 73 insertions(+), 7 deletions(-) diff --git a/cli/operations.py b/cli/operations.py index f78585cb..894668a3 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -20,6 +20,7 @@ TAGGING_SECTION = 'TAGGING' TAGGING_LOCATION_KEY = 'TAGGING_LOCATION' +TAGGING_USER_KEY = 'TAGGING_USER' DEFAULT_NUM_IMAGES = 40 @@ -245,11 +246,12 @@ def storage_config_section(storage_config_section): def tagging_config_section(tagging_config_section): tagging_location_value = tagging_config_section.get(TAGGING_LOCATION_KEY) + tagging_user_value = tagging_config_section.get(TAGGING_USER_KEY) - if not tagging_location_value: + if not tagging_location_value or not tagging_user_value: raise MissingConfigException() - return tagging_location_value + return tagging_location_value, tagging_user_value def read_config_with_parsed_config(parser): @@ -272,7 +274,7 @@ def read_config_with_parsed_config(parser): parser[STORAGE_SECTION] ) - tagging_location = tagging_config_section(parser[TAGGING_SECTION]) + tagging_location, tagging_user = tagging_config_section(parser[TAGGING_SECTION]) return { "key": functions_key, @@ -280,5 +282,6 @@ def read_config_with_parsed_config(parser): "storage_account": storage_account, "storage_key": storage_key, "storage_container": storage_container, - "tagging_location": tagging_location + "tagging_location": tagging_location, + "tagging_user": tagging_user } diff --git a/cli/test_operations.py b/cli/test_operations.py index a2b0c218..dd6faa93 100644 --- a/cli/test_operations.py +++ b/cli/test_operations.py @@ -21,6 +21,7 @@ STORAGE_CONTAINER, TAGGING_SECTION, TAGGING_LOCATION_KEY, + TAGGING_USER_KEY, functions_config_section, storage_config_section, tagging_config_section, @@ -107,7 +108,8 @@ def test_acceptable_config(self): FUNCTIONS_URL: "test" }, TAGGING_SECTION: { - TAGGING_LOCATION_KEY: "test" + TAGGING_LOCATION_KEY: "test", + TAGGING_USER_KEY: "test" } } ) diff --git a/db/install-db-resources.py b/db/install-db-resources.py index 2088c893..bb74d595 100644 --- a/db/install-db-resources.py +++ b/db/install-db-resources.py @@ -27,6 +27,8 @@ def execute_queries_from_map(conn, file_query_map): return def database_exists(conn, db_name): +<<<<<<< HEAD +<<<<<<< HEAD if db_name: cursor = conn.cursor() query = "SELECT 1 FROM pg_database WHERE datname=%s" @@ -35,6 +37,24 @@ def database_exists(conn, db_name): if row: return int(row[0]) == 1 return False +======= + result = -1 +======= +>>>>>>> Fixed issue in db resoruces install file. Updated table schema + if db_name: + cursor = conn.cursor() + query = "SELECT 1 FROM pg_database WHERE datname=%s" + cursor.execute(query,(db_name,)) + row = cursor.fetchone() +<<<<<<< HEAD + result = int(row[0]) + return result == 1 +>>>>>>> Adding support to check if db already exists. +======= + if row: + return int(row[0]) == 1 + return False +>>>>>>> Fixed issue in db resoruces install file. Updated table schema def create_database(conn, db_name): if db_name: @@ -48,6 +68,10 @@ def create_database(conn, db_name): print("No database created due to empty parameter") return +<<<<<<< HEAD +<<<<<<< HEAD +======= +>>>>>>> Updated deployment to be more idempotent. Updated table schemas def remove_database(conn, db_name): if db_name: cursor = conn.cursor() @@ -60,6 +84,11 @@ def remove_database(conn, db_name): print("No database dropped due to empty parameter") return +<<<<<<< HEAD +======= +>>>>>>> Added support for user creating and auditing in DB, DAL, and deployment. +======= +>>>>>>> Updated deployment to be more idempotent. Updated table schemas def install_extensions(conn, list_of_extensions): if (len(list_of_extensions) > 0): cursor = conn.cursor() @@ -107,6 +136,15 @@ def main(db_name, overwrite_db): print("Please set environment variables for DB_HOST, DB_USER, DB_PASS") return +<<<<<<< HEAD + if (database_exists(get_default_connection(), db_name) and overwrite_db): + remove_database(get_default_connection(),db_name) + elif (database_exists(get_default_connection(), db_name) and not overwrite_db): + print("Database {0} already exists. Please see --help for overwrite option.".format(db_name)) + return + +======= +>>>>>>> Fixed issue if (database_exists(get_default_connection(), db_name) and overwrite_db): remove_database(get_default_connection(),db_name) elif (database_exists(get_default_connection(), db_name) and not overwrite_db): @@ -130,6 +168,10 @@ def main(db_name, overwrite_db): #traceback.print_exc() if __name__ == "__main__": +<<<<<<< HEAD +<<<<<<< HEAD +======= +>>>>>>> Updated deployment to be more idempotent. Updated table schemas parser = argparse.ArgumentParser() parser.add_argument('database_name', type=str, @@ -140,4 +182,23 @@ def main(db_name, overwrite_db): args = parser.parse_args() database_name = args.database_name - main(args.database_name,args.overwrite) \ No newline at end of file +<<<<<<< HEAD + main(args.database_name,args.overwrite) +======= + if len(sys.argv) < 2: + print("Usage: python3 {0} (DB Name) [-force]".format(sys.argv[0])) + elif len(sys.argv) == 2: + main(str(sys.argv[1]),False) + ''' + elif str(sys.argv[2]).lower() == "-force": + main(str(sys.argv[1]),True) + else: + main(str(sys.argv[1]),False) + ''' + +>>>>>>> Adding support to check if db already exists. +======= + main(args.database_name,args.overwrite) + + +>>>>>>> Updated deployment to be more idempotent. Updated table schemas diff --git a/db/postgres-client.py b/db/postgres-client.py index 92ea5fe4..fe36cf72 100644 --- a/db/postgres-client.py +++ b/db/postgres-client.py @@ -287,4 +287,4 @@ def main(num_of_images,user_name): if (len(sys.argv) != 3): print("Usage: {0} (Number of Images) (User Name)".format(sys.argv[0])) else: - main(int(sys.argv[1]), str(sys.argv[2])) \ No newline at end of file + main(int(sys.argv[1]), str(sys.argv[2])) From ab793c8f49a100d364ac9f1a8dfa1fcc3438e6e0 Mon Sep 17 00:00:00 2001 From: Samiya Date: Thu, 8 Nov 2018 18:47:35 -0800 Subject: [PATCH 065/145] Onboarding CLI (#28) * onboarding cli first pass - upload a folder of images to test storage * Moved code into operations.py * Completed testing with hitting functions endpoint passed in with list of image urls * Support the right image types --- cli/cli.py | 6 +++++- cli/operations.py | 33 +++++++++++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/cli/cli.py b/cli/cli.py index 8087d3c2..e6997383 100644 --- a/cli/cli.py +++ b/cli/cli.py @@ -3,6 +3,7 @@ from operations import ( download, upload, + onboard, LOWER_LIMIT, UPPER_LIMIT, read_config, @@ -18,9 +19,10 @@ parser.add_argument( 'operation', - choices=['download', 'upload'] + choices=['download', 'upload', 'onboard'] ) + parser.add_argument('-f', '--folder') parser.add_argument('-n', '--num-images', type=int) args = parser.parse_args() @@ -30,5 +32,7 @@ if operation == 'download': download(config, args.num_images) + elif operation == 'onboard': + onboard(config, args.folder) else: upload(config) diff --git a/cli/operations.py b/cli/operations.py index 894668a3..68e11b57 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -7,7 +7,7 @@ import pathlib import json import copy -from azure.storage.blob import BlockBlobService +from azure.storage.blob import BlockBlobService, ContentSettings FUNCTIONS_SECTION = 'FUNCTIONS' FUNCTIONS_KEY = 'FUNCTIONS_KEY' @@ -55,6 +55,35 @@ def get_azure_storage_client(config): return azure_storage_client +def onboard(config, folder_name): + blob_storage = get_azure_storage_client(config) + uri = 'https://' + config.get("storage_account") + '.blob.core.windows.net/' + config.get("storage_container") + '/' + functions_url = config.get('url') + '/api/onboarding' + images = [] + count = 0 + for image in os.listdir(folder_name): + if image.lower().endswith('.png') or image.lower().endswith('.jpg') or image.lower().endswith('.jpeg') or image.lower().endswith('.gif'): + local_path=os.path.join(folder_name, image) + blob_name = str(uuid.uuid4()) + count = count + 1 + print('Uploading image #' + str(count)) + + # Upload the created file, use blob_name for the blob name to prevent clashing + blob_storage.create_blob_from_path(config.get("storage_container"), blob_name, local_path, content_settings=ContentSettings(content_type='image/png')) + images.append(uri + blob_name) + + # Post this data to the server to add them to database and kick off active learning + data = {} + data['imageUrls'] = images + headers = {'content-type': 'application/json'} + query = { + "code": config.get('key') + } + + response = requests.post(functions_url, data=json.dumps(data), headers=headers, params=query) + print("Images successfully uploaded. \n" + response.text) + + def _download_bounds(num_images): images_to_download = num_images @@ -176,7 +205,7 @@ def upload(config): os.path.expanduser(config.get("tagging_location")) ) - print("Uploading VOTT json file…") + print("Uploading VOTT json file...") vott_json = pathlib.Path(tagging_location / "data.json") with open(str(vott_json)) as json_file: From 0ffd1a10ea93d8300d1ece1a11419f72ca7b36a4 Mon Sep 17 00:00:00 2001 From: Samiya Date: Fri, 9 Nov 2018 11:25:46 -0800 Subject: [PATCH 066/145] Use image name instead of guid (#31) --- cli/operations.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/cli/operations.py b/cli/operations.py index 68e11b57..13319c80 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -2,7 +2,6 @@ import requests import time import os -import uuid import shutil import pathlib import json @@ -60,17 +59,14 @@ def onboard(config, folder_name): uri = 'https://' + config.get("storage_account") + '.blob.core.windows.net/' + config.get("storage_container") + '/' functions_url = config.get('url') + '/api/onboarding' images = [] - count = 0 for image in os.listdir(folder_name): if image.lower().endswith('.png') or image.lower().endswith('.jpg') or image.lower().endswith('.jpeg') or image.lower().endswith('.gif'): local_path=os.path.join(folder_name, image) - blob_name = str(uuid.uuid4()) - count = count + 1 - print('Uploading image #' + str(count)) + print('Uploading image ' + image) - # Upload the created file, use blob_name for the blob name to prevent clashing - blob_storage.create_blob_from_path(config.get("storage_container"), blob_name, local_path, content_settings=ContentSettings(content_type='image/png')) - images.append(uri + blob_name) + # Upload the created file, use image name for the blob name + blob_storage.create_blob_from_path(config.get("storage_container"), image, local_path, content_settings=ContentSettings(content_type='image/png')) + images.append(uri + image) # Post this data to the server to add them to database and kick off active learning data = {} From c2d8efcd088b61f9e61d3c9ac8c3208694469e4b Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Fri, 9 Nov 2018 15:05:40 -0800 Subject: [PATCH 067/145] =?UTF-8?q?Reverting=20string=20subsitution=20for?= =?UTF-8?q?=20updating=20tags.=20Adding=20method=20to=20upda=E2=80=A6=20(#?= =?UTF-8?q?30)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Reverting string subsitution for updating tags. Adding method to update complete images with no tags. * temp reverting import level changes for db_provider --- functions/pipeline/shared/db_access_v2.py | 64 +++++++++++++---------- 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/functions/pipeline/shared/db_access_v2.py b/functions/pipeline/shared/db_access_v2.py index ddd7819f..0d3bbdbe 100644 --- a/functions/pipeline/shared/db_access_v2.py +++ b/functions/pipeline/shared/db_access_v2.py @@ -1,7 +1,7 @@ -import sys +# import sys import string -import os -import time +# import os +# import time import random from enum import IntEnum, unique import getpass @@ -42,10 +42,10 @@ def test_connection(self): conn = self._db_provider.get_connection() cursor = conn.cursor() cursor.execute('select * from tagstate') - row = cursor.fetchone() + row = cursor.fetchone() print() - while row: - print(str(row[0]) + " " + str(row[1])) + while row: + print(str(row[0]) + " " + str(row[1])) row = cursor.fetchone() def create_user(self,user_name): @@ -61,7 +61,7 @@ def create_user(self,user_name): user_id = cursor.fetchone()[0] conn.commit() finally: cursor.close() - except Exception as e: + except Exception as e: print("An error occured creating a user: {0}".format(e)) raise finally: conn.close() @@ -75,7 +75,8 @@ def get_new_images(self, number_of_images, user_id): try: conn = self._db_provider.get_connection() try: - cursor = conn.cursor() + cursor = conn.cursor() + # TODO: Should we add TagStateId = INCOMPLETE_TAG also for fetching images? query = ("SELECT b.ImageId, b.ImageLocation, a.TagStateId FROM Image_Tagging_State a " "JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = 1 order by " "a.createddtim DESC limit {0}") @@ -85,9 +86,9 @@ def get_new_images(self, number_of_images, user_id): selected_images_to_tag[str(row[0])] = str(row[1]) self._update_images(selected_images_to_tag,ImageTagState.TAG_IN_PROGRESS, user_id, conn) finally: cursor.close() - except Exception as e: + except Exception as e: print("An errors occured getting images: {0}".format(e)) - raise + raise finally: conn.close() return selected_images_to_tag.values() @@ -111,17 +112,22 @@ def add_new_images(self,list_of_image_infos, user_id): conn.commit() finally: cursor.close() print("Inserted {0} images to the DB".format(len(url_to_image_id_map))) - except Exception as e: + except Exception as e: print("An errors occured getting image ids: {0}".format(e)) - raise + raise finally: conn.close() return url_to_image_id_map - def update_untagged_images(self,list_of_image_ids, user_id): + def update_incomplete_images(self, list_of_image_ids, user_id): #TODO: Make sure the image ids are in a TAG_IN_PROGRESS state self._update_images(list_of_image_ids,ImageTagState.INCOMPLETE_TAG,user_id, self._db_provider.get_connection()) print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.INCOMPLETE_TAG.name)) + def update_completed_untagged_images(self,list_of_image_ids, user_id): + #TODO: Make sure the image ids are in a TAG_IN_PROGRESS state + self._update_images(list_of_image_ids,ImageTagState.COMPLETED_TAG,user_id, self._db_provider.get_connection()) + print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.COMPLETED_TAG.name)) + def _update_images(self, list_of_image_ids, new_image_tag_state, user_id, conn): if not isinstance(new_image_tag_state, ImageTagState): raise TypeError('new_image_tag_state must be an instance of Direction Enum') @@ -138,13 +144,14 @@ def _update_images(self, list_of_image_ids, new_image_tag_state, user_id, conn): try: image_ids_as_strings = [str(i) for i in list_of_image_ids] images_to_update = '{0}'.format(', '.join(image_ids_as_strings)) - query = "UPDATE Image_Tagging_State SET TagStateId = %s, ModifiedByUser = %s, ModifiedDtim = now() WHERE ImageId IN (%s)" - cursor.execute(query,(new_image_tag_state,user_id,images_to_update)) + # TODO: find another way to do string subsitution that doesn't break this query + query = "UPDATE Image_Tagging_State SET TagStateId = {0}, ModifiedByUser = {2}, ModifiedDtim = now() WHERE ImageId IN ({1})" + cursor.execute(query.format(new_image_tag_state,images_to_update,user_id)) conn.commit() finally: cursor.close() else: print("No images to update") - except Exception as e: + except Exception as e: print("An errors occured updating images: {0}".format(e)) raise @@ -166,15 +173,15 @@ def update_image_urls(self,image_id_to_url_map, user_id): self._update_images([image_id],ImageTagState.READY_TO_TAG, user_id,conn) print("ImageId: {0} to has a new state: {1}".format(image_id,ImageTagState.READY_TO_TAG.name)) finally: cursor.close() - except Exception as e: + except Exception as e: print("An errors occured updating image urls: {0}".format(e)) - raise + raise finally: conn.close() #TODO: Do safer query string formatting def update_tagged_images(self,list_of_image_tags, user_id): if(not list_of_image_tags): - return + return if type(user_id) is not int: raise TypeError('user id must be an integer') @@ -183,7 +190,7 @@ def update_tagged_images(self,list_of_image_tags, user_id): try: conn = self._db_provider.get_connection() try: - cursor = conn.cursor() + cursor = conn.cursor() for img_id, list_of_tags in groups_by_image_id: for img_tag in list(list_of_tags): query = ("with iti AS ( " @@ -197,32 +204,32 @@ def update_tagged_images(self,list_of_image_tags, user_id): "RETURNING (SELECT iti.ImageTagId FROM iti), ClassificationId) " "INSERT INTO tags_classification (ImageTagId,ClassificationId) " "SELECT imagetagid,classificationid from ci;") - classifications = ", ".join("('{0}')".format(name) for name in img_tag.classification_names) + classifications = ", ".join("('{0}')".format(name) for name in img_tag.classification_names) cursor.execute(query.format(img_tag.image_id,img_tag.x_min,img_tag.x_max,img_tag.y_min,img_tag.y_max,user_id,classifications)) self._update_images([img_id],ImageTagState.COMPLETED_TAG,user_id,conn) conn.commit() print("Updated {0} image tags".format(len(list_of_image_tags))) finally: cursor.close() - except Exception as e: + except Exception as e: print("An errors occured updating tagged image: {0}".format(e)) - raise + raise finally: conn.close() class ArgumentException(Exception): pass -def main(): +def main(): ################################################################# - # This main method is an example of how to use some of + # This main method is an example of how to use some of # the ImageTagDataAccess methods. For instance: # Creating a User # Onboarding of new images # Checking in images been tagged - ################################################################# + ################################################################# #Replace me for testing - db_config = DatabaseInfo("abrig-db.postgres.database.azure.com","micro","abrigtest@abrig-db","abcdABCD123") + db_config = DatabaseInfo("","","","") data_access = ImageTagDataAccess(PostGresProvider(db_config)) user_id = data_access.create_user(getpass.getuser()) print("The user id for '{0}' is {1}".format(getpass.getuser(),user_id)) @@ -253,7 +260,7 @@ def generate_test_image_tags(list_of_image_ids,max_tags_per_image,max_classifica x_max = random.uniform(x_min,300) y_min = random.uniform(50,300) y_max = random.uniform(y_min,300) - classifications_per_tag = random.randint(1,max_classifications_per_tag) + classifications_per_tag = random.randint(1,max_classifications_per_tag) image_tag = ImageTag(image_id,x_min,x_max,y_min,y_max,random.sample(TestClassifications,classifications_per_tag)) list_of_image_tags.append(image_tag) return list_of_image_tags @@ -263,4 +270,3 @@ def id_generator(size=6, chars=string.ascii_uppercase + string.digits): if __name__ == "__main__": main() - From a2606293df7c3b72be177a51940430949d9a236d Mon Sep 17 00:00:00 2001 From: Jim Spring Date: Mon, 12 Nov 2018 11:59:47 -0800 Subject: [PATCH 068/145] centralize config into a config file, fix issues with deployment (#33) --- .../deployment}/Deploy-AppInsights.sh | 0 devops/deployment/Deploy-Infrastructure.sh | 37 +++++++++++++++++++ .../deployment}/Deploy-Postgres-DB.sh | 23 ++++++++---- .../deployment}/Deploy-Python-Functions.sh | 2 +- devops/deployment/deployment_config.sh | 17 +++++++++ 5 files changed, 70 insertions(+), 9 deletions(-) rename {db => devops/deployment}/Deploy-AppInsights.sh (100%) mode change 100644 => 100755 create mode 100755 devops/deployment/Deploy-Infrastructure.sh rename {db => devops/deployment}/Deploy-Postgres-DB.sh (77%) mode change 100644 => 100755 rename {db => devops/deployment}/Deploy-Python-Functions.sh (98%) mode change 100644 => 100755 create mode 100755 devops/deployment/deployment_config.sh diff --git a/db/Deploy-AppInsights.sh b/devops/deployment/Deploy-AppInsights.sh old mode 100644 new mode 100755 similarity index 100% rename from db/Deploy-AppInsights.sh rename to devops/deployment/Deploy-AppInsights.sh diff --git a/devops/deployment/Deploy-Infrastructure.sh b/devops/deployment/Deploy-Infrastructure.sh new file mode 100755 index 00000000..be27e666 --- /dev/null +++ b/devops/deployment/Deploy-Infrastructure.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Check if any of the args are empty +if [ -z "$1" ]; then + echo "Usage: 'sh $0 (Configuration file)'" + exit 1 +fi + +# Is the config file present? +if [ ! -e "$1" ]; then + echo "Configuration file does not exist." + exit 1 +fi + +# Read configuration +. ./deployment_config.sh + +# Setup database +. ./Deploy-Postgres-DB.sh $RESOURCE_GROUP $DATABASE_SERVER_NAME $DATABASE_USERNAME $DATABASE_PASSWORD +if [ "$?" -ne 0 ]; then + echo "Unable to setup database" + exit 1 +fi + +# Setup app insights +. ./Deploy-AppInsights.sh $RESOURCE_GROUP $APPINSIGHTS_NAME +if [ "$?" -ne 0 ]; then + echo "Unable to setup app insights" + exit 1 +fi + +# Setup azure python function +. ./Deploy-Python-Functions.sh $RESOURCE_GROUP $FUNCTION_STORAGE_ACCOUNT $FUNCTION_APP_NAME $APPINSIGHTS_NAME +if [ "$?" -ne 0 ]; then + echo "Unable to setup app insights" + exit 1 +fi \ No newline at end of file diff --git a/db/Deploy-Postgres-DB.sh b/devops/deployment/Deploy-Postgres-DB.sh old mode 100644 new mode 100755 similarity index 77% rename from db/Deploy-Postgres-DB.sh rename to devops/deployment/Deploy-Postgres-DB.sh index 70c10442..a53f610b --- a/db/Deploy-Postgres-DB.sh +++ b/devops/deployment/Deploy-Postgres-DB.sh @@ -6,19 +6,15 @@ set -e ResourceGroup=$1 ServerName=$2 DBUserName=$3 +DBPassword=$4 Local_IP_Address=$(curl -s http://whatismyip.akamai.com/) # Check if any of the args are empty -if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then - echo "Usage: 'sh $0 (Azure Resource Group Name) (PostGres ServerName) (PostGres UserName)'" +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ]; then + echo "Usage: 'sh $0 (Azure Resource Group Name) (PostGres ServerName) (PostGres UserName) (PostGres Password)'" exit 1 fi -echo -echo "Entire a password for Postgres user '$DBUserName@$ServerName':" -read -s DBPassword -echo - # See Azure password policy: https://docs.microsoft.com/en-us/previous-versions/azure/jj943764(v=azure.100) PasswordLength=${#DBPassword} if [ $PasswordLength -lt 8 -o $PasswordLength -gt 16 ]; then @@ -64,4 +60,15 @@ az postgres server firewall-rule create \ --server-name $ServerName \ --name "AllowMyIP_$RuleDate" \ --start-ip-address $Local_IP_Address \ - --end-ip-address $Local_IP_Address \ No newline at end of file + --end-ip-address $Local_IP_Address + +echo +echo "Create a firewall rule for Azure services" +echo +RuleDate=$(date +%F_%H-%M-%S) +az postgres server firewall-rule create \ + --resource-group $ResourceGroup \ + --server-name $ServerName \ + --name "AzureServices_$RuleDate" \ + --start-ip-address "0.0.0.0" \ + --end-ip-address "0.0.0.0" \ No newline at end of file diff --git a/db/Deploy-Python-Functions.sh b/devops/deployment/Deploy-Python-Functions.sh old mode 100644 new mode 100755 similarity index 98% rename from db/Deploy-Python-Functions.sh rename to devops/deployment/Deploy-Python-Functions.sh index c74d6510..e389df35 --- a/db/Deploy-Python-Functions.sh +++ b/devops/deployment/Deploy-Python-Functions.sh @@ -71,4 +71,4 @@ AppInsightsKey=$(az resource show -g $ResourceGroup -n $AppInsightsName --resour echo echo "Setting application setting APPINSIGHTS_INSTRUMENTATIONKEY on $FunctionAppName" echo -az functionapp config appsettings set --name $FunctionAppName --resource-group $ResourceGroup --settings "APPINSIGHTS_INSTRUMENTATIONKEY = $AppInsightsKey" \ No newline at end of file +az functionapp config appsettings set --name $FunctionAppName --resource-group $ResourceGroup --settings "APPINSIGHTS_INSTRUMENTATIONKEY=$AppInsightsKey" \ No newline at end of file diff --git a/devops/deployment/deployment_config.sh b/devops/deployment/deployment_config.sh new file mode 100755 index 00000000..3046af03 --- /dev/null +++ b/devops/deployment/deployment_config.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Project configuration +RESOURCE_GROUP=jmsrg1 +RESOURCE_LOCATION=westus + +# Database config +DATABASE_SERVER_NAME=jmspgsrvr1 +DATABASE_USERNAME=jmsdbadmin +DATABASE_PASSWORD=Th1siS4Pa55WurD + +# AppInsights config +APPINSIGHTS_NAME=jmsinsightful1 + +# Azure Function configuration +FUNCTION_STORAGE_ACCOUNT=jmsfunstor1 +FUNCTION_APP_NAME=jmsfuncapp1 \ No newline at end of file From a0da2390d6aa9ad5eb2b17d437bc30c1c45fd0f7 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Mon, 12 Nov 2018 12:01:18 -0800 Subject: [PATCH 069/145] Abrig/dbstuff (#34) * Data layer work --- db/install-db-resources.py | 61 -------------------------------------- 1 file changed, 61 deletions(-) diff --git a/db/install-db-resources.py b/db/install-db-resources.py index bb74d595..a10af426 100644 --- a/db/install-db-resources.py +++ b/db/install-db-resources.py @@ -27,8 +27,6 @@ def execute_queries_from_map(conn, file_query_map): return def database_exists(conn, db_name): -<<<<<<< HEAD -<<<<<<< HEAD if db_name: cursor = conn.cursor() query = "SELECT 1 FROM pg_database WHERE datname=%s" @@ -37,24 +35,6 @@ def database_exists(conn, db_name): if row: return int(row[0]) == 1 return False -======= - result = -1 -======= ->>>>>>> Fixed issue in db resoruces install file. Updated table schema - if db_name: - cursor = conn.cursor() - query = "SELECT 1 FROM pg_database WHERE datname=%s" - cursor.execute(query,(db_name,)) - row = cursor.fetchone() -<<<<<<< HEAD - result = int(row[0]) - return result == 1 ->>>>>>> Adding support to check if db already exists. -======= - if row: - return int(row[0]) == 1 - return False ->>>>>>> Fixed issue in db resoruces install file. Updated table schema def create_database(conn, db_name): if db_name: @@ -68,10 +48,6 @@ def create_database(conn, db_name): print("No database created due to empty parameter") return -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> Updated deployment to be more idempotent. Updated table schemas def remove_database(conn, db_name): if db_name: cursor = conn.cursor() @@ -84,11 +60,6 @@ def remove_database(conn, db_name): print("No database dropped due to empty parameter") return -<<<<<<< HEAD -======= ->>>>>>> Added support for user creating and auditing in DB, DAL, and deployment. -======= ->>>>>>> Updated deployment to be more idempotent. Updated table schemas def install_extensions(conn, list_of_extensions): if (len(list_of_extensions) > 0): cursor = conn.cursor() @@ -136,15 +107,6 @@ def main(db_name, overwrite_db): print("Please set environment variables for DB_HOST, DB_USER, DB_PASS") return -<<<<<<< HEAD - if (database_exists(get_default_connection(), db_name) and overwrite_db): - remove_database(get_default_connection(),db_name) - elif (database_exists(get_default_connection(), db_name) and not overwrite_db): - print("Database {0} already exists. Please see --help for overwrite option.".format(db_name)) - return - -======= ->>>>>>> Fixed issue if (database_exists(get_default_connection(), db_name) and overwrite_db): remove_database(get_default_connection(),db_name) elif (database_exists(get_default_connection(), db_name) and not overwrite_db): @@ -168,10 +130,6 @@ def main(db_name, overwrite_db): #traceback.print_exc() if __name__ == "__main__": -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> Updated deployment to be more idempotent. Updated table schemas parser = argparse.ArgumentParser() parser.add_argument('database_name', type=str, @@ -182,23 +140,4 @@ def main(db_name, overwrite_db): args = parser.parse_args() database_name = args.database_name -<<<<<<< HEAD main(args.database_name,args.overwrite) -======= - if len(sys.argv) < 2: - print("Usage: python3 {0} (DB Name) [-force]".format(sys.argv[0])) - elif len(sys.argv) == 2: - main(str(sys.argv[1]),False) - ''' - elif str(sys.argv[2]).lower() == "-force": - main(str(sys.argv[1]),True) - else: - main(str(sys.argv[1]),False) - ''' - ->>>>>>> Adding support to check if db already exists. -======= - main(args.database_name,args.overwrite) - - ->>>>>>> Updated deployment to be more idempotent. Updated table schemas From 9d0a45c16a9f348cbc03be1db0966d83479c3a10 Mon Sep 17 00:00:00 2001 From: ackaufman <43971124+ackaufman@users.noreply.github.com> Date: Mon, 12 Nov 2018 16:31:01 -0700 Subject: [PATCH 070/145] Onboarding modifications (#32) * Changes * Added dummy file * Current progress on onboarding mock client and HTTP function * Still needs testing and debugging - onboarding code for HTTP trigger function and mock client. * Updated trigger function code to work on top of new changes to DAL in db_access_v2.py * Added call to DAL function to update image URLs in DB after they are copied over to permanent blob storage. * Issue: Http trigger function produces Exception: OSError: 22 when attempting to copy file from temp blob storage to permanent storage. * Working client/function/database pipeline, end to end. Still needs some modifications, checks, testing, and cleanup. * Code cleanup * Added delete of blobs from temp storage once they are copied over to permanent storage. * Made environment variables out of storage account creds and source/destination containers. * Added TODO items for comments from PR #32 --- functions/pipeline/onboarding/__init__.py | 111 +++++++++++++++++- functions/pipeline/onboarding/function.json | 1 - functions/pipeline/onboarding/host.json | 3 + .../pipeline/onboarding/onboarding-client.py | 41 +++++++ functions/pipeline/onboarding/urlList.json | 3 + functions/pipeline/shared/db_access.py | 28 ++++- functions/pipeline/shared/db_access_v2.py | 2 +- 7 files changed, 182 insertions(+), 7 deletions(-) create mode 100644 functions/pipeline/onboarding/host.json create mode 100644 functions/pipeline/onboarding/onboarding-client.py create mode 100644 functions/pipeline/onboarding/urlList.json diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index 9bb6528f..2afa9a1e 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -1,6 +1,17 @@ +import os import logging import azure.functions as func +from ..shared import db_access_v2 as DB_Access_V2 +from azure.storage.blob import BlockBlobService, ContentSettings +# TODO: User id as param to function - holding off until further discussion +# regarding whether user ID should be generated/looked up by the CLI or +# from within this function + +default_db_host = "" +default_db_name = "" +default_db_user = "" +default_db_pass = "" def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') @@ -9,10 +20,106 @@ def main(req: func.HttpRequest) -> func.HttpResponse: req_body = req.get_json() logging.error(req.get_json()) url_list = req_body["imageUrls"] - url_string = (", ".join(url_list)) except ValueError: print("Unable to decode JSON body") return func.HttpResponse("Unable to decode POST body", status_code=400) logging.error(req_body) - return func.HttpResponse("Got body: " + url_string, status_code=200) \ No newline at end of file + + # Build list of image objects to pass to DAL for insertion into DB. + image_object_list = [] + image_name_list = [] + + # TODO: Add check to ensure image URLs sent by client are all unique. + + # TODO: Encapsulate this loop in a method + # TODO: Wrap method in try/catch, send an appropriate http response in the event of an error + for url in url_list: + # Split original image name from URL + original_filename = url.split("/")[-1] + image_name_list.append(original_filename) + # Create ImageInfo object (def in db_access.py) + # Note: For testing, default image height/width are set to 50x50 + # TODO: Figure out where actual height/width need to come from + image = DB_Access_V2.ImageInfo(original_filename, url, 50, 50) + # Append image object to the list + image_object_list.append(image) + + # TODO: Wrap db access section in try/catch, send an appropriate http response in the event of an error + logging.info("Now connecting to database...") + db_config = DB_Access_V2.DatabaseInfo(os.getenv('DB_HOST', default_db_host), os.getenv('DB_NAME', default_db_name), os.getenv('DB_USER', default_db_user), os.getenv('DB_PASS', default_db_pass)) + data_access = DB_Access_V2.ImageTagDataAccess(DB_Access_V2.PostGresProvider(db_config)) + logging.info("Connected.") + + # Create user id + user_id = data_access.create_user(DB_Access_V2.getpass.getuser()) + logging.info("The user id for '{0}' is {1}".format(DB_Access_V2.getpass.getuser(),user_id)) + + # Add new images to the database, and retrieve a dictionary ImageId's mapped to ImageUrl's + image_id_url_map = data_access.add_new_images(image_object_list,user_id) + + # Print out dictionary for debugging + logging.info("Image ID and URL map dictionary:") + logging.info(image_id_url_map) + + # Copy over images to permanent blob store and save URLs in a list + permanent_url_list = [] + update_urls_dictionary = {} + + # TODO: Add check to make sure image exists in temp storage before attempting these operations + # TODO: Put blob storage manipulation into a separate function and add to shared codebase + # TODO: Try/catch to distinguish among errors + for key, value in image_id_url_map.items(): + + # Verbose logging for testing + logging.info("Key: " + key) + logging.info("Value: " + str(value)) + + original_image_url = key + original_blob_name = original_image_url.split("/")[-1] + file_extension = os.path.splitext(original_image_url)[1] + image_id = value + new_blob_name = (str(image_id) + file_extension) + copy_from_container = os.getenv('SOURCE_CONTAINER_NAME') + copy_to_container = os.getenv('DESTINATION_CONTAINER_NAME') + permanent_storage_path = "https://{0}.blob.core.windows.net/{0}/{1}".format(copy_from_container, new_blob_name) + + # Verbose logging for testing + logging.info("Original image URL: " + original_image_url) + logging.info("Original image name: " + original_blob_name) + logging.info("File extension: " + file_extension) + logging.info("Image ID: " + str(image_id)) + logging.info("New blob name: " + new_blob_name) + logging.info("Now copying file from temporary to permanent storage...") + logging.info("Permanent image URL: " + permanent_storage_path) + + blob_service = BlockBlobService(account_name=os.getenv('STORAGE_ACCOUNT_NAME'), account_key=os.getenv('STORAGE_ACCOUNT_KEY')) + source_blob_url = blob_service.make_blob_url(copy_from_container, original_blob_name) + + # TODO: Exception handling in case blob cannot be copied for some reason. + blob_service.copy_blob(copy_to_container, new_blob_name, source_blob_url) + logging.info("Done.") + + # Delete the file from temp storage once it's been copied + logging.info("Now deleting image " + original_blob_name + " from temp storage container.") + try: + blob_service.delete_blob(copy_from_container, original_blob_name) + print("Blob " + original_blob_name + " has been deleted successfully") + except: + print("Blob " + original_blob_name + " deletion failed") + + # Add image to the list of images to be returned in the response + permanent_url_list.append(permanent_storage_path) + # Add ImageId and permanent storage url to new dictionary to be sent to update function + update_urls_dictionary[image_id] = permanent_storage_path + + logging.info("Now updating permanent URLs in the DB...") + data_access.update_image_urls(update_urls_dictionary, user_id) + logging.info("Done.") + + # Construct response string of permanent URLs + permanent_url_string = (", ".join(permanent_url_list)) + + # Return string containing list of URLs to images in permanent blob storage + return func.HttpResponse("The following images should now be added to the DB and exist in permanent blob storage: " + + permanent_url_string, status_code=200) diff --git a/functions/pipeline/onboarding/function.json b/functions/pipeline/onboarding/function.json index 4667f0ac..852fa7b0 100644 --- a/functions/pipeline/onboarding/function.json +++ b/functions/pipeline/onboarding/function.json @@ -7,7 +7,6 @@ "direction": "in", "name": "req", "methods": [ - "get", "post" ] }, diff --git a/functions/pipeline/onboarding/host.json b/functions/pipeline/onboarding/host.json new file mode 100644 index 00000000..81e35b7b --- /dev/null +++ b/functions/pipeline/onboarding/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" +} \ No newline at end of file diff --git a/functions/pipeline/onboarding/onboarding-client.py b/functions/pipeline/onboarding/onboarding-client.py new file mode 100644 index 00000000..c5e414ad --- /dev/null +++ b/functions/pipeline/onboarding/onboarding-client.py @@ -0,0 +1,41 @@ +import requests +import json +import pg8000 + +# The following mock client imitates the CLI during the onboarding scenario for new images. +# The expectation is that the CLI uploads images to a temporary blob store, then gets a list +# of URLs to those images and passes the list to an HTTP trigger function in the format of +# a JSON string. The HTTP trigger function creates rows in the database for the images, +# retrieves the ImageId's for them, and then copies the images, each renamed as "ImageId.extension", +# into a permanent blob storage container. The HTTP function returns the list of URLs to +# the images in permanent blob storage. + +print("\nTest client for CLI Onboarding scenario") +print('-' * 40) + +# functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/onboarding?code=lI1zl4IhiHcOcxTS85RsE7yZJXeNRxnr7tXSO1SrLWdpiN0W6hT3Jw==" +functionURL = "http://localhost:7071/api/onboarding" +# Sean's function URL: +# functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/onboarding?code=lI1zl4IhiHcOcxTS85RsE7yZJXeNRxnr7tXSO1SrLWdpiN0W6hT3Jw==" +# functionURL = "https://abrig-linux-func.azurewebsites.net/api/onboarding" + +urlList = { "imageUrls": ["https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies1.jpg", + "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies2.jpg", + "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies3.jpg"] } + +headers = {"Content-Type": "application/json"} + +print("Now executing POST request to onboard images...to:") +print("Function URL: " + functionURL) +print("Headers:") +for key, value in headers.items(): + print("\t" + key + ": " + value) +response = requests.post(url=functionURL, headers=headers, json=urlList) +print("Completed POST request.") + +raw_response = response.text +response_array = raw_response.split(", ") +response_output = "\n".join(response_array) + +print(f"Response status code: {response.status_code}") +print(f"Response string: {response_output}") \ No newline at end of file diff --git a/functions/pipeline/onboarding/urlList.json b/functions/pipeline/onboarding/urlList.json new file mode 100644 index 00000000..b1a20e7c --- /dev/null +++ b/functions/pipeline/onboarding/urlList.json @@ -0,0 +1,3 @@ +{ "imageUrls": ["http://www.whitneyway.com/Images/15/2017%20Puppies%20in%20Easter%20basket%204-16-17_800.JPG", + "http://allpetcages.com/wp-content/uploads/2017/06/puppy-whelping-box.jpg", + "http://78.media.tumblr.com/eea2f882ec08255e40cecaf8ca1d4543/tumblr_nmxjbjIK141qi4ucgo1_500.jpg"] } \ No newline at end of file diff --git a/functions/pipeline/shared/db_access.py b/functions/pipeline/shared/db_access.py index 8c444ffe..810b89aa 100644 --- a/functions/pipeline/shared/db_access.py +++ b/functions/pipeline/shared/db_access.py @@ -20,9 +20,34 @@ class ImageTagState(IntEnum): default_db_user = "" default_db_pass = "" +# An entity class for a VOTT image +class ImageInfo(object): + def __init__(self, image_name, image_location, height, width): + self.image_name = image_name + self.image_location = image_location + self.height = height + self.width = width + def get_connection(): return __new_postgres_connection(os.getenv('DB_HOST', default_db_host), os.getenv('DB_NAME', default_db_name), os.getenv('DB_USER', default_db_user), os.getenv('DB_PASS', default_db_pass)) +def __new_postgres_connection(host_name, db_name, db_user, db_pass): + return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) + +def get_image_ids_for_new_images(conn, list_of_image_infos): + url_to_image_id_map = {} + if(len(list_of_image_infos) > 0): + cursor = conn.cursor() + for img in list(list_of_image_infos): + query = "INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) VALUES ('{0}','{1}',{2},{3}) RETURNING ImageId;" + cursor.execute(query.format(img.image_name,img.image_location,str(img.height),str(img.width))) + new_img_id = cursor.fetchone()[0] + url_to_image_id_map[img.image_location] = new_img_id + #__update_images(conn,[new_img_id],ImageTagState.NOT_READY) + conn.commit() + print(f"Inserted {len(url_to_image_id_map)} images to the DB") + return url_to_image_id_map + def get_images_for_tagging(conn, num_images): cursor = conn.cursor() @@ -48,9 +73,6 @@ def get_images_for_tagging(conn, num_images): # Return the list of URLs to the user (values in the selected_images_to_tag dictionary) return list(selected_images_to_tag.values()) -def __new_postgres_connection(host_name, db_name, db_user, db_pass): - return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) - def update_tagged_images(conn, list_of_image_ids): __update_images(conn, list_of_image_ids, ImageTagState.COMPLETED_TAG) print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.COMPLETED_TAG.name)) diff --git a/functions/pipeline/shared/db_access_v2.py b/functions/pipeline/shared/db_access_v2.py index 0d3bbdbe..0358ac10 100644 --- a/functions/pipeline/shared/db_access_v2.py +++ b/functions/pipeline/shared/db_access_v2.py @@ -6,7 +6,7 @@ from enum import IntEnum, unique import getpass import itertools -from db_provider import DatabaseInfo, PostGresProvider +from .db_provider import DatabaseInfo, PostGresProvider @unique class ImageTagState(IntEnum): From 761fdb3c5a6aa7236ca25f1a5a35cc5d155d73ea Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Tue, 13 Nov 2018 10:50:53 -0800 Subject: [PATCH 071/145] Upload json tagging data, update upload/download functions to use singular data_access library and configuration. (#35) * Upload flow reworked to use new db_accessv2. Fixing db update bug from string subsitution. Upload handles visit&tag, visit¬ag, novisit Saving untagged to INCOMPLETE_TAG state works through local func testing cleaned up saving untagged images a bit Saving tags to DB also works Working upload flow with visit&tag, visit¬ag, novisit removing creds restructing vott_json_parser file. Deleting jsonpickle version Moving things around for importclean up purposes. Upload function still working, need to refactor download and check prior existing tests pytest working, had to rename db_access_v1 to fix conflicts Some more cleanup and restructring. Tested working through upload function and pytest * Working on refactoring download function, saving work. Need to get images from db then return Reverting some accidental renaming in other directories Removing vscode files download working, still need to 1. combine db config for all 3 functions, 2. write tests Download now works with new db_access_v2. Need to create shared_db config ditto prior * single db configuration minor spacing * updating onboarding function to use new shared directory * temp commenting out onboarding/onboarding-client.py as it breaks pytests. Should probably remove hardcoded resources * feedback * minor TODO comment reshuffling * removing deprecated db_access_v1 --- .gitignore | 3 + functions/pipeline/download/__init__.py | 51 +++--- functions/pipeline/onboarding/__init__.py | 19 +-- .../pipeline/onboarding/onboarding-client.py | 80 +++++----- functions/pipeline/shared/__init__.py | 0 functions/pipeline/shared/db_access.py | 97 ------------ .../pipeline/shared/db_access/__init__.py | 1 + .../shared/{ => db_access}/db_access_v2.py | 8 +- .../{ => db_access}/test_db_access_v2.py | 2 +- .../pipeline/shared/db_provider/__init__.py | 1 + .../shared/{ => db_provider}/db_provider.py | 45 ++++-- functions/pipeline/shared/vott_json_parser.py | 61 ------- .../pipeline/shared/vott_parser/__init__.py | 1 + .../shared/vott_parser/vott_parser.py | 149 ++++++++++++++++++ functions/pipeline/upload/__init__.py | 50 ++++-- 15 files changed, 311 insertions(+), 257 deletions(-) create mode 100644 functions/pipeline/shared/__init__.py delete mode 100644 functions/pipeline/shared/db_access.py create mode 100644 functions/pipeline/shared/db_access/__init__.py rename functions/pipeline/shared/{ => db_access}/db_access_v2.py (98%) rename functions/pipeline/shared/{ => db_access}/test_db_access_v2.py (99%) create mode 100644 functions/pipeline/shared/db_provider/__init__.py rename functions/pipeline/shared/{ => db_provider}/db_provider.py (51%) delete mode 100644 functions/pipeline/shared/vott_json_parser.py create mode 100644 functions/pipeline/shared/vott_parser/__init__.py create mode 100644 functions/pipeline/shared/vott_parser/vott_parser.py diff --git a/.gitignore b/.gitignore index 8592b634..d5dbf2ae 100644 --- a/.gitignore +++ b/.gitignore @@ -118,3 +118,6 @@ tag/*.csv # TF exported graph files .pb + +# VSCode +.vscode/*.json \ No newline at end of file diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py index 70327a7c..11a4e295 100644 --- a/functions/pipeline/download/__init__.py +++ b/functions/pipeline/download/__init__.py @@ -2,39 +2,54 @@ import azure.functions as func import json -import os -from ..shared import db_access as DB_Access -from ..shared import vott_json_parser as vott_json_parser +from ..shared.vott_parser import create_starting_vott_json +from ..shared.db_provider import get_postgres_provider +from ..shared.db_access import ImageTagDataAccess + def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') - imageCount = req.params.get('imageCount') + image_count = int(req.params.get('imageCount')) + user_id = int(req.params.get('userId')) + # setup response object headers = { "content-type": "application/json" } - if not imageCount: + if not user_id: + return func.HttpResponse( + status_code=401, + headers=headers, + body=json.dumps({"error": "invalid userId given or omitted"}) + ) + elif not image_count: return func.HttpResponse( status_code=400, headers=headers, body=json.dumps({"error": "image count not specified"}) ) else: - # setup response object - connection = DB_Access.get_connection() - # TODO: images need more meaningful data than just download urls - image_urls = DB_Access.get_images_for_tagging(connection, imageCount) + try: + # DB configuration + data_access = ImageTagDataAccess(get_postgres_provider()) - # TODO: Build vott json - vott_json = vott_json_parser.create_starting_json(image_urls) + image_urls = list(data_access.get_new_images(image_count, user_id)) - return_body_json = {"imageUrls": image_urls, "vottJson": vott_json} + # TODO: Populate starting json with tags, if any exist... (precomputed or retagging?) + vott_json = create_starting_vott_json(image_urls) - content = json.dumps(return_body_json) - return func.HttpResponse( - status_code=200, - headers=headers, - body=content - ) \ No newline at end of file + return_body_json = {"imageUrls": image_urls, "vottJson": vott_json} + + content = json.dumps(return_body_json) + return func.HttpResponse( + status_code=200, + headers=headers, + body=content + ) + except Exception as e: + return func.HttpResponse( + "exception:" + str(e), + status_code=500 + ) diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index 2afa9a1e..9d3cbd75 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -1,18 +1,15 @@ import os import logging import azure.functions as func -from ..shared import db_access_v2 as DB_Access_V2 -from azure.storage.blob import BlockBlobService, ContentSettings + +from ..shared.db_provider import get_postgres_provider +from ..shared.db_access import ImageTagDataAccess, ImageInfo +from azure.storage.blob import BlockBlobService # TODO: User id as param to function - holding off until further discussion # regarding whether user ID should be generated/looked up by the CLI or # from within this function -default_db_host = "" -default_db_name = "" -default_db_user = "" -default_db_pass = "" - def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') @@ -41,19 +38,17 @@ def main(req: func.HttpRequest) -> func.HttpResponse: # Create ImageInfo object (def in db_access.py) # Note: For testing, default image height/width are set to 50x50 # TODO: Figure out where actual height/width need to come from - image = DB_Access_V2.ImageInfo(original_filename, url, 50, 50) + image = ImageInfo(original_filename, url, 50, 50) # Append image object to the list image_object_list.append(image) # TODO: Wrap db access section in try/catch, send an appropriate http response in the event of an error logging.info("Now connecting to database...") - db_config = DB_Access_V2.DatabaseInfo(os.getenv('DB_HOST', default_db_host), os.getenv('DB_NAME', default_db_name), os.getenv('DB_USER', default_db_user), os.getenv('DB_PASS', default_db_pass)) - data_access = DB_Access_V2.ImageTagDataAccess(DB_Access_V2.PostGresProvider(db_config)) + data_access = ImageTagDataAccess(get_postgres_provider()) logging.info("Connected.") # Create user id - user_id = data_access.create_user(DB_Access_V2.getpass.getuser()) - logging.info("The user id for '{0}' is {1}".format(DB_Access_V2.getpass.getuser(),user_id)) + user_id = data_access.create_user("testuser") # TODO: remove this hardcoding, should be passed in the request. # Add new images to the database, and retrieve a dictionary ImageId's mapped to ImageUrl's image_id_url_map = data_access.add_new_images(image_object_list,user_id) diff --git a/functions/pipeline/onboarding/onboarding-client.py b/functions/pipeline/onboarding/onboarding-client.py index c5e414ad..203d4a46 100644 --- a/functions/pipeline/onboarding/onboarding-client.py +++ b/functions/pipeline/onboarding/onboarding-client.py @@ -1,41 +1,39 @@ -import requests -import json -import pg8000 - -# The following mock client imitates the CLI during the onboarding scenario for new images. -# The expectation is that the CLI uploads images to a temporary blob store, then gets a list -# of URLs to those images and passes the list to an HTTP trigger function in the format of -# a JSON string. The HTTP trigger function creates rows in the database for the images, -# retrieves the ImageId's for them, and then copies the images, each renamed as "ImageId.extension", -# into a permanent blob storage container. The HTTP function returns the list of URLs to -# the images in permanent blob storage. - -print("\nTest client for CLI Onboarding scenario") -print('-' * 40) - -# functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/onboarding?code=lI1zl4IhiHcOcxTS85RsE7yZJXeNRxnr7tXSO1SrLWdpiN0W6hT3Jw==" -functionURL = "http://localhost:7071/api/onboarding" -# Sean's function URL: -# functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/onboarding?code=lI1zl4IhiHcOcxTS85RsE7yZJXeNRxnr7tXSO1SrLWdpiN0W6hT3Jw==" -# functionURL = "https://abrig-linux-func.azurewebsites.net/api/onboarding" - -urlList = { "imageUrls": ["https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies1.jpg", - "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies2.jpg", - "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies3.jpg"] } - -headers = {"Content-Type": "application/json"} - -print("Now executing POST request to onboard images...to:") -print("Function URL: " + functionURL) -print("Headers:") -for key, value in headers.items(): - print("\t" + key + ": " + value) -response = requests.post(url=functionURL, headers=headers, json=urlList) -print("Completed POST request.") - -raw_response = response.text -response_array = raw_response.split(", ") -response_output = "\n".join(response_array) - -print(f"Response status code: {response.status_code}") -print(f"Response string: {response_output}") \ No newline at end of file +# import requests +# +# # The following mock client imitates the CLI during the onboarding scenario for new images. +# # The expectation is that the CLI uploads images to a temporary blob store, then gets a list +# # of URLs to those images and passes the list to an HTTP trigger function in the format of +# # a JSON string. The HTTP trigger function creates rows in the database for the images, +# # retrieves the ImageId's for them, and then copies the images, each renamed as "ImageId.extension", +# # into a permanent blob storage container. The HTTP function returns the list of URLs to +# # the images in permanent blob storage. +# +# print("\nTest client for CLI Onboarding scenario") +# print('-' * 40) +# +# # functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/onboarding?code=lI1zl4IhiHcOcxTS85RsE7yZJXeNRxnr7tXSO1SrLWdpiN0W6hT3Jw==" +# functionURL = "http://localhost:7071/api/onboarding" +# # Sean's function URL: +# # functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/onboarding?code=lI1zl4IhiHcOcxTS85RsE7yZJXeNRxnr7tXSO1SrLWdpiN0W6hT3Jw==" +# # functionURL = "https://abrig-linux-func.azurewebsites.net/api/onboarding" +# +# urlList = { "imageUrls": ["https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies1.jpg", +# "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies2.jpg", +# "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies3.jpg"] } +# +# headers = {"Content-Type": "application/json"} +# +# print("Now executing POST request to onboard images...to:") +# print("Function URL: " + functionURL) +# print("Headers:") +# for key, value in headers.items(): +# print("\t" + key + ": " + value) +# response = requests.post(url=functionURL, headers=headers, json=urlList) +# print("Completed POST request.") +# +# raw_response = response.text +# response_array = raw_response.split(", ") +# response_output = "\n".join(response_array) +# +# print(f"Response status code: {response.status_code}") +# print(f"Response string: {response_output}") \ No newline at end of file diff --git a/functions/pipeline/shared/__init__.py b/functions/pipeline/shared/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/functions/pipeline/shared/db_access.py b/functions/pipeline/shared/db_access.py deleted file mode 100644 index 810b89aa..00000000 --- a/functions/pipeline/shared/db_access.py +++ /dev/null @@ -1,97 +0,0 @@ -import os -import pg8000 - -from enum import IntEnum, unique - -# TODO: Add error handling cases - -@unique -class ImageTagState(IntEnum): - NOT_READY = 0 - READY_TO_TAG = 1 - TAG_IN_PROGRESS = 2 - COMPLETED_TAG = 3 - INCOMPLETE_TAG = 4 - ABANDONED = 5 - -# Temp for local testing/ -default_db_host = "" -default_db_name = "" -default_db_user = "" -default_db_pass = "" - -# An entity class for a VOTT image -class ImageInfo(object): - def __init__(self, image_name, image_location, height, width): - self.image_name = image_name - self.image_location = image_location - self.height = height - self.width = width - -def get_connection(): - return __new_postgres_connection(os.getenv('DB_HOST', default_db_host), os.getenv('DB_NAME', default_db_name), os.getenv('DB_USER', default_db_user), os.getenv('DB_PASS', default_db_pass)) - -def __new_postgres_connection(host_name, db_name, db_user, db_pass): - return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) - -def get_image_ids_for_new_images(conn, list_of_image_infos): - url_to_image_id_map = {} - if(len(list_of_image_infos) > 0): - cursor = conn.cursor() - for img in list(list_of_image_infos): - query = "INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width) VALUES ('{0}','{1}',{2},{3}) RETURNING ImageId;" - cursor.execute(query.format(img.image_name,img.image_location,str(img.height),str(img.width))) - new_img_id = cursor.fetchone()[0] - url_to_image_id_map[img.image_location] = new_img_id - #__update_images(conn,[new_img_id],ImageTagState.NOT_READY) - conn.commit() - print(f"Inserted {len(url_to_image_id_map)} images to the DB") - return url_to_image_id_map - -def get_images_for_tagging(conn, num_images): - cursor = conn.cursor() - - # From the database, select the number of images the user requested where tag state is "READY_TO_TAG" - cursor.execute("SELECT b.ImageId, b.OriginalImageName, a.TagStateId, b.ImageLocation FROM Image_Tagging_State a JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId IN ({0},{1}) order by a.createddtim ASC limit {2}".format(ImageTagState.READY_TO_TAG, ImageTagState.INCOMPLETE_TAG,num_images)) - - # Put the ImageId and ImageLocation (URL) for the images to tag into a dictionary named selected_images_to_tag - selected_images_to_tag = {} - for row in cursor: - print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) - selected_images_to_tag[str(row[0])] = str(row[3]) - - # If there are images in the list, update the tagging state for the selected images from "READY_TO_TAG" to "TAG_IN_PROGRESS" state - # If there are no images left to tag, output a message to the user - # TODO: Separate this code out into an "update" helper function? - if(len(selected_images_to_tag) > 0): - images_to_update = '{0}'.format(', '.join(selected_images_to_tag.keys())) - cursor.execute("UPDATE Image_Tagging_State SET TagStateId = {0} WHERE ImageId IN ({1})".format(ImageTagState.TAG_IN_PROGRESS, images_to_update)) - conn.commit() - print("Updated {len(selected_images_to_tag)} images to the state {0}".format(ImageTagState.TAG_IN_PROGRESS)) - else: - print("No images untagged images left!") - # Return the list of URLs to the user (values in the selected_images_to_tag dictionary) - return list(selected_images_to_tag.values()) - -def update_tagged_images(conn, list_of_image_ids): - __update_images(conn, list_of_image_ids, ImageTagState.COMPLETED_TAG) - print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.COMPLETED_TAG.name)) - -def update_untagged_images(conn, list_of_image_ids): - __update_images(conn, list_of_image_ids, ImageTagState.INCOMPLETE_TAG) - print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.INCOMPLETE_TAG.name)) - -def __update_images(conn, list_of_image_ids, new_image_tag_state): - if not isinstance(new_image_tag_state, ImageTagState): - raise TypeError('new_image_tag_state must be an instance of Direction Enum') - - if(len(list_of_image_ids) > 0): - cursor = conn.cursor() - image_ids_as_strings = [str(i) for i in list_of_image_ids] - images_to_update = '{0}'.format(', '.join(image_ids_as_strings)) - query = "UPDATE Image_Tagging_State SET TagStateId = {0}, ModifiedDtim = now() WHERE ImageId IN ({1})" - cursor.execute(query.format(new_image_tag_state,images_to_update)) - conn.commit() - #print(f"Updated {len(list_of_image_ids)} image(s) to the state {new_image_tag_state.name}") - else: - print("No images to update") \ No newline at end of file diff --git a/functions/pipeline/shared/db_access/__init__.py b/functions/pipeline/shared/db_access/__init__.py new file mode 100644 index 00000000..e8fe74d4 --- /dev/null +++ b/functions/pipeline/shared/db_access/__init__.py @@ -0,0 +1 @@ +from .db_access_v2 import ImageTagDataAccess, ImageTag, ImageInfo, ImageTagState \ No newline at end of file diff --git a/functions/pipeline/shared/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py similarity index 98% rename from functions/pipeline/shared/db_access_v2.py rename to functions/pipeline/shared/db_access/db_access_v2.py index 0358ac10..ed020ec3 100644 --- a/functions/pipeline/shared/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -6,7 +6,8 @@ from enum import IntEnum, unique import getpass import itertools -from .db_provider import DatabaseInfo, PostGresProvider + +from ..db_provider import DatabaseInfo, PostGresProvider @unique class ImageTagState(IntEnum): @@ -76,11 +77,10 @@ def get_new_images(self, number_of_images, user_id): conn = self._db_provider.get_connection() try: cursor = conn.cursor() - # TODO: Should we add TagStateId = INCOMPLETE_TAG also for fetching images? query = ("SELECT b.ImageId, b.ImageLocation, a.TagStateId FROM Image_Tagging_State a " - "JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = 1 order by " + "JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId IN ({1}, {2}) order by " "a.createddtim DESC limit {0}") - cursor.execute(query.format(number_of_images)) + cursor.execute(query.format(number_of_images, ImageTagState.READY_TO_TAG, ImageTagState.INCOMPLETE_TAG)) for row in cursor: print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) selected_images_to_tag[str(row[0])] = str(row[1]) diff --git a/functions/pipeline/shared/test_db_access_v2.py b/functions/pipeline/shared/db_access/test_db_access_v2.py similarity index 99% rename from functions/pipeline/shared/test_db_access_v2.py rename to functions/pipeline/shared/db_access/test_db_access_v2.py index d57a284e..45eea1db 100644 --- a/functions/pipeline/shared/test_db_access_v2.py +++ b/functions/pipeline/shared/db_access/test_db_access_v2.py @@ -2,7 +2,7 @@ from unittest.mock import patch from unittest.mock import Mock -from db_access_v2 import( +from .db_access_v2 import( ImageTagDataAccess, ArgumentException, ImageTagState, diff --git a/functions/pipeline/shared/db_provider/__init__.py b/functions/pipeline/shared/db_provider/__init__.py new file mode 100644 index 00000000..54da8ce0 --- /dev/null +++ b/functions/pipeline/shared/db_provider/__init__.py @@ -0,0 +1 @@ +from .db_provider import DatabaseInfo, DBProvider, PostGresProvider, get_postgres_provider diff --git a/functions/pipeline/shared/db_provider.py b/functions/pipeline/shared/db_provider/db_provider.py similarity index 51% rename from functions/pipeline/shared/db_provider.py rename to functions/pipeline/shared/db_provider/db_provider.py index 430da3e0..f6477bee 100644 --- a/functions/pipeline/shared/db_provider.py +++ b/functions/pipeline/shared/db_provider/db_provider.py @@ -1,30 +1,55 @@ import pg8000 -#import pyodbc +import os + +# import pyodbc + +# Used for testing +default_db_host = "" +default_db_name = "" +default_db_user = "" +default_db_pass = "" + +def get_postgres_provider(): + return PostGresProvider(__get_database_info_from_env()) + + +def __get_database_info_from_env(): + return DatabaseInfo(os.getenv('DB_HOST', default_db_host), os.getenv('DB_NAME', default_db_name), + os.getenv('DB_USER', default_db_user), os.getenv('DB_PASS', default_db_pass)) + class DatabaseInfo(object): - def __init__(self, db_host_name, db_name, db_user_name, db_password): + def __init__(self, db_host_name, db_name, db_user_name, db_password): self.db_host_name = db_host_name self.db_name = db_name self.db_user_name = db_user_name self.db_password = db_password + class DBProvider(object): - def __new_connection(self,host_name,db_name,db_user,db_pass): pass + def __new_connection(self, host_name, db_name, db_user, db_pass): pass + def get_connection(self): pass - def cursor(self):pass - def execute(self, query):pass + + def cursor(self): pass + + def execute(self, query): pass + class PostGresProvider(DBProvider): def __init__(self, database_info): self.database_info = database_info - - def __new_connection(self,host_name,db_name,db_user,db_pass): - return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) + + def __new_connection(self, host_name, db_name, db_user, db_pass): + return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, + ssl=True, timeout=None, application_name=None) def get_connection(self): - #self.connection = - return self.__new_connection(self.database_info.db_host_name,self.database_info.db_name,self.database_info.db_user_name,self.database_info.db_password) + # self.connection = + return self.__new_connection(self.database_info.db_host_name, self.database_info.db_name, + self.database_info.db_user_name, self.database_info.db_password) + ''' class MSSqlProvider(DBProvider): diff --git a/functions/pipeline/shared/vott_json_parser.py b/functions/pipeline/shared/vott_json_parser.py deleted file mode 100644 index 2d5a9d6a..00000000 --- a/functions/pipeline/shared/vott_json_parser.py +++ /dev/null @@ -1,61 +0,0 @@ -import json - -def __build_frames_data(images): - frames = {} - for filename in images: - # TODO: Build tag data per frame if they exist already - frames[__get_filename_from_fullpath(filename)] = [] #list of tags - return frames - -# TODO: Change return from db to have more tag data...for now input is a list of blobstore urls -def create_starting_json(images): - return { - "frames" : __build_frames_data(images), - "inputTags": "", # TODO: populate classifications that exist in db already - } - -def __get_filename_from_fullpath(filename): - path_components = filename.split('/') - return path_components[-1] - -def __get_id_from_fullpath(fullpath): - return int(__get_filename_from_fullpath(fullpath).split('.')[0]) - -def process_vott_json(json): - all_frame_data = json['frames'] - - # Scrub filename keys to only have integer Id, drop path and file extensions. - id_to_tags_dict = {} - for full_path_key in sorted(all_frame_data.keys()): - id_to_tags_dict[__get_id_from_fullpath(full_path_key)] = all_frame_data[full_path_key] - all_ids = id_to_tags_dict.keys() - - # Do the same with visitedFrames - visited_ids = sorted(json['visitedFrames']) - for index, filename in enumerate(visited_ids): - visited_ids[index] = __get_id_from_fullpath(filename) - - # Unvisisted imageIds - unvisited_ids = sorted(list(set(all_ids) - set(visited_ids))) - - return { - "totalNumImages" : len(all_ids), - "numImagesVisted" : len(visited_ids), - "numImagesNotVisted" : len(unvisited_ids), - "imagesVisited" : visited_ids, - "imagesNotVisited" : unvisited_ids - } - -def main(): - images = { - "1012.png" : {}, - "1013.png" : {}, - "1014.png" : {}, - "1015.png" : {}, - "1016.png" : {} - } - generated_json = create_starting_json(images) - print(json.dumps(generated_json)) - -if __name__ == '__main__': - main() diff --git a/functions/pipeline/shared/vott_parser/__init__.py b/functions/pipeline/shared/vott_parser/__init__.py new file mode 100644 index 00000000..3d03d5e1 --- /dev/null +++ b/functions/pipeline/shared/vott_parser/__init__.py @@ -0,0 +1 @@ +from .vott_parser import create_starting_vott_json, process_vott_json \ No newline at end of file diff --git a/functions/pipeline/shared/vott_parser/vott_parser.py b/functions/pipeline/shared/vott_parser/vott_parser.py new file mode 100644 index 00000000..1bffff7f --- /dev/null +++ b/functions/pipeline/shared/vott_parser/vott_parser.py @@ -0,0 +1,149 @@ +import json + +def __build_frames_data(images): + frames = {} + for filename in images: + # TODO: Build tag data per frame if they exist already + frames[__get_filename_from_fullpath(filename)] = [] #list of tags + return frames + +# For download function +def create_starting_vott_json(images): + return { + "frames": __build_frames_data(images), + "inputTags": "", # TODO: populate classifications that exist in db already + "scd": False # Required for VoTT and image processing? unknown if it's also used for video. + } + +def __get_filename_from_fullpath(filename): + path_components = filename.split('/') + return path_components[-1] + +def __get_id_from_fullpath(fullpath): + return int(__get_filename_from_fullpath(fullpath).split('.')[0]) + +# Returns a list of processed tags for a single frame +def __create_tag_data_list(json_tag_list): + processed_tags = [] + for json_tag in json_tag_list: + processed_tags.append(__process_json_tag(json_tag)) + return processed_tags + +def __process_json_tag(json_tag): + return { + "x1": json_tag['x1'], + "x2": json_tag['x2'], + "y1": json_tag['y1'], + "y2": json_tag['y2'], + "UID": json_tag["UID"], + "id": json_tag["id"], + "type": json_tag["type"], + "classes": json_tag["tags"], + "name": json_tag["name"] + } + +# For upload function +def process_vott_json(json): + all_frame_data = json['frames'] + + # Scrub filename keys to only have integer Id, drop path and file extensions. + id_to_tags_dict = {} + for full_path_key in sorted(all_frame_data.keys()): + # Map ID to list of processed tag data + id_to_tags_dict[__get_id_from_fullpath(full_path_key)] = __create_tag_data_list(all_frame_data[full_path_key]) + all_ids = list(id_to_tags_dict.keys()) + + # Remove images with no tags from dict + for id in all_ids: + if not id_to_tags_dict[id]: + del(id_to_tags_dict[id]) + + # Do the same with visitedFrames + visited_ids = sorted(json['visitedFrames']) + for index, filename in enumerate(visited_ids): + visited_ids[index] = __get_id_from_fullpath(filename) + + visited_no_tag_ids = sorted(list(set(visited_ids) - set(id_to_tags_dict.keys()))) + + # Unvisisted imageIds + unvisited_ids = sorted(list(set(all_ids) - set(visited_ids))) + + return { + "totalNumImages" : len(all_ids), + "numImagesVisted" : len(visited_ids), + "numImagesVisitedNoTag": len(visited_no_tag_ids), + "numImagesNotVisted" : len(unvisited_ids), + "imagesVisited" : visited_ids, + "imagesNotVisited" : unvisited_ids, + "imagesVisitedNoTag": visited_no_tag_ids, + "imageIdToTags": id_to_tags_dict + } + +def main(): + images = { + "1.png" : {}, + "2.png" : {}, + "3.png" : {}, + "4.png" : {}, + "5.png" : {} + } + generated_json = create_starting_vott_json(images) + print("generating starting default json for vott_parser download") + print(json.dumps(generated_json)) + + print('testing tag creation') + tag1 = __build_json_tag(122, 171, 122, 191, 488, 512, "uiduiduid", 2, "Rectangle", ["Ford", "Volvo", "BMW"],2) + print(tag1) + print(json.dumps(tag1)) + + print('testing adding two sets') + output_json = { + "frames" : { + "1.png": [], + "2.png": [tag1, tag1], + "3.png": [tag1], + "4.png": [], + "5.png": [] + }, + "visitedFrames": [] + } + print() + print('bare') + print(json.dumps(output_json)) + print() + print("Testing process_vott_json") + print(json.dumps(process_vott_json(output_json))) + print() + print(json.dumps(output_json)) + + # tag_data = __get_components_from_json_tag(output_json["frames"]["2"][0]) + # print("tag_data: ---" + str(tag_data)) + # add_tag_to_db('something', 2, (tag_data)) + + + +# Currently only used for testing... +# returns a json representative of a tag given relevant components +def __build_json_tag(x1, x2, y1, y2, img_width, img_height, UID, id, type, tags, name): + return { + "x1": x1, + "x2": x2, + "y1": y1, + "y2": y2, + "width": img_width, + "height": img_height, + "box" : { + "x1": x1, + "x2": x2, + "y1": y1, + "y2": y2 + }, + "UID": UID, + "id": id, + "type": type, + "tags": tags, + "name": name + } + +if __name__ == '__main__': + main() diff --git a/functions/pipeline/upload/__init__.py b/functions/pipeline/upload/__init__.py index 8d4e48d2..417dc1e4 100644 --- a/functions/pipeline/upload/__init__.py +++ b/functions/pipeline/upload/__init__.py @@ -1,32 +1,56 @@ import json -from ..shared import db_access as DB_Access -from ..shared import vott_json_parser as Vott_json_parser +from ..shared.vott_parser import process_vott_json +from ..shared.db_provider import get_postgres_provider +from ..shared.db_access import ImageTag, ImageTagDataAccess import azure.functions as func + +# Create list of ImageTag objects to write to db for given image_id +def __create_ImageTag_list(image_id, tags_list): + image_tags = [] + for tag in tags_list: + image_tags.append(ImageTag(image_id, tag['x1'], tag['x2'], tag['y1'], tag['y2'], tag['classes'])) + return image_tags + def main(req: func.HttpRequest) -> func.HttpResponse: try: - + # TODO: Create if check for userId and valid json checks? vott_json = req.get_json() - stats = Vott_json_parser.process_vott_json(vott_json) + upload_data = process_vott_json(vott_json) + user_id = int(req.params.get('userId')) + upload_data['userId'] = user_id + + # DB configuration + data_access = ImageTagDataAccess(get_postgres_provider()) - connection = DB_Access.get_connection() # Update tagged images - DB_Access.update_tagged_images(connection, stats["imagesVisited"]) + ids_to_tags = upload_data["imageIdToTags"] + + all_imagetags = [] + for image_id in ids_to_tags.keys(): + if ids_to_tags[image_id]: + all_imagetags.extend(__create_ImageTag_list(image_id, ids_to_tags[image_id])) + + # Update all visited images with tags and set state to completed + data_access.update_tagged_images(all_imagetags, user_id) + + # Update visited but no tags identified images + data_access.update_completed_untagged_images(upload_data["imagesVisitedNoTag"], user_id) - # Update untagged images - DB_Access.update_untagged_images(connection, stats["imagesNotVisited"]) + # Update unvisited/incomplete images + data_access.update_incomplete_images(upload_data["imagesNotVisited"], user_id) return func.HttpResponse( - body = json.dumps(stats), - status_code = 200, - headers = { + body=json.dumps(upload_data), + status_code=200, + headers={ "content-type": "application/json" - } + } ) except Exception as e: return func.HttpResponse( "exception:" + str(e), - status_code = 500 + status_code=500 ) \ No newline at end of file From 779746704e296e76556e154fd1d9870da2f8ffce Mon Sep 17 00:00:00 2001 From: ackaufman <43971124+ackaufman@users.noreply.github.com> Date: Tue, 13 Nov 2018 15:44:24 -0700 Subject: [PATCH 072/145] Onboarding updates 2 (#37) * Added check to ensure uniqueness of URLs passed to the function. * Insignificant changes * UserId now passed as query parameter to OnboardingHttpTrigger function. --- functions/pipeline/onboarding/__init__.py | 22 ++++-- .../pipeline/onboarding/onboarding-client.py | 78 +++++++++---------- 2 files changed, 55 insertions(+), 45 deletions(-) diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index 9d3cbd75..7e87ba9a 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -13,10 +13,15 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') + user_id = req.params.get('userId') + + if not user_id: + return func.HttpResponse("userId query parameter invalid or omitted", status_code=401) + try: req_body = req.get_json() logging.error(req.get_json()) - url_list = req_body["imageUrls"] + raw_url_list = req_body["imageUrls"] except ValueError: print("Unable to decode JSON body") return func.HttpResponse("Unable to decode POST body", status_code=400) @@ -27,7 +32,8 @@ def main(req: func.HttpRequest) -> func.HttpResponse: image_object_list = [] image_name_list = [] - # TODO: Add check to ensure image URLs sent by client are all unique. + # Check to ensure image URLs sent by client are all unique. + url_list = set(raw_url_list) # TODO: Encapsulate this loop in a method # TODO: Wrap method in try/catch, send an appropriate http response in the event of an error @@ -48,10 +54,11 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.info("Connected.") # Create user id - user_id = data_access.create_user("testuser") # TODO: remove this hardcoding, should be passed in the request. + user_id_number = data_access.create_user(user_id) + logging.info("User id for {0} is {1}".format(user_id, str(user_id_number))) # Add new images to the database, and retrieve a dictionary ImageId's mapped to ImageUrl's - image_id_url_map = data_access.add_new_images(image_object_list,user_id) + image_id_url_map = data_access.add_new_images(image_object_list,user_id_number) # Print out dictionary for debugging logging.info("Image ID and URL map dictionary:") @@ -96,12 +103,15 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.info("Done.") # Delete the file from temp storage once it's been copied + # Note: The following delete code works. Commenting out for testing of other functions. + ''' logging.info("Now deleting image " + original_blob_name + " from temp storage container.") try: blob_service.delete_blob(copy_from_container, original_blob_name) print("Blob " + original_blob_name + " has been deleted successfully") except: print("Blob " + original_blob_name + " deletion failed") + ''' # Add image to the list of images to be returned in the response permanent_url_list.append(permanent_storage_path) @@ -109,12 +119,12 @@ def main(req: func.HttpRequest) -> func.HttpResponse: update_urls_dictionary[image_id] = permanent_storage_path logging.info("Now updating permanent URLs in the DB...") - data_access.update_image_urls(update_urls_dictionary, user_id) + data_access.update_image_urls(update_urls_dictionary, user_id_number) logging.info("Done.") # Construct response string of permanent URLs permanent_url_string = (", ".join(permanent_url_list)) # Return string containing list of URLs to images in permanent blob storage - return func.HttpResponse("The following images should now be added to the DB and exist in permanent blob storage: " + return func.HttpResponse("The following images should now be added to the DB and exist in permanent blob storage: \n" + permanent_url_string, status_code=200) diff --git a/functions/pipeline/onboarding/onboarding-client.py b/functions/pipeline/onboarding/onboarding-client.py index 203d4a46..bb7243a8 100644 --- a/functions/pipeline/onboarding/onboarding-client.py +++ b/functions/pipeline/onboarding/onboarding-client.py @@ -1,39 +1,39 @@ -# import requests -# -# # The following mock client imitates the CLI during the onboarding scenario for new images. -# # The expectation is that the CLI uploads images to a temporary blob store, then gets a list -# # of URLs to those images and passes the list to an HTTP trigger function in the format of -# # a JSON string. The HTTP trigger function creates rows in the database for the images, -# # retrieves the ImageId's for them, and then copies the images, each renamed as "ImageId.extension", -# # into a permanent blob storage container. The HTTP function returns the list of URLs to -# # the images in permanent blob storage. -# -# print("\nTest client for CLI Onboarding scenario") -# print('-' * 40) -# -# # functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/onboarding?code=lI1zl4IhiHcOcxTS85RsE7yZJXeNRxnr7tXSO1SrLWdpiN0W6hT3Jw==" -# functionURL = "http://localhost:7071/api/onboarding" -# # Sean's function URL: -# # functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/onboarding?code=lI1zl4IhiHcOcxTS85RsE7yZJXeNRxnr7tXSO1SrLWdpiN0W6hT3Jw==" -# # functionURL = "https://abrig-linux-func.azurewebsites.net/api/onboarding" -# -# urlList = { "imageUrls": ["https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies1.jpg", -# "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies2.jpg", -# "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies3.jpg"] } -# -# headers = {"Content-Type": "application/json"} -# -# print("Now executing POST request to onboard images...to:") -# print("Function URL: " + functionURL) -# print("Headers:") -# for key, value in headers.items(): -# print("\t" + key + ": " + value) -# response = requests.post(url=functionURL, headers=headers, json=urlList) -# print("Completed POST request.") -# -# raw_response = response.text -# response_array = raw_response.split(", ") -# response_output = "\n".join(response_array) -# -# print(f"Response status code: {response.status_code}") -# print(f"Response string: {response_output}") \ No newline at end of file +import requests +import json +import pg8000 + +# The following mock client imitates the CLI during the onboarding scenario for new images. +# The expectation is that the CLI uploads images to a temporary blob store, then gets a list +# of URLs to those images and passes the list to an HTTP trigger function in the format of +# a JSON string. The HTTP trigger function creates rows in the database for the images, +# retrieves the ImageId's for them, and then copies the images, each renamed as "ImageId.extension", +# into a permanent blob storage container. The HTTP function returns the list of URLs to +# the images in permanent blob storage. + +print("\nTest client for CLI Onboarding scenario") +print('-' * 40) + +# functionURL = "http://localhost:7071/api/onboarding?userId=aka" +functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/onboarding?userId=aka" + +urlList = { "imageUrls": ["https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies1.jpg", + "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies2.jpg", + "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies3.jpg", + "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies2.jpg"] } + +headers = {"Content-Type": "application/json"} + +print("Now executing POST request to onboard images...to:") +print("Function URL: " + functionURL) +print("Headers:") +for key, value in headers.items(): + print("\t" + key + ": " + value) +response = requests.post(url=functionURL, headers=headers, json=urlList) +print("Completed POST request.") + +raw_response = response.text +response_array = raw_response.split(", ") +response_output = "\n".join(response_array) + +print(f"Response status code: {response.status_code}") +print(f"Response string: {response_output}") From 79f124768ca602ca689ee4b1463bd1cff7ef2674 Mon Sep 17 00:00:00 2001 From: Jim Spring Date: Wed, 14 Nov 2018 13:14:10 -0800 Subject: [PATCH 073/145] deploy dsvm (#36) * deploy dsvm * add ssh key instructions --- devops/dsvm/config/dsvm_config.sh | 12 +++++++ devops/dsvm/deploy_dsvm.sh | 54 +++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 devops/dsvm/config/dsvm_config.sh create mode 100755 devops/dsvm/deploy_dsvm.sh diff --git a/devops/dsvm/config/dsvm_config.sh b/devops/dsvm/config/dsvm_config.sh new file mode 100644 index 00000000..3b266898 --- /dev/null +++ b/devops/dsvm/config/dsvm_config.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# System config +RESOURCE_GROUP=jmsrg1 + +# VM config +VM_SKU=Standard_NC6 +VM_IMAGE=microsoft-ads:linux-data-science-vm-ubuntu:linuxdsvmubuntu:latest +VM_DNS_NAME=jmsactlrnvm +VM_NAME=jmsactlrnvm +VM_ADMIN_USER=vmadmin +VM_SSH_KEY=~/.ssh/act-learn-key.pub \ No newline at end of file diff --git a/devops/dsvm/deploy_dsvm.sh b/devops/dsvm/deploy_dsvm.sh new file mode 100755 index 00000000..8bad88eb --- /dev/null +++ b/devops/dsvm/deploy_dsvm.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# Within the configuration file, there is a need for an SSH key. To generate an SSH +# key on Linux, one uses the ssk-keygen command. The format is: +# +# ssh-keygen -f ~/.ssh/act-learn-key -t rsa -b 2048 + +# Check if any of the args are empty +if [ -z "$1" ]; then + echo "Usage: 'sh $0 (configuration file)'" + exit 1 +fi + +# Does the configuration exist? +if [ ! -e "$1" ]; then + echo "Unable to find configuration file -- $1" + exit 1 +fi + +# Read in the configuration +. $1 + +# Check and see if Azure CLI is present +az --version > /dev/null +if [ "$?" -ne "0" ]; then + echo "Unable to find azure CLI" + exit 1 +fi + +# Is the ssh key present? +if [ ! -e "$VM_SSH_KEY" ]; then + echo "SSH key file does not exist -- $VM_SSH_KEY" + exit 1 +fi + +# Does the resource group exist +RESOURCE_GROUP_PRESENT=`az group exists --name $RESOURCE_GROUP` +if [ "$RESROUCE_GROUP_PRESENT" == "false" ]; then + echo "Resource group does not exist -- $RESOURCE_GROUP" + exit 1 +fi + +az vm create \ + --resource-group $RESOURCE_GROUP \ + --name $VM_NAME \ + --admin-username $VM_ADMIN_USER \ + --public-ip-address-dns-name $VM_DNS_NAME \ + --image $VM_IMAGE \ + --size $VM_SKU \ + --ssh-key-value $VM_SSH_KEY +if [ "$?" -ne "0" ]; then + echo "Unable to provision DSVM" + exit 1 +fi \ No newline at end of file From 6723bd3b7d5ad5bde551d315697a2e9e1ac26632 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Thu, 15 Nov 2018 10:37:56 -0800 Subject: [PATCH 074/145] Changes to the way we track users. Updated requirements.txt (#39) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Revised teh way we do user tracking. --- functions/pipeline/download/__init__.py | 8 ++++---- functions/pipeline/onboarding/__init__.py | 22 +++++++++++----------- functions/pipeline/requirements.txt | 2 +- functions/pipeline/upload/__init__.py | 15 ++++++++++----- requirements.txt | 2 +- 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py index 11a4e295..96f3965a 100644 --- a/functions/pipeline/download/__init__.py +++ b/functions/pipeline/download/__init__.py @@ -12,17 +12,17 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') image_count = int(req.params.get('imageCount')) - user_id = int(req.params.get('userId')) + user_name = req.params.get('userName') # setup response object headers = { "content-type": "application/json" } - if not user_id: + if not user_name: return func.HttpResponse( status_code=401, headers=headers, - body=json.dumps({"error": "invalid userId given or omitted"}) + body=json.dumps({"error": "invalid userName given or omitted"}) ) elif not image_count: return func.HttpResponse( @@ -34,7 +34,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: try: # DB configuration data_access = ImageTagDataAccess(get_postgres_provider()) - + user_id = data_access.create_user(user_name) image_urls = list(data_access.get_new_images(image_count, user_id)) # TODO: Populate starting json with tags, if any exist... (precomputed or retagging?) diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index 7e87ba9a..0961e3f2 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -1,5 +1,6 @@ import os import logging +import json import azure.functions as func from ..shared.db_provider import get_postgres_provider @@ -13,10 +14,14 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') - user_id = req.params.get('userId') + user_name = req.params.get('userName') - if not user_id: - return func.HttpResponse("userId query parameter invalid or omitted", status_code=401) + if not user_name: + return func.HttpResponse( + status_code=401, + headers={ "content-type": "application/json"}, + body=json.dumps({"error": "invalid userName given or omitted"}) + ) try: req_body = req.get_json() @@ -49,16 +54,11 @@ def main(req: func.HttpRequest) -> func.HttpResponse: image_object_list.append(image) # TODO: Wrap db access section in try/catch, send an appropriate http response in the event of an error - logging.info("Now connecting to database...") data_access = ImageTagDataAccess(get_postgres_provider()) - logging.info("Connected.") - - # Create user id - user_id_number = data_access.create_user(user_id) - logging.info("User id for {0} is {1}".format(user_id, str(user_id_number))) + user_id = data_access.create_user(user_name) # Add new images to the database, and retrieve a dictionary ImageId's mapped to ImageUrl's - image_id_url_map = data_access.add_new_images(image_object_list,user_id_number) + image_id_url_map = data_access.add_new_images(image_object_list,user_id) # Print out dictionary for debugging logging.info("Image ID and URL map dictionary:") @@ -119,7 +119,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: update_urls_dictionary[image_id] = permanent_storage_path logging.info("Now updating permanent URLs in the DB...") - data_access.update_image_urls(update_urls_dictionary, user_id_number) + data_access.update_image_urls(update_urls_dictionary, user_id) logging.info("Done.") # Construct response string of permanent URLs diff --git a/functions/pipeline/requirements.txt b/functions/pipeline/requirements.txt index fbf84768..41de3ac2 100644 --- a/functions/pipeline/requirements.txt +++ b/functions/pipeline/requirements.txt @@ -1,6 +1,6 @@ azure-functions==1.0.0a5 azure-functions-worker==1.0.0a6 -azure-storage +azure-storage-blob==1.4.0 grpcio==1.14.2 grpcio-tools==1.14.2 protobuf==3.6.1 diff --git a/functions/pipeline/upload/__init__.py b/functions/pipeline/upload/__init__.py index 417dc1e4..9fd4a701 100644 --- a/functions/pipeline/upload/__init__.py +++ b/functions/pipeline/upload/__init__.py @@ -19,11 +19,18 @@ def main(req: func.HttpRequest) -> func.HttpResponse: # TODO: Create if check for userId and valid json checks? vott_json = req.get_json() upload_data = process_vott_json(vott_json) - user_id = int(req.params.get('userId')) - upload_data['userId'] = user_id + user_name = req.params.get('userName') + + if not user_name: + return func.HttpResponse( + status_code=401, + headers={ "content-type": "application/json"}, + body=json.dumps({"error": "invalid userName given or omitted"}) + ) # DB configuration data_access = ImageTagDataAccess(get_postgres_provider()) + user_id = data_access.create_user(user_name) # Update tagged images ids_to_tags = upload_data["imageIdToTags"] @@ -45,9 +52,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: return func.HttpResponse( body=json.dumps(upload_data), status_code=200, - headers={ - "content-type": "application/json" - } + headers={ "content-type": "application/json"}, ) except Exception as e: return func.HttpResponse( diff --git a/requirements.txt b/requirements.txt index 9de0ccd9..b6871c9c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ azure-functions==1.0.0a5 azure-functions-worker==1.0.0a6 -azure-storage +azure-storage-blob==1.4.0 grpcio==1.14.2 grpcio-tools==1.14.2 protobuf==3.6.1 From 34acdacd39572ac404b120fed26da1d9463e601e Mon Sep 17 00:00:00 2001 From: ackaufman <43971124+ackaufman@users.noreply.github.com> Date: Thu, 15 Nov 2018 14:14:06 -0700 Subject: [PATCH 075/145] Onboarding updates 3 (#38) * Added exception handling for copy/delete blob operations. * Added exception handling for connection database. * Separated out blob manipulation code into a module * Dependency injection refactor. Renamed blob manipulation module and function. * Changes * Fixed return status code for when an image copy/delete operation fails. Now returns 401 instead of 200. * Wrapped code to build image object list into a function, and added try/catch in case of an error. * Code cleanup and more descriptive comments. * PR comment - deleted unnecessary module import. --- functions/pipeline/onboarding/__init__.py | 142 +++++++----------- .../pipeline/onboarding/onboarding-client.py | 39 ----- .../pipeline/shared/onboarding/__init__.py | 52 +++++++ 3 files changed, 105 insertions(+), 128 deletions(-) delete mode 100644 functions/pipeline/onboarding/onboarding-client.py create mode 100644 functions/pipeline/shared/onboarding/__init__.py diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index 0961e3f2..01429488 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -5,12 +5,9 @@ from ..shared.db_provider import get_postgres_provider from ..shared.db_access import ImageTagDataAccess, ImageInfo +from ..shared.onboarding import copy_images_to_permanent_storage from azure.storage.blob import BlockBlobService -# TODO: User id as param to function - holding off until further discussion -# regarding whether user ID should be generated/looked up by the CLI or -# from within this function - def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') @@ -28,103 +25,70 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.error(req.get_json()) raw_url_list = req_body["imageUrls"] except ValueError: - print("Unable to decode JSON body") - return func.HttpResponse("Unable to decode POST body", status_code=400) - - logging.error(req_body) + logging.error("ERROR: Unable to decode JSON body") + return func.HttpResponse("ERROR: Unable to decode POST body", status_code=400) - # Build list of image objects to pass to DAL for insertion into DB. - image_object_list = [] - image_name_list = [] + if not raw_url_list: + return func.HttpResponse("ERROR: URL list empty.", status_code=401) # Check to ensure image URLs sent by client are all unique. url_list = set(raw_url_list) - # TODO: Encapsulate this loop in a method - # TODO: Wrap method in try/catch, send an appropriate http response in the event of an error - for url in url_list: - # Split original image name from URL - original_filename = url.split("/")[-1] - image_name_list.append(original_filename) - # Create ImageInfo object (def in db_access.py) - # Note: For testing, default image height/width are set to 50x50 - # TODO: Figure out where actual height/width need to come from - image = ImageInfo(original_filename, url, 50, 50) - # Append image object to the list - image_object_list.append(image) + # Get list of image objects to pass to DAL for insertion into DB. + try: + image_object_list = build_objects_from_url_list(url_list) + except Exception as e: + logging.error("ERROR: Could not build image object list. Exception: " + str(e)) + return func.HttpResponse("ERROR: Could not build image object list.", status_code=401) - # TODO: Wrap db access section in try/catch, send an appropriate http response in the event of an error - data_access = ImageTagDataAccess(get_postgres_provider()) - user_id = data_access.create_user(user_name) + # Connect to database. + try: + logging.info("Now connecting to database...") + data_access = ImageTagDataAccess(get_postgres_provider()) + logging.info("Connected.") + except Exception as e: + logging.error("ERROR: Database connection failed. Exception: " + str(e)) + return func.HttpResponse("ERROR: Unable to connect to database", status_code=503) + + # Create/get user id + user_id_number = data_access.create_user(user_id) + logging.info("User id for {0} is {1}".format(user_id, str(user_id_number))) # Add new images to the database, and retrieve a dictionary ImageId's mapped to ImageUrl's image_id_url_map = data_access.add_new_images(image_object_list,user_id) - # Print out dictionary for debugging - logging.info("Image ID and URL map dictionary:") - logging.info(image_id_url_map) - - # Copy over images to permanent blob store and save URLs in a list - permanent_url_list = [] - update_urls_dictionary = {} - - # TODO: Add check to make sure image exists in temp storage before attempting these operations - # TODO: Put blob storage manipulation into a separate function and add to shared codebase - # TODO: Try/catch to distinguish among errors - for key, value in image_id_url_map.items(): + copy_source = os.getenv('SOURCE_CONTAINER_NAME') + copy_destination = os.getenv('DESTINATION_CONTAINER_NAME') - # Verbose logging for testing - logging.info("Key: " + key) - logging.info("Value: " + str(value)) + # Create blob service for storage account + blob_service = BlockBlobService(account_name=os.getenv('STORAGE_ACCOUNT_NAME'), account_key=os.getenv('STORAGE_ACCOUNT_KEY')) - original_image_url = key - original_blob_name = original_image_url.split("/")[-1] - file_extension = os.path.splitext(original_image_url)[1] - image_id = value - new_blob_name = (str(image_id) + file_extension) - copy_from_container = os.getenv('SOURCE_CONTAINER_NAME') - copy_to_container = os.getenv('DESTINATION_CONTAINER_NAME') - permanent_storage_path = "https://{0}.blob.core.windows.net/{0}/{1}".format(copy_from_container, new_blob_name) + # Copy images to permanent storage and get a dictionary of images for which to update URLs in DB. + # TODO: Prefer to have this function return a JSON blob as a string containing a list of successes + # and a list of failures. If the list of failures contains any items, return a status code other than 200. + update_urls_dictionary = copy_images_to_permanent_storage(image_id_url_map, copy_source, copy_destination, blob_service) - # Verbose logging for testing - logging.info("Original image URL: " + original_image_url) - logging.info("Original image name: " + original_blob_name) - logging.info("File extension: " + file_extension) - logging.info("Image ID: " + str(image_id)) - logging.info("New blob name: " + new_blob_name) - logging.info("Now copying file from temporary to permanent storage...") - logging.info("Permanent image URL: " + permanent_storage_path) - - blob_service = BlockBlobService(account_name=os.getenv('STORAGE_ACCOUNT_NAME'), account_key=os.getenv('STORAGE_ACCOUNT_KEY')) - source_blob_url = blob_service.make_blob_url(copy_from_container, original_blob_name) - - # TODO: Exception handling in case blob cannot be copied for some reason. - blob_service.copy_blob(copy_to_container, new_blob_name, source_blob_url) + # If the dictionary of images is empty, this means a faiure occurred in a copy/delete operation. + # Otherwise, dictionary contains permanent image URLs for each image ID that was successfully copied. + if not update_urls_dictionary: + return func.HttpResponse("ERROR: Image copy/delete operation failed. Check state of images in storage.", status_code=401) + else: + logging.info("Now updating permanent URLs in the DB...") + data_access.update_image_urls(update_urls_dictionary, user_id_number) logging.info("Done.") + # Return string containing list of URLs to images in permanent blob storage + return func.HttpResponse("Images were successfully added to the database and copied to permanent storage.", status_code=200) - # Delete the file from temp storage once it's been copied - # Note: The following delete code works. Commenting out for testing of other functions. - ''' - logging.info("Now deleting image " + original_blob_name + " from temp storage container.") - try: - blob_service.delete_blob(copy_from_container, original_blob_name) - print("Blob " + original_blob_name + " has been deleted successfully") - except: - print("Blob " + original_blob_name + " deletion failed") - ''' - - # Add image to the list of images to be returned in the response - permanent_url_list.append(permanent_storage_path) - # Add ImageId and permanent storage url to new dictionary to be sent to update function - update_urls_dictionary[image_id] = permanent_storage_path - - logging.info("Now updating permanent URLs in the DB...") - data_access.update_image_urls(update_urls_dictionary, user_id) - logging.info("Done.") - - # Construct response string of permanent URLs - permanent_url_string = (", ".join(permanent_url_list)) - - # Return string containing list of URLs to images in permanent blob storage - return func.HttpResponse("The following images should now be added to the DB and exist in permanent blob storage: \n" - + permanent_url_string, status_code=200) +# Given a list ofnimage URL's, build an ImageInfo object for each, and return a list of these image objects. +def build_objects_from_url_list(url_list): + image_object_list = [] + for url in url_list: + # Split original image name from URL + original_filename = url.split("/")[-1] + # Create ImageInfo object (def in db_access.py) + # TODO: Figure out where actual height/width need to come from. Values are hard-coded for testing. + image = ImageInfo(original_filename, url, 50, 50) + # Append image object to the list + image_object_list.append(image) + return image_object_list + \ No newline at end of file diff --git a/functions/pipeline/onboarding/onboarding-client.py b/functions/pipeline/onboarding/onboarding-client.py deleted file mode 100644 index bb7243a8..00000000 --- a/functions/pipeline/onboarding/onboarding-client.py +++ /dev/null @@ -1,39 +0,0 @@ -import requests -import json -import pg8000 - -# The following mock client imitates the CLI during the onboarding scenario for new images. -# The expectation is that the CLI uploads images to a temporary blob store, then gets a list -# of URLs to those images and passes the list to an HTTP trigger function in the format of -# a JSON string. The HTTP trigger function creates rows in the database for the images, -# retrieves the ImageId's for them, and then copies the images, each renamed as "ImageId.extension", -# into a permanent blob storage container. The HTTP function returns the list of URLs to -# the images in permanent blob storage. - -print("\nTest client for CLI Onboarding scenario") -print('-' * 40) - -# functionURL = "http://localhost:7071/api/onboarding?userId=aka" -functionURL = "https://onboardinghttptrigger.azurewebsites.net/api/onboarding?userId=aka" - -urlList = { "imageUrls": ["https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies1.jpg", - "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies2.jpg", - "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies3.jpg", - "https://akaonboardingstorage.blob.core.windows.net/aka-temp-source-container/puppies2.jpg"] } - -headers = {"Content-Type": "application/json"} - -print("Now executing POST request to onboard images...to:") -print("Function URL: " + functionURL) -print("Headers:") -for key, value in headers.items(): - print("\t" + key + ": " + value) -response = requests.post(url=functionURL, headers=headers, json=urlList) -print("Completed POST request.") - -raw_response = response.text -response_array = raw_response.split(", ") -response_output = "\n".join(response_array) - -print(f"Response status code: {response.status_code}") -print(f"Response string: {response_output}") diff --git a/functions/pipeline/shared/onboarding/__init__.py b/functions/pipeline/shared/onboarding/__init__.py new file mode 100644 index 00000000..59b814c3 --- /dev/null +++ b/functions/pipeline/shared/onboarding/__init__.py @@ -0,0 +1,52 @@ +import os +import logging + +# TODO: Modify this function to return a JSON string that contains a "succeeded" list and a "failed" list. +def copy_images_to_permanent_storage(image_id_url_map, copy_source, copy_destination, blob_service): + # Create a dictionary to store map of new permanent image URLs to image ID's + update_urls_dictionary = {} + + # Copy images from temporary to permanent storage and delete them. + for key, value in image_id_url_map.items(): + original_image_url = key + original_blob_name = original_image_url.split("/")[-1] + file_extension = os.path.splitext(original_image_url)[1] + image_id = value + new_blob_name = (str(image_id) + file_extension) + + # Verbose logging for testing + logging.info("Original image name: " + original_blob_name) + logging.info("Image ID: " + str(image_id)) + logging.info("New blob name: " + new_blob_name) + + # Create the blob URLs + source_blob_path = blob_service.make_blob_url(copy_source, original_blob_name) + destination_blob_path = blob_service.make_blob_url(copy_destination, new_blob_name) + + # Copy blob from temp storage to permanent storage + try: + logging.info("Now copying file from temporary to permanent storage...") + logging.info("Source path: " + source_blob_path) + logging.info("Destination path: " + destination_blob_path) + blob_service.copy_blob(copy_destination, new_blob_name, source_blob_path) + logging.info("Done.") + + # Add ImageId and permanent storage url to new dictionary to be sent to update function + update_urls_dictionary[image_id] = destination_blob_path + + # Delete the file from temp storage once it's been copied + logging.info("Now deleting image " + original_blob_name + " from temp storage container.") + try: + blob_service.delete_blob(copy_source, original_blob_name) + logging.info("Blob " + original_blob_name + " has been deleted successfully") + except Exception as e: + logging.error("ERROR: Deletion of blob " + original_blob_name + " failed. Exception: " + str(e)) + update_urls_dictionary.clear() + return update_urls_dictionary + + except Exception as e: + logging.error("ERROR: Copy of blob " + original_blob_name + " failed. Exception: " + str(e)) + update_urls_dictionary.clear() + return update_urls_dictionary + + return update_urls_dictionary From ad030b9c7cb6367af30371e7b58e96a18949361f Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Thu, 15 Nov 2018 17:11:43 -0800 Subject: [PATCH 076/145] Changes to support end to end operations of image tag management via CLI (#41) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Revised teh way we do user tracking. * Using logging pkg. Username integration in CLI. Clean up * Using logging pkg. Username integration in CLI. Clean up * Requiring that onboard have an argument in CLI * Added comment * Adding version to package dependency --- cli/cli.py | 4 +- cli/operations.py | 54 ++++++++----- functions/pipeline/onboarding/__init__.py | 76 +++++++++---------- functions/pipeline/requirements.txt | 1 + .../pipeline/shared/db_access/db_access_v2.py | 39 +++++----- .../pipeline/shared/onboarding/__init__.py | 18 ++--- functions/pipeline/upload/__init__.py | 8 +- requirements.txt | 1 + 8 files changed, 113 insertions(+), 88 deletions(-) diff --git a/cli/cli.py b/cli/cli.py index e6997383..737074e1 100644 --- a/cli/cli.py +++ b/cli/cli.py @@ -32,7 +32,9 @@ if operation == 'download': download(config, args.num_images) - elif operation == 'onboard': + elif operation == 'onboard' and not args.folder: + print ("--folder arg required for onboard operation") + elif operation == 'onboard' and args.folder: onboard(config, args.folder) else: upload(config) diff --git a/cli/operations.py b/cli/operations.py index 13319c80..fd7ae237 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -6,7 +6,8 @@ import pathlib import json import copy -from azure.storage.blob import BlockBlobService, ContentSettings +from azure.storage.blob.blockblobservice import BlockBlobService +from azure.storage.file import ContentSettings FUNCTIONS_SECTION = 'FUNCTIONS' FUNCTIONS_KEY = 'FUNCTIONS_KEY' @@ -38,7 +39,7 @@ class MissingConfigException(Exception): class ImageLimitException(Exception): pass - +#TODO: Verify the storage account is correct. Currently we get an unhelpful error message if you have a type in Storage Name def get_azure_storage_client(config): # Todo: Move away from global client. global azure_storage_client @@ -53,11 +54,12 @@ def get_azure_storage_client(config): return azure_storage_client - +#TODO We should create the container if it does not exist def onboard(config, folder_name): blob_storage = get_azure_storage_client(config) uri = 'https://' + config.get("storage_account") + '.blob.core.windows.net/' + config.get("storage_container") + '/' functions_url = config.get('url') + '/api/onboarding' + user_name = config.get("tagging_user") images = [] for image in os.listdir(folder_name): if image.lower().endswith('.png') or image.lower().endswith('.jpg') or image.lower().endswith('.jpeg') or image.lower().endswith('.gif'): @@ -73,11 +75,17 @@ def onboard(config, folder_name): data['imageUrls'] = images headers = {'content-type': 'application/json'} query = { - "code": config.get('key') + "code": config.get('key'), + "userName": user_name } + #TODO: Ensure we don't get 4xx or 5xx return codes response = requests.post(functions_url, data=json.dumps(data), headers=headers, params=query) - print("Images successfully uploaded. \n" + response.text) + json_resp = response.json() + count = len(json_resp['imageUrls']) + print("Successfully uploaded " + str(count) + " images.") + for url in json_resp['imageUrls']: + print(url) def _download_bounds(num_images): @@ -95,9 +103,11 @@ def _download_bounds(num_images): def download(config, num_images, strategy=None): # TODO: better/more proper URI handling. functions_url = config.get("url") + "/api/download" + user_name = config.get("tagging_user") images_to_download = _download_bounds(num_images) query = { - "imageCount": images_to_download + "imageCount": images_to_download, + "userName": user_name } response = requests.get(functions_url, params=query) @@ -123,9 +133,12 @@ def download(config, num_images, strategy=None): exist_ok=True ) - download_images(config, data_dir, json_resp) - print("Downloaded files. Ready to tag!") - return images_to_download + local_images = download_images(config, data_dir, json_resp) + count = len(local_images) + print("Successfully downloaded " + str(count) + " images.") + for image_path in local_images: + print(image_path) + print("Ready to tag!") def download_images(config, image_dir, json_resp): @@ -135,25 +148,23 @@ def download_images(config, image_dir, json_resp): write_vott_data(image_dir, json_resp) urls = json_resp['imageUrls'] - dummy = "https://cdn.pixabay.com/photo/2017/02/20/18/03/cat-2083492_960_720.jpg" - + downloaded_file_paths = [] for index in range(len(urls)): url = urls[index] - # file will look something like - # https://csehackstorage.blob.core.windows.net/image-to-tag/image4.jpeg - # need to massage it to get the last portion. - file_name = url.split('/')[-1] - # todo: change this when we get actual data. - response = requests.get(dummy) + #TODO: We will download an empty file if we get a permission error on the blob store URL + # We should raise an exception. For now the blob store must be publically accessible + response = requests.get(url) file_path = pathlib.Path(image_dir / file_name) with open(str(file_path), "wb") as file: for chunk in response.iter_content(chunk_size=128): file.write(chunk) file.close() + downloaded_file_paths.append(file_path) + return downloaded_file_paths def write_vott_data(image_dir, json_resp): @@ -197,6 +208,7 @@ def prepend_file_paths(image_dir, vott_json): def upload(config): functions_url = config.get("url") + "/api/upload" + user_name = config.get("tagging_user") tagging_location = pathlib.Path( os.path.expanduser(config.get("tagging_location")) ) @@ -210,7 +222,11 @@ def upload(config): # Munge the vott json file. munged_json = trim_file_paths(json_data) - response = requests.post(functions_url, json=munged_json) + query = { + "userName": user_name + } + + response = requests.post(functions_url, json=munged_json, params=query) response.raise_for_status() resp_json = response.json() @@ -229,6 +245,8 @@ def trim_file_paths(json_data): munged_visited_frames = [] for frame_path in visited_frames: + #TODO: This line assumes that the visited frames name is a full path. + # Centralize this business logic in the codebase. It probably exists in shared code too munged_visited_frames.append( pathlib.Path(frame_path).name ) diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index 01429488..5b1cb4f2 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -7,6 +7,7 @@ from ..shared.db_access import ImageTagDataAccess, ImageInfo from ..shared.onboarding import copy_images_to_permanent_storage from azure.storage.blob import BlockBlobService +DEFAULT_RETURN_HEADER= { "content-type": "application/json"} def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') @@ -16,16 +17,15 @@ def main(req: func.HttpRequest) -> func.HttpResponse: if not user_name: return func.HttpResponse( status_code=401, - headers={ "content-type": "application/json"}, + headers=DEFAULT_RETURN_HEADER, body=json.dumps({"error": "invalid userName given or omitted"}) ) try: req_body = req.get_json() - logging.error(req.get_json()) + logging.debug(req.get_json()) raw_url_list = req_body["imageUrls"] except ValueError: - logging.error("ERROR: Unable to decode JSON body") return func.HttpResponse("ERROR: Unable to decode POST body", status_code=400) if not raw_url_list: @@ -34,50 +34,49 @@ def main(req: func.HttpRequest) -> func.HttpResponse: # Check to ensure image URLs sent by client are all unique. url_list = set(raw_url_list) - # Get list of image objects to pass to DAL for insertion into DB. try: image_object_list = build_objects_from_url_list(url_list) except Exception as e: logging.error("ERROR: Could not build image object list. Exception: " + str(e)) return func.HttpResponse("ERROR: Could not build image object list.", status_code=401) - # Connect to database. try: - logging.info("Now connecting to database...") data_access = ImageTagDataAccess(get_postgres_provider()) - logging.info("Connected.") + user_id= data_access.create_user(user_name) + + logging.debug("Add new images to the database, and retrieve a dictionary ImageId's mapped to ImageUrl's") + image_id_url_map = data_access.add_new_images(image_object_list,user_id) + + copy_source = os.getenv('SOURCE_CONTAINER_NAME') + copy_destination = os.getenv('DESTINATION_CONTAINER_NAME') + + # Create blob service for storage account + blob_service = BlockBlobService(account_name=os.getenv('STORAGE_ACCOUNT_NAME'), account_key=os.getenv('STORAGE_ACCOUNT_KEY')) + + # Copy images to permanent storage and get a dictionary of images for which to update URLs in DB. + # TODO: Prefer to have this function return a JSON blob as a string containing a list of successes + # and a list of failures. If the list of failures contains any items, return a status code other than 200. + update_urls_dictionary = copy_images_to_permanent_storage(image_id_url_map, copy_source, copy_destination, blob_service) + + # If the dictionary of images is empty, this means a faiure occurred in a copy/delete operation. + # Otherwise, dictionary contains permanent image URLs for each image ID that was successfully copied. + if not update_urls_dictionary: + return func.HttpResponse("ERROR: Image copy/delete operation failed. Check state of images in storage.", status_code=401) + else: + logging.debug("Now updating permanent URLs in the DB...") + data_access.update_image_urls(update_urls_dictionary, user_id) + + content = json.dumps({"imageUrls":list(update_urls_dictionary.values())}) + return func.HttpResponse( + status_code=200, + headers=DEFAULT_RETURN_HEADER, + body=content + ) + except Exception as e: - logging.error("ERROR: Database connection failed. Exception: " + str(e)) - return func.HttpResponse("ERROR: Unable to connect to database", status_code=503) - - # Create/get user id - user_id_number = data_access.create_user(user_id) - logging.info("User id for {0} is {1}".format(user_id, str(user_id_number))) - - # Add new images to the database, and retrieve a dictionary ImageId's mapped to ImageUrl's - image_id_url_map = data_access.add_new_images(image_object_list,user_id) - - copy_source = os.getenv('SOURCE_CONTAINER_NAME') - copy_destination = os.getenv('DESTINATION_CONTAINER_NAME') - - # Create blob service for storage account - blob_service = BlockBlobService(account_name=os.getenv('STORAGE_ACCOUNT_NAME'), account_key=os.getenv('STORAGE_ACCOUNT_KEY')) - - # Copy images to permanent storage and get a dictionary of images for which to update URLs in DB. - # TODO: Prefer to have this function return a JSON blob as a string containing a list of successes - # and a list of failures. If the list of failures contains any items, return a status code other than 200. - update_urls_dictionary = copy_images_to_permanent_storage(image_id_url_map, copy_source, copy_destination, blob_service) - - # If the dictionary of images is empty, this means a faiure occurred in a copy/delete operation. - # Otherwise, dictionary contains permanent image URLs for each image ID that was successfully copied. - if not update_urls_dictionary: - return func.HttpResponse("ERROR: Image copy/delete operation failed. Check state of images in storage.", status_code=401) - else: - logging.info("Now updating permanent URLs in the DB...") - data_access.update_image_urls(update_urls_dictionary, user_id_number) - logging.info("Done.") - # Return string containing list of URLs to images in permanent blob storage - return func.HttpResponse("Images were successfully added to the database and copied to permanent storage.", status_code=200) + logging.error("Exception: " + str(e)) + return func.HttpResponse("Internal error occured", status_code=503) + # Given a list ofnimage URL's, build an ImageInfo object for each, and return a list of these image objects. def build_objects_from_url_list(url_list): @@ -91,4 +90,3 @@ def build_objects_from_url_list(url_list): # Append image object to the list image_object_list.append(image) return image_object_list - \ No newline at end of file diff --git a/functions/pipeline/requirements.txt b/functions/pipeline/requirements.txt index 41de3ac2..1ee794f5 100644 --- a/functions/pipeline/requirements.txt +++ b/functions/pipeline/requirements.txt @@ -1,6 +1,7 @@ azure-functions==1.0.0a5 azure-functions-worker==1.0.0a6 azure-storage-blob==1.4.0 +azure-storage-file==1.4.0 grpcio==1.14.2 grpcio-tools==1.14.2 protobuf==3.6.1 diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index ed020ec3..c174f57b 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -2,6 +2,7 @@ import string # import os # import time +import logging import random from enum import IntEnum, unique import getpass @@ -44,9 +45,9 @@ def test_connection(self): cursor = conn.cursor() cursor.execute('select * from tagstate') row = cursor.fetchone() - print() + logging.info('') while row: - print(str(row[0]) + " " + str(row[1])) + logging.info(str(row[0]) + " " + str(row[1])) row = cursor.fetchone() def create_user(self,user_name): @@ -63,7 +64,7 @@ def create_user(self,user_name): conn.commit() finally: cursor.close() except Exception as e: - print("An error occured creating a user: {0}".format(e)) + logging.error("An error occured creating a user: {0}".format(e)) raise finally: conn.close() return user_id @@ -82,12 +83,12 @@ def get_new_images(self, number_of_images, user_id): "a.createddtim DESC limit {0}") cursor.execute(query.format(number_of_images, ImageTagState.READY_TO_TAG, ImageTagState.INCOMPLETE_TAG)) for row in cursor: - print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) + logging.debug('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) selected_images_to_tag[str(row[0])] = str(row[1]) self._update_images(selected_images_to_tag,ImageTagState.TAG_IN_PROGRESS, user_id, conn) finally: cursor.close() except Exception as e: - print("An errors occured getting images: {0}".format(e)) + logging.error("An errors occured getting images: {0}".format(e)) raise finally: conn.close() return selected_images_to_tag.values() @@ -111,9 +112,9 @@ def add_new_images(self,list_of_image_infos, user_id): url_to_image_id_map[img.image_location] = new_img_id conn.commit() finally: cursor.close() - print("Inserted {0} images to the DB".format(len(url_to_image_id_map))) + logging.debug("Inserted {0} images to the DB".format(len(url_to_image_id_map))) except Exception as e: - print("An errors occured getting image ids: {0}".format(e)) + logging.error("An errors occured getting image ids: {0}".format(e)) raise finally: conn.close() return url_to_image_id_map @@ -121,12 +122,12 @@ def add_new_images(self,list_of_image_infos, user_id): def update_incomplete_images(self, list_of_image_ids, user_id): #TODO: Make sure the image ids are in a TAG_IN_PROGRESS state self._update_images(list_of_image_ids,ImageTagState.INCOMPLETE_TAG,user_id, self._db_provider.get_connection()) - print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.INCOMPLETE_TAG.name)) + logging.debug("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.INCOMPLETE_TAG.name)) def update_completed_untagged_images(self,list_of_image_ids, user_id): #TODO: Make sure the image ids are in a TAG_IN_PROGRESS state self._update_images(list_of_image_ids,ImageTagState.COMPLETED_TAG,user_id, self._db_provider.get_connection()) - print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.COMPLETED_TAG.name)) + logging.debug("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.COMPLETED_TAG.name)) def _update_images(self, list_of_image_ids, new_image_tag_state, user_id, conn): if not isinstance(new_image_tag_state, ImageTagState): @@ -150,9 +151,9 @@ def _update_images(self, list_of_image_ids, new_image_tag_state, user_id, conn): conn.commit() finally: cursor.close() else: - print("No images to update") + logging.debug("No images to update") except Exception as e: - print("An errors occured updating images: {0}".format(e)) + logging.error("An errors occured updating images: {0}".format(e)) raise def update_image_urls(self,image_id_to_url_map, user_id): @@ -169,12 +170,12 @@ def update_image_urls(self,image_id_to_url_map, user_id): query = "UPDATE Image_Info SET ImageLocation = '{0}', ModifiedDtim = now() WHERE ImageId = {1}" cursor.execute(query.format(new_url,image_id)) conn.commit() - print("Updated ImageId: {0} to new ImageLocation: {1}".format(image_id,new_url)) + logging.debug("Updated ImageId: {0} to new ImageLocation: {1}".format(image_id,new_url)) self._update_images([image_id],ImageTagState.READY_TO_TAG, user_id,conn) - print("ImageId: {0} to has a new state: {1}".format(image_id,ImageTagState.READY_TO_TAG.name)) + logging.debug("ImageId: {0} to has a new state: {1}".format(image_id,ImageTagState.READY_TO_TAG.name)) finally: cursor.close() except Exception as e: - print("An errors occured updating image urls: {0}".format(e)) + logging.error("An errors occured updating image urls: {0}".format(e)) raise finally: conn.close() @@ -208,10 +209,10 @@ def update_tagged_images(self,list_of_image_tags, user_id): cursor.execute(query.format(img_tag.image_id,img_tag.x_min,img_tag.x_max,img_tag.y_min,img_tag.y_max,user_id,classifications)) self._update_images([img_id],ImageTagState.COMPLETED_TAG,user_id,conn) conn.commit() - print("Updated {0} image tags".format(len(list_of_image_tags))) + logging.debug("Updated {0} image tags".format(len(list_of_image_tags))) finally: cursor.close() except Exception as e: - print("An errors occured updating tagged image: {0}".format(e)) + logging.error("An errors occured updating tagged image: {0}".format(e)) raise finally: conn.close() @@ -232,7 +233,7 @@ def main(): db_config = DatabaseInfo("","","","") data_access = ImageTagDataAccess(PostGresProvider(db_config)) user_id = data_access.create_user(getpass.getuser()) - print("The user id for '{0}' is {1}".format(getpass.getuser(),user_id)) + logging.info("The user id for '{0}' is {1}".format(getpass.getuser(),user_id)) list_of_image_infos = generate_test_image_infos(5) url_to_image_id_map = data_access.add_new_images(list_of_image_infos,user_id) @@ -269,4 +270,8 @@ def id_generator(size=6, chars=string.ascii_uppercase + string.digits): return ''.join(random.choice(chars) for _ in range(size)) if __name__ == "__main__": + #Log to console when run locally + console = logging.StreamHandler() + log = logging.getLogger() + log.addHandler(console) main() diff --git a/functions/pipeline/shared/onboarding/__init__.py b/functions/pipeline/shared/onboarding/__init__.py index 59b814c3..3d0a58d0 100644 --- a/functions/pipeline/shared/onboarding/__init__.py +++ b/functions/pipeline/shared/onboarding/__init__.py @@ -15,9 +15,9 @@ def copy_images_to_permanent_storage(image_id_url_map, copy_source, copy_destina new_blob_name = (str(image_id) + file_extension) # Verbose logging for testing - logging.info("Original image name: " + original_blob_name) - logging.info("Image ID: " + str(image_id)) - logging.info("New blob name: " + new_blob_name) + logging.debug("Original image name: " + original_blob_name) + logging.debug("Image ID: " + str(image_id)) + logging.debug("New blob name: " + new_blob_name) # Create the blob URLs source_blob_path = blob_service.make_blob_url(copy_source, original_blob_name) @@ -25,20 +25,20 @@ def copy_images_to_permanent_storage(image_id_url_map, copy_source, copy_destina # Copy blob from temp storage to permanent storage try: - logging.info("Now copying file from temporary to permanent storage...") - logging.info("Source path: " + source_blob_path) - logging.info("Destination path: " + destination_blob_path) + logging.debug("Now copying file from temporary to permanent storage...") + logging.debug("Source path: " + source_blob_path) + logging.debug("Destination path: " + destination_blob_path) blob_service.copy_blob(copy_destination, new_blob_name, source_blob_path) - logging.info("Done.") + logging.debug("Done.") # Add ImageId and permanent storage url to new dictionary to be sent to update function update_urls_dictionary[image_id] = destination_blob_path # Delete the file from temp storage once it's been copied - logging.info("Now deleting image " + original_blob_name + " from temp storage container.") + logging.debug("Now deleting image " + original_blob_name + " from temp storage container.") try: blob_service.delete_blob(copy_source, original_blob_name) - logging.info("Blob " + original_blob_name + " has been deleted successfully") + logging.debug("Blob " + original_blob_name + " has been deleted successfully") except Exception as e: logging.error("ERROR: Deletion of blob " + original_blob_name + " failed. Exception: " + str(e)) update_urls_dictionary.clear() diff --git a/functions/pipeline/upload/__init__.py b/functions/pipeline/upload/__init__.py index 9fd4a701..f229224b 100644 --- a/functions/pipeline/upload/__init__.py +++ b/functions/pipeline/upload/__init__.py @@ -1,5 +1,5 @@ import json - +import logging from ..shared.vott_parser import process_vott_json from ..shared.db_provider import get_postgres_provider from ..shared.db_access import ImageTag, ImageTagDataAccess @@ -40,13 +40,13 @@ def main(req: func.HttpRequest) -> func.HttpResponse: if ids_to_tags[image_id]: all_imagetags.extend(__create_ImageTag_list(image_id, ids_to_tags[image_id])) - # Update all visited images with tags and set state to completed + logging.info("Update all visited images with tags and set state to completed") data_access.update_tagged_images(all_imagetags, user_id) - # Update visited but no tags identified images + logging.info("Update visited but no tags identified images") data_access.update_completed_untagged_images(upload_data["imagesVisitedNoTag"], user_id) - # Update unvisited/incomplete images + logging.info("Update unvisited/incomplete images") data_access.update_incomplete_images(upload_data["imagesNotVisited"], user_id) return func.HttpResponse( diff --git a/requirements.txt b/requirements.txt index b6871c9c..6251e5a4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ azure-functions==1.0.0a5 azure-functions-worker==1.0.0a6 azure-storage-blob==1.4.0 +azure-storage-file==1.4.0 grpcio==1.14.2 grpcio-tools==1.14.2 protobuf==3.6.1 From 80a2c291905bb0d298fd653e0ef51d7e395e5bb0 Mon Sep 17 00:00:00 2001 From: Jim Spring Date: Mon, 19 Nov 2018 12:10:22 -0800 Subject: [PATCH 077/145] script to deploy entire infrastructure, including functions and db schema (#43) * deploy dsvm * create db schema, some config changes * create storage * deploy everything in one script * sample config * Supporting func publishing and key retrieval. Removed Py 3.6 check * Removing double quotes from AppInsights and Storage keys --- db/install-db-resources.py | 1 + devops/deployment/Deploy-Infrastructure.sh | 63 ++++++++++++++++++- .../deployment/Deploy-Pipeline-Functions.sh | 19 ++++++ ...ions.sh => Deploy-Python-Functions-App.sh} | 30 +++++++-- .../{ => config}/deployment_config.sh | 6 +- .../deployment}/create-storage.sh | 7 +-- devops/dsvm/deploy_dsvm.sh | 2 +- 7 files changed, 115 insertions(+), 13 deletions(-) mode change 100644 => 100755 db/install-db-resources.py create mode 100644 devops/deployment/Deploy-Pipeline-Functions.sh rename devops/deployment/{Deploy-Python-Functions.sh => Deploy-Python-Functions-App.sh} (63%) rename devops/deployment/{ => config}/deployment_config.sh (63%) rename {functions => devops/deployment}/create-storage.sh (69%) diff --git a/db/install-db-resources.py b/db/install-db-resources.py old mode 100644 new mode 100755 index a10af426..a08af4dd --- a/db/install-db-resources.py +++ b/db/install-db-resources.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 import pg8000 import os import sys diff --git a/devops/deployment/Deploy-Infrastructure.sh b/devops/deployment/Deploy-Infrastructure.sh index be27e666..d91445df 100755 --- a/devops/deployment/Deploy-Infrastructure.sh +++ b/devops/deployment/Deploy-Infrastructure.sh @@ -1,4 +1,23 @@ #!/bin/bash +set -x + +# Check if we are in a virutal env (needed to deploy functions, database) +if [ -z "$VIRTUAL_ENV" ]; then + echo "A virtual environment using Python 3.6 is needed. Please make sure Python 3.6" + echo "is installed and the virtual environment is created with the appropriate command" + echo "which would be something like: python3.6 -m venv " + echo "" + echo "You will then need to activate the venv, which on *nix based systems would be:" + echo " source /bin/activate" + exit 1 +fi + +# Check if the python version is 3.6 +#python --version | awk '{print $2}' | grep "^3.6" >& /dev/null +#if [ "$?" -ne "0" ]; then +# echo "Python version 3.6.x is required." +# exit 1 +#fi # Check if any of the args are empty if [ -z "$1" ]; then @@ -13,15 +32,23 @@ if [ ! -e "$1" ]; then fi # Read configuration -. ./deployment_config.sh +. $1 + +# Install reuired python modules +pip install -r ../../requirements.txt # Setup database -. ./Deploy-Postgres-DB.sh $RESOURCE_GROUP $DATABASE_SERVER_NAME $DATABASE_USERNAME $DATABASE_PASSWORD +DATABASE_USERNAME_AT_HOST="$DATABASE_USERNAME@$DATABASE_SERVER_NAME" +. ./Deploy-Postgres-DB.sh $RESOURCE_GROUP $DATABASE_SERVER_NAME "$DATABASE_USERNAME" $DATABASE_PASSWORD if [ "$?" -ne 0 ]; then echo "Unable to setup database" exit 1 fi +# Setup database schema +DB_HOST_FULL_NAME="$DATABASE_SERVER_NAME"".postgres.database.azure.com" +(cd ../../db && export DB_HOST=$DB_HOST_FULL_NAME && export DB_USER="$DATABASE_USERNAME_AT_HOST" && export DB_PASS=$DATABASE_PASSWORD && ./install-db-resources.py $DATABASE_NAME) + # Setup app insights . ./Deploy-AppInsights.sh $RESOURCE_GROUP $APPINSIGHTS_NAME if [ "$?" -ne 0 ]; then @@ -29,9 +56,39 @@ if [ "$?" -ne 0 ]; then exit 1 fi +# Setup storage assets needed by functions +export RESOURCE_GROUP=$RESOURCE_GROUP +export STORAGE_NAME=$PROJECT_STORAGE_ACCOUNT +export STORAGE_TEMP_CONTAINER=$PROJECT_STORAGE_TEMP_CONTAINER +export STORAGE_PERM_CONTAINER=$PROJECT_STORAGE_PERM_CONTAINER +./create-storage.sh +if [ "$?" -ne 0 ]; then + echo "Unable to create storage accounts and containers" + exit 1 +fi + # Setup azure python function -. ./Deploy-Python-Functions.sh $RESOURCE_GROUP $FUNCTION_STORAGE_ACCOUNT $FUNCTION_APP_NAME $APPINSIGHTS_NAME +PROJECT_STORAGE_ACCOUNT_KEY=$(az storage account keys list -n $PROJECT_STORAGE_ACCOUNT --query [0].value --resource-group $RESOURCE_GROUP) +. ./Deploy-Python-Functions-App.sh \ + $RESOURCE_GROUP \ + $FUNCTION_STORAGE_ACCOUNT \ + $FUNCTION_APP_NAME \ + $APPINSIGHTS_NAME \ + $PROJECT_STORAGE_ACCOUNT \ + $PROJECT_STORAGE_ACCOUNT_KEY \ + $PROJECT_STORAGE_TEMP_CONTAINER \ + $PROJECT_STORAGE_PERM_CONTAINER \ + $DB_HOST_FULL_NAME \ + $DATABASE_USERNAME_AT_HOST \ + $DATABASE_PASSWORD \ + $DATABASE_NAME if [ "$?" -ne 0 ]; then echo "Unable to setup app insights" exit 1 +fi + +. ./Deploy-Pipeline-Functions.sh $FUNCTION_APP_NAME ../../functions/pipeline +if [ "$?" -ne 0 ]; then + echo "Unable to deploy pipeline functions" + exit 1 fi \ No newline at end of file diff --git a/devops/deployment/Deploy-Pipeline-Functions.sh b/devops/deployment/Deploy-Pipeline-Functions.sh new file mode 100644 index 00000000..be8c1c8a --- /dev/null +++ b/devops/deployment/Deploy-Pipeline-Functions.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Check if any of the args are empty +if [ -z "$1" ] || [ -z "$2" ]; then + echo "Usage: 'sh $0 (Azure function app name) (Function directory)'" + exit 1 +fi + +# Check that the function directory exists +if [ ! -e "$2" ]; then + echo "Function directory does not exist -- $2" + exit 1 +fi + +(cd $2 && func azure functionapp publish $1 --force --build-native-deps --no-bundler) +if [ "$?" -ne 0 ]; then + echo "Error deploying pipeline functions" + exit 1 +fi \ No newline at end of file diff --git a/devops/deployment/Deploy-Python-Functions.sh b/devops/deployment/Deploy-Python-Functions-App.sh similarity index 63% rename from devops/deployment/Deploy-Python-Functions.sh rename to devops/deployment/Deploy-Python-Functions-App.sh index e389df35..38c94524 100755 --- a/devops/deployment/Deploy-Python-Functions.sh +++ b/devops/deployment/Deploy-Python-Functions-App.sh @@ -10,11 +10,20 @@ StorageName=$2 FunctionAppName=$3 AppInsightsName=$4 -if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ]; then - echo "Usage: 'sh $0 (Azure Resource Group Name) (Azure Function Storage Name) (Azure Function App Name) (AppInsightsName)'" +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ] || [ -z "$6" ] || [ -z "$7" ] || [ -z "$8" ] || [ -z "$9" ] || [ -z "${10}" ] || [ -z "${11}" ] || [ -z "${12}" ]; then + echo "Usage: 'sh $0 (Azure Resource Group Name) (Azure Function Storage Name) (Azure Function App Name) (AppInsightsName) (Storage account) (Source container) (Dest container) (DB Server Name) (DB Username) (DB Password) (DB Name)'" exit 1 fi +STORAGE_ACCOUNT_NAME="$5" +STORAGE_ACCOUNT_KEY="$6" +SOURCE_CONTAINER_NAME="$7" +DESTINATION_CONTAINER_NAME="$8" +DB_HOST="$9" +DB_USER="${10}" +DB_PASS="${11}" +DB_NAME="${12}" + StorageNameLength=${#StorageName} if [ $StorageNameLength -lt 3 -o $StorageNameLength -gt 24 ]; then echo "Storage account name must be between 3 and 24 characters in length." @@ -68,7 +77,20 @@ echo "Retrieving App Insights Id for $AppInsightsName" echo AppInsightsKey=$(az resource show -g $ResourceGroup -n $AppInsightsName --resource-type "Microsoft.Insights/components" --query properties.InstrumentationKey) +#Remove double quotes +AppInsightsKey=$(sed -e 's/^"//' -e 's/"$//' <<<"$AppInsightsKey") +STORAGE_ACCOUNT_KEY=$(sed -e 's/^"//' -e 's/"$//' <<<"$STORAGE_ACCOUNT_KEY") + echo -echo "Setting application setting APPINSIGHTS_INSTRUMENTATIONKEY on $FunctionAppName" +echo "Setting application setting on $FunctionAppName" echo -az functionapp config appsettings set --name $FunctionAppName --resource-group $ResourceGroup --settings "APPINSIGHTS_INSTRUMENTATIONKEY=$AppInsightsKey" \ No newline at end of file +az functionapp config appsettings set --name $FunctionAppName --resource-group $ResourceGroup \ + --settings "APPINSIGHTS_INSTRUMENTATIONKEY=$AppInsightsKey" \ + "DB_HOST=$DB_HOST" \ + "DB_USER=$DB_USER" \ + "DB_NAME=$DB_NAME" \ + "DB_PASS=$DB_PASS" \ + "STORAGE_ACCOUNT_NAME=$STORAGE_ACCOUNT_NAME" \ + "STORAGE_ACCOUNT_KEY=$STORAGE_ACCOUNT_KEY" \ + "SOURCE_CONTAINER_NAME=$SOURCE_CONTAINER_NAME" \ + "DESTINATION_CONTAINER_NAME=$DESTINATION_CONTAINER_NAME" \ No newline at end of file diff --git a/devops/deployment/deployment_config.sh b/devops/deployment/config/deployment_config.sh similarity index 63% rename from devops/deployment/deployment_config.sh rename to devops/deployment/config/deployment_config.sh index 3046af03..4e153bfc 100755 --- a/devops/deployment/deployment_config.sh +++ b/devops/deployment/config/deployment_config.sh @@ -3,11 +3,15 @@ # Project configuration RESOURCE_GROUP=jmsrg1 RESOURCE_LOCATION=westus +PROJECT_STORAGE_ACCOUNT=jmsactlrnstor1 +PROJECT_STORAGE_TEMP_CONTAINER=tempcont +PROJECT_STORAGE_PERM_CONTAINER=permcont # Database config +DATABASE_NAME=jmsactlrndb1 DATABASE_SERVER_NAME=jmspgsrvr1 DATABASE_USERNAME=jmsdbadmin -DATABASE_PASSWORD=Th1siS4Pa55WurD +DATABASE_PASSWORD=Th1siS4Pa55Wurd # AppInsights config APPINSIGHTS_NAME=jmsinsightful1 diff --git a/functions/create-storage.sh b/devops/deployment/create-storage.sh similarity index 69% rename from functions/create-storage.sh rename to devops/deployment/create-storage.sh index 7251ea78..486772eb 100755 --- a/functions/create-storage.sh +++ b/devops/deployment/create-storage.sh @@ -23,13 +23,12 @@ fi echo "Creating Storage Account" az storage account create --resource-group $RESOURCE_GROUP --name $STORAGE_NAME --sku Standard_LRS -STORAGE_KEY=`az storage account keys list -n $STORAGE_NAME --query [0].value` - +STORAGE_KEY=$(az storage account keys list -n $STORAGE_NAME --resource-group $RESOURCE_GROUP --query [0].value) echo "Creating Temporary Storage Container" -az storage container create -n temporary --account-key $STORAGE_KEY --account-name $STORAGE_NAME +az storage container create -n $STORAGE_TEMP_CONTAINER --account-key $STORAGE_KEY --account-name $STORAGE_NAME echo "Creating Permanent Storage Container" -az storage container create -n permanent --account-key $STORAGE_KEY --account-name $STORAGE_NAME +az storage container create -n $STORAGE_PERM_CONTAINER --account-key $STORAGE_KEY --account-name $STORAGE_NAME echo "Done!" \ No newline at end of file diff --git a/devops/dsvm/deploy_dsvm.sh b/devops/dsvm/deploy_dsvm.sh index 8bad88eb..e43d8cd1 100755 --- a/devops/dsvm/deploy_dsvm.sh +++ b/devops/dsvm/deploy_dsvm.sh @@ -51,4 +51,4 @@ az vm create \ if [ "$?" -ne "0" ]; then echo "Unable to provision DSVM" exit 1 -fi \ No newline at end of file +fi From 1c0813a7de8ef993b2c501a3f8eaf3529323702c Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Mon, 19 Nov 2018 12:13:04 -0800 Subject: [PATCH 078/145] Downloading tags and existing classifications. Also new function to download tagged image data for training. (#42) * Getting tag queries back. Need to construct into data map, also eventually remove module getting hack and creds * Have working list of imageTags returning now * Download of existing tags working now. Unsure about filenames all being integers only though? Works currently but upload function needs to be checked * Retreving existing tags in db * scrubbing creds * comment cleanup * creating function to download tagged images and their data * print -> logging * feedback --- functions/pipeline/download/__init__.py | 15 +- .../pipeline/shared/db_access/db_access_v2.py | 151 ++++++++++++++++-- .../shared/db_access/test_db_access_v2.py | 2 +- .../shared/vott_parser/vott_parser.py | 52 +++++- functions/pipeline/taggedimages/__init__.py | 62 +++++++ functions/pipeline/taggedimages/function.json | 19 +++ functions/pipeline/taggedimages/host.json | 3 + 7 files changed, 275 insertions(+), 29 deletions(-) create mode 100644 functions/pipeline/taggedimages/__init__.py create mode 100644 functions/pipeline/taggedimages/function.json create mode 100644 functions/pipeline/taggedimages/host.json diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py index 96f3965a..d208b25f 100644 --- a/functions/pipeline/download/__init__.py +++ b/functions/pipeline/download/__init__.py @@ -35,12 +35,19 @@ def main(req: func.HttpRequest) -> func.HttpResponse: # DB configuration data_access = ImageTagDataAccess(get_postgres_provider()) user_id = data_access.create_user(user_name) - image_urls = list(data_access.get_new_images(image_count, user_id)) + image_id_to_urls = data_access.get_images_for_tagging(image_count, user_id) + image_urls = list(image_id_to_urls.values()) - # TODO: Populate starting json with tags, if any exist... (precomputed or retagging?) - vott_json = create_starting_vott_json(image_urls) + image_id_to_image_tags = {} + for image_id in image_id_to_urls.keys(): + image_id_to_image_tags[image_id] = data_access.get_image_tags(image_id) - return_body_json = {"imageUrls": image_urls, "vottJson": vott_json} + existing_classifications_list = data_access.get_existing_classifications() + + vott_json = create_starting_vott_json(image_id_to_urls, image_id_to_image_tags, existing_classifications_list) + + return_body_json = {"imageUrls": image_urls, + "vottJson": vott_json} content = json.dumps(return_body_json) return func.HttpResponse( diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index c174f57b..8d0efee8 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -1,15 +1,12 @@ -# import sys import string -# import os -# import time import logging import random from enum import IntEnum, unique import getpass import itertools - from ..db_provider import DatabaseInfo, PostGresProvider + @unique class ImageTagState(IntEnum): NOT_READY = 0 @@ -19,6 +16,7 @@ class ImageTagState(IntEnum): INCOMPLETE_TAG = 4 ABANDONED = 5 + # An entity class for a VOTT image class ImageInfo(object): def __init__(self, image_name, image_location, height, width): @@ -27,14 +25,25 @@ def __init__(self, image_name, image_location, height, width): self.height = height self.width = width + +# Entity class for Tags stored in DB class ImageTag(object): def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names): - self.image_id = image_id - self.x_min = x_min - self.x_max = x_max - self.y_min = y_min - self.y_max = y_max - self.classification_names = classification_names + self.image_id = image_id + self.x_min = x_min + self.x_max = x_max + self.y_min = y_min + self.y_max = y_max + self.classification_names = classification_names + + +# Vott tags have image height & width data as well. +class VottImageTag(ImageTag): + def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names, image_height, image_width): + super().__init__(image_id, x_min, x_max, y_min, y_max, classification_names) + self.image_height = image_height + self.image_width = image_width + class ImageTagDataAccess(object): def __init__(self, db_provider): @@ -69,7 +78,7 @@ def create_user(self,user_name): finally: conn.close() return user_id - def get_new_images(self, number_of_images, user_id): + def get_images_for_tagging(self, number_of_images, user_id): if number_of_images <= 0: raise ArgumentException("Parameter must be greater than zero") @@ -84,14 +93,16 @@ def get_new_images(self, number_of_images, user_id): cursor.execute(query.format(number_of_images, ImageTagState.READY_TO_TAG, ImageTagState.INCOMPLETE_TAG)) for row in cursor: logging.debug('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) - selected_images_to_tag[str(row[0])] = str(row[1]) + selected_images_to_tag[row[0]] = str(row[1]) self._update_images(selected_images_to_tag,ImageTagState.TAG_IN_PROGRESS, user_id, conn) - finally: cursor.close() + finally: + cursor.close() except Exception as e: logging.error("An errors occured getting images: {0}".format(e)) raise - finally: conn.close() - return selected_images_to_tag.values() + finally: + conn.close() + return selected_images_to_tag def add_new_images(self,list_of_image_infos, user_id): @@ -119,6 +130,106 @@ def add_new_images(self,list_of_image_infos, user_id): finally: conn.close() return url_to_image_id_map + def get_tag_complete_images(self, number_of_images, user_id): + if number_of_images <= 0: + raise ArgumentException("Parameter must be greater than zero") + + tag_complete_images = {} + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + query = ("SELECT b.ImageId, b.ImageLocation, a.TagStateId FROM Image_Tagging_State a " + "JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = {1} order by " + "a.createddtim DESC limit {0}") + cursor.execute(query.format(number_of_images, ImageTagState.COMPLETED_TAG)) + for row in cursor: + logging.debug('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) + tag_complete_images[row[0]] = str(row[1]) + finally: + cursor.close() + except Exception as e: + logging.error("An errors occured getting images: {0}".format(e)) + raise + finally: + conn.close() + return tag_complete_images + + def get_image_tags(self, image_id): + if type(image_id) is not int: + raise TypeError('image_id must be an integer') + + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + query = ("SELECT image_tags.imagetagid, image_info.imageid, x_min, x_max, y_min, y_max, " + "classification_info.classificationname, image_info.height, image_info.width " + "FROM image_tags " + "inner join tags_classification on image_tags.imagetagid = tags_classification.imagetagid " + "inner join classification_info on tags_classification.classificationid = classification_info.classificationid " + "inner join image_info on image_info.imageid = image_tags.imageid " + "WHERE image_tags.imageid = {0};") + cursor.execute(query.format(image_id,)) + + logging.debug("Got image tags back for image_id={}".format(image_id)) + tag_id_to_VottImageTag = self.__build_id_to_VottImageTag(cursor) + + finally: + cursor.close() + except Exception as e: + logging.error("An error occurred getting image tags for image id = {0}: {1}".format(image_id, e)) + raise + finally: + conn.close() + return list(tag_id_to_VottImageTag.values()) + + def __build_id_to_VottImageTag(self, tag_db_cursor): + tag_id_to_VottImageTag = {} + try : + for row in tag_db_cursor: + logging.debug(row) + tag_id = row[0] + if tag_id in tag_id_to_VottImageTag: + logging.debug("Existing ImageTag found, appending classification {}", row[6]) + tag_id_to_VottImageTag[tag_id].classification_names.append(row[6].strip()) + else: + logging.debug("No existing ImageTag found, creating new ImageTag: " + "id={0} x_min={1} x_max={2} x_min={3} x_max={4} classification={5} " + "image_height={6} image_width={7}" + .format(row[1], float(row[2]), float(row[3]), float(row[4]), float(row[5]), + [row[6].strip()], row[7], row[8])) + tag_id_to_VottImageTag[tag_id] = VottImageTag(row[1], float(row[2]), float(row[3]), + float(row[4]), float(row[5]), [row[6].strip()], + row[7], row[8]) + except Exception as e: + logging.error("An error occurred building VottImageTag dict: {0}".format(e)) + raise + return tag_id_to_VottImageTag + + + def get_existing_classifications(self): + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + query = "SELECT classificationname from classification_info order by classificationname asc" + cursor.execute(query) + + classification_set = set() + for row in cursor: + logging.debug(row) + classification_set.add(row[0]) + logging.debug("Got back {0} classifications existing in db.".format(len(classification_set))) + finally: + cursor.close() + except Exception as e: + logging.error("An error occurred getting classifications from DB: {0}".format(e)) + raise + finally: + conn.close() + return list(classification_set) + def update_incomplete_images(self, list_of_image_ids, user_id): #TODO: Make sure the image ids are in a TAG_IN_PROGRESS state self._update_images(list_of_image_ids,ImageTagState.INCOMPLETE_TAG,user_id, self._db_provider.get_connection()) @@ -229,6 +340,12 @@ def main(): # Checking in images been tagged ################################################################# + # import sys + # import os + # sys.path.append("..") + # sys.path.append(os.path.abspath('db_provider')) + # from db_provider import DatabaseInfo, PostGresProvider + #Replace me for testing db_config = DatabaseInfo("","","","") data_access = ImageTagDataAccess(PostGresProvider(db_config)) @@ -241,7 +358,9 @@ def main(): image_tags = generate_test_image_tags(list(url_to_image_id_map.values()),4,4) data_access.update_tagged_images(image_tags,user_id) -TestClassifications = ("maine coon","german shephard","goldfinch","mackerel"," african elephant","rattlesnake") + +TestClassifications = ("maine coon","german shephard","goldfinch","mackerel","african elephant","rattlesnake") + def generate_test_image_infos(count): list_of_image_infos = [] diff --git a/functions/pipeline/shared/db_access/test_db_access_v2.py b/functions/pipeline/shared/db_access/test_db_access_v2.py index 45eea1db..6de5af0c 100644 --- a/functions/pipeline/shared/db_access/test_db_access_v2.py +++ b/functions/pipeline/shared/db_access/test_db_access_v2.py @@ -74,7 +74,7 @@ def test_get_new_images_bad_request(self): with self.assertRaises(ArgumentException): data_access = ImageTagDataAccess(MockDBProvider()) num_of_images = -5 - data_access.get_new_images(num_of_images,5) + data_access.get_images_for_tagging(num_of_images, 5) def test_add_new_images_user_id_type_error(self): with self.assertRaises(TypeError): diff --git a/functions/pipeline/shared/vott_parser/vott_parser.py b/functions/pipeline/shared/vott_parser/vott_parser.py index 1bffff7f..a476c4d7 100644 --- a/functions/pipeline/shared/vott_parser/vott_parser.py +++ b/functions/pipeline/shared/vott_parser/vott_parser.py @@ -1,27 +1,60 @@ import json -def __build_frames_data(images): + +def __build_tag_from_VottImageTag(image_tag): + return { + "x1": image_tag.x_min, + "x2": image_tag.x_max, + "y1": image_tag.y_min, + "y2": image_tag.y_max, + "width": image_tag.image_width, + "height": image_tag.image_height, + "tags": image_tag.classification_names + } + + +def __build_tag_list_from_VottImageTags(image_tag_list): + tag_list = [] + for image_tag in image_tag_list: + tag_list.append(__build_tag_from_VottImageTag(image_tag)) + return tag_list + + +def __build_frames_data(image_id_to_urls, image_id_to_image_tags): frames = {} - for filename in images: - # TODO: Build tag data per frame if they exist already - frames[__get_filename_from_fullpath(filename)] = [] #list of tags + for image_id in image_id_to_image_tags.keys(): + image_file_name = __get_filename_from_fullpath(image_id_to_urls[image_id]) + image_tags = __build_tag_list_from_VottImageTags(image_id_to_image_tags[image_id]) + frames[image_file_name] = image_tags return frames + # For download function -def create_starting_vott_json(images): +def create_starting_vott_json(image_id_to_urls, image_id_to_image_tags, existing_classifications_list): + # "frames" + frame_to_tag_list_map = __build_frames_data(image_id_to_urls, image_id_to_image_tags) + + # "inputTags" + classification_str = "" + for classification in existing_classifications_list: + classification_str += classification + "," + return { - "frames": __build_frames_data(images), - "inputTags": "", # TODO: populate classifications that exist in db already + "frames": frame_to_tag_list_map, + "inputTags": classification_str, "scd": False # Required for VoTT and image processing? unknown if it's also used for video. } + def __get_filename_from_fullpath(filename): path_components = filename.split('/') return path_components[-1] + def __get_id_from_fullpath(fullpath): return int(__get_filename_from_fullpath(fullpath).split('.')[0]) + # Returns a list of processed tags for a single frame def __create_tag_data_list(json_tag_list): processed_tags = [] @@ -29,6 +62,7 @@ def __create_tag_data_list(json_tag_list): processed_tags.append(__process_json_tag(json_tag)) return processed_tags + def __process_json_tag(json_tag): return { "x1": json_tag['x1'], @@ -42,6 +76,7 @@ def __process_json_tag(json_tag): "name": json_tag["name"] } + # For upload function def process_vott_json(json): all_frame_data = json['frames'] @@ -79,6 +114,7 @@ def process_vott_json(json): "imageIdToTags": id_to_tags_dict } + def main(): images = { "1.png" : {}, @@ -121,7 +157,6 @@ def main(): # add_tag_to_db('something', 2, (tag_data)) - # Currently only used for testing... # returns a json representative of a tag given relevant components def __build_json_tag(x1, x2, y1, y2, img_width, img_height, UID, id, type, tags, name): @@ -145,5 +180,6 @@ def __build_json_tag(x1, x2, y1, y2, img_width, img_height, UID, id, type, tags, "name": name } + if __name__ == '__main__': main() diff --git a/functions/pipeline/taggedimages/__init__.py b/functions/pipeline/taggedimages/__init__.py new file mode 100644 index 00000000..b602345b --- /dev/null +++ b/functions/pipeline/taggedimages/__init__.py @@ -0,0 +1,62 @@ +import logging + +import azure.functions as func +import json + +from ..shared.vott_parser import create_starting_vott_json +from ..shared.db_provider import get_postgres_provider +from ..shared.db_access import ImageTagDataAccess + + +def main(req: func.HttpRequest) -> func.HttpResponse: + logging.info('Python HTTP trigger function processed a request.') + + image_count = int(req.params.get('imageCount')) + user_name = req.params.get('userName') + + # setup response object + headers = { + "content-type": "application/json" + } + if not user_name: + return func.HttpResponse( + status_code=401, + headers=headers, + body=json.dumps({"error": "invalid userName given or omitted"}) + ) + elif not image_count: + return func.HttpResponse( + status_code=400, + headers=headers, + body=json.dumps({"error": "image count not specified"}) + ) + else: + try: + # DB configuration + data_access = ImageTagDataAccess(get_postgres_provider()) + user_id = data_access.create_user(user_name) + image_id_to_urls = data_access.get_tag_complete_images(image_count, user_id) + image_urls = list(image_id_to_urls.values()) + + image_id_to_image_tags = {} + for image_id in image_id_to_urls.keys(): + image_id_to_image_tags[image_id] = data_access.get_image_tags(image_id) + + existing_classifications_list = data_access.get_existing_classifications() + + vott_json = create_starting_vott_json(image_id_to_urls, image_id_to_image_tags, existing_classifications_list) + + return_body_json = {"imageUrls": image_urls, + "vottJson": vott_json} + + content = json.dumps(return_body_json) + return func.HttpResponse( + status_code=200, + headers=headers, + body=content + ) + except Exception as e: + return func.HttpResponse( + "exception:" + str(e), + status_code=500 + ) diff --git a/functions/pipeline/taggedimages/function.json b/functions/pipeline/taggedimages/function.json new file mode 100644 index 00000000..f24e4f1d --- /dev/null +++ b/functions/pipeline/taggedimages/function.json @@ -0,0 +1,19 @@ +{ + "scriptFile": "__init__.py", + "bindings": [ + { + "authLevel": "anonymous", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "get" + ] + }, + { + "type": "http", + "direction": "out", + "name": "$return" + } + ] +} diff --git a/functions/pipeline/taggedimages/host.json b/functions/pipeline/taggedimages/host.json new file mode 100644 index 00000000..81e35b7b --- /dev/null +++ b/functions/pipeline/taggedimages/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" +} \ No newline at end of file From cc018eeb56f940d199e44d970cd3d818ca83329b Mon Sep 17 00:00:00 2001 From: Samiya Date: Mon, 19 Nov 2018 17:04:26 -0800 Subject: [PATCH 079/145] Training automation: step 1 and 2 (#40) * Downloading images from blob * Downloading vott json and images * Use num_images from args * Refactored code out from operations.py into utils, to be used by other folders * Use training in cli * Add utils to sys path * Move utils to cli * Remove __init__.py * Fix imports in test_operations.py * Fix imports in test_operations.py * Fix imports in test_operations.py * Fix imports in test_operations.py * Remove unnecessary imports --- cli/cli.py | 6 +- cli/operations.py | 115 +------------------ cli/test_operations.py | 36 +++--- cli/training.py | 69 +++++++++++ utils/blob_utils.py => cli/utils/__init__.py | 0 cli/utils/blob_utils.py | 17 +++ cli/utils/config.py | 104 +++++++++++++++++ utils/config.py | 13 --- utils/convert_to_jpeg.py | 23 ---- utils/decode_tf_record.py | 37 ------ utils/repartition_test_set.sh | 19 --- 11 files changed, 214 insertions(+), 225 deletions(-) create mode 100644 cli/training.py rename utils/blob_utils.py => cli/utils/__init__.py (100%) create mode 100644 cli/utils/blob_utils.py create mode 100644 cli/utils/config.py delete mode 100644 utils/config.py delete mode 100644 utils/convert_to_jpeg.py delete mode 100644 utils/decode_tf_record.py delete mode 100644 utils/repartition_test_set.sh diff --git a/cli/cli.py b/cli/cli.py index 737074e1..1793dd0f 100644 --- a/cli/cli.py +++ b/cli/cli.py @@ -1,12 +1,11 @@ import argparse - +from utils.config import Config from operations import ( download, upload, onboard, LOWER_LIMIT, UPPER_LIMIT, - read_config, CONFIG_PATH ) @@ -28,7 +27,7 @@ operation = args.operation - config = read_config(CONFIG_PATH) + config = Config.read_config(CONFIG_PATH) if operation == 'download': download(config, args.num_images) @@ -38,3 +37,4 @@ onboard(config, args.folder) else: upload(config) + diff --git a/cli/operations.py b/cli/operations.py index fd7ae237..441483ab 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -1,27 +1,12 @@ -import configparser import requests import time import os import shutil -import pathlib import json import copy -from azure.storage.blob.blockblobservice import BlockBlobService -from azure.storage.file import ContentSettings - -FUNCTIONS_SECTION = 'FUNCTIONS' -FUNCTIONS_KEY = 'FUNCTIONS_KEY' -FUNCTIONS_URL = 'FUNCTIONS_URL' - -STORAGE_SECTION = 'STORAGE' -STORAGE_KEY = 'STORAGE_KEY' -STORAGE_ACCOUNT = 'STORAGE_ACCOUNT' -STORAGE_CONTAINER = 'STORAGE_CONTAINER' - -TAGGING_SECTION = 'TAGGING' -TAGGING_LOCATION_KEY = 'TAGGING_LOCATION' -TAGGING_USER_KEY = 'TAGGING_USER' - +import pathlib +from azure.storage.blob import BlockBlobService, ContentSettings +from utils.blob_utils import BlobStorage DEFAULT_NUM_IMAGES = 40 LOWER_LIMIT = 0 @@ -32,31 +17,12 @@ azure_storage_client = None -class MissingConfigException(Exception): - pass - - class ImageLimitException(Exception): pass -#TODO: Verify the storage account is correct. Currently we get an unhelpful error message if you have a type in Storage Name -def get_azure_storage_client(config): - # Todo: Move away from global client. - global azure_storage_client - - if azure_storage_client is not None: - return azure_storage_client - - azure_storage_client = BlockBlobService( - config.get("storage_account"), - account_key=config.get("storage_key") - ) - - return azure_storage_client - #TODO We should create the container if it does not exist def onboard(config, folder_name): - blob_storage = get_azure_storage_client(config) + blob_storage = BlobStorage.get_azure_storage_client(config) uri = 'https://' + config.get("storage_account") + '.blob.core.windows.net/' + config.get("storage_container") + '/' functions_url = config.get('url') + '/api/onboarding' user_name = config.get("tagging_user") @@ -87,7 +53,6 @@ def onboard(config, folder_name): for url in json_resp['imageUrls']: print(url) - def _download_bounds(num_images): images_to_download = num_images @@ -256,75 +221,3 @@ def trim_file_paths(json_data): return modified_json - -def read_config(config_path): - if config_path is None: - raise MissingConfigException() - - parser = configparser.ConfigParser() - parser.read(config_path) - return read_config_with_parsed_config(parser) - - -def functions_config_section(functions_config_section): - functions_key_value = functions_config_section.get(FUNCTIONS_KEY) - functions_url_value = functions_config_section.get(FUNCTIONS_URL) - - if not functions_key_value or not functions_url_value: - raise MissingConfigException() - - return functions_key_value, functions_url_value - - -def storage_config_section(storage_config_section): - storage_account_value = storage_config_section.get(STORAGE_ACCOUNT) - storage_key_value = storage_config_section.get(STORAGE_KEY) - storage_container_value = storage_config_section.get(STORAGE_CONTAINER) - - if not storage_account_value or not storage_key_value or not storage_container_value: - raise MissingConfigException() - - return storage_account_value, storage_key_value, storage_container_value - - -def tagging_config_section(tagging_config_section): - tagging_location_value = tagging_config_section.get(TAGGING_LOCATION_KEY) - tagging_user_value = tagging_config_section.get(TAGGING_USER_KEY) - - if not tagging_location_value or not tagging_user_value: - raise MissingConfigException() - - return tagging_location_value, tagging_user_value - - -def read_config_with_parsed_config(parser): - sections = parser.sections() - - if FUNCTIONS_SECTION not in sections: - raise MissingConfigException() - - if STORAGE_SECTION not in sections: - raise MissingConfigException() - - if TAGGING_SECTION not in sections: - raise MissingConfigException() - - functions_key, functions_url = functions_config_section( - parser[FUNCTIONS_SECTION] - ) - - storage_account, storage_key, storage_container = storage_config_section( - parser[STORAGE_SECTION] - ) - - tagging_location, tagging_user = tagging_config_section(parser[TAGGING_SECTION]) - - return { - "key": functions_key, - "url": functions_url, - "storage_account": storage_account, - "storage_key": storage_key, - "storage_container": storage_container, - "tagging_location": tagging_location, - "tagging_user": tagging_user - } diff --git a/cli/test_operations.py b/cli/test_operations.py index dd6faa93..e5329373 100644 --- a/cli/test_operations.py +++ b/cli/test_operations.py @@ -3,15 +3,8 @@ import pathlib from unittest.mock import Mock -from operations import ( - _download_bounds, - upload, - read_config_with_parsed_config, - MissingConfigException, - ImageLimitException, - DEFAULT_NUM_IMAGES, - LOWER_LIMIT, - UPPER_LIMIT, +from utils.config import Config, MissingConfigException +from utils.config import ( FUNCTIONS_SECTION, FUNCTIONS_KEY, FUNCTIONS_URL, @@ -22,9 +15,14 @@ TAGGING_SECTION, TAGGING_LOCATION_KEY, TAGGING_USER_KEY, - functions_config_section, - storage_config_section, - tagging_config_section, +) +from operations import ( + _download_bounds, + upload, + ImageLimitException, + DEFAULT_NUM_IMAGES, + LOWER_LIMIT, + UPPER_LIMIT, prepend_file_paths, trim_file_paths ) @@ -66,33 +64,33 @@ def data_function(self, name): def test_missing_storage_section(self): with self.assertRaises(MissingConfigException): - read_config_with_parsed_config( + Config.read_config_with_parsed_config( self._mock_sections([FUNCTIONS_SECTION], {}) ) def test_missing_functions_section(self): with self.assertRaises(MissingConfigException): - read_config_with_parsed_config( + Config.read_config_with_parsed_config( self._mock_sections([STORAGE_SECTION], {}) ) def test_missing_tagging_section(self): with self.assertRaises(MissingConfigException): - read_config_with_parsed_config( + Config.read_config_with_parsed_config( self._mock_sections([FUNCTIONS_SECTION, STORAGE_SECTION], {}) ) def test_missing_functions_config_values(self): with self.assertRaises(MissingConfigException): - functions_config_section({}) + Config.functions_config_section({}) def test_missing_storage_config_values(self): with self.assertRaises(MissingConfigException): - storage_config_section({}) + Config.storage_config_section({}) def test_missing_tagging_config_values(self): with self.assertRaises(MissingConfigException): - tagging_config_section({}) + Config.tagging_config_section({}) def test_acceptable_config(self): mock_data = self._mock_sections( @@ -114,7 +112,7 @@ def test_acceptable_config(self): } ) - read_config_with_parsed_config(mock_data) + Config.read_config_with_parsed_config(mock_data) class TestPrependFilepaths(unittest.TestCase): diff --git a/cli/training.py b/cli/training.py new file mode 100644 index 00000000..21635203 --- /dev/null +++ b/cli/training.py @@ -0,0 +1,69 @@ +import argparse +import os +import requests +from azure.storage.blob import BlockBlobService, ContentSettings +from utils.config import Config +from utils.blob_utils import BlobStorage + +CONFIG_PATH = os.environ.get('ALCONFIG', None) + +class TagData(object): + def __init__(self, imageUrl, name, tags, x1, x2, y1, y2, height, width): + self.tags = tags + self.x1 = x1 + self.x2 = x2 + self.y1 = y1 + self.y2 = y2 + self.height = height + self.width = width + self.name = name + self.imageUrl = imageUrl + +def train(config, num_images): + # First, download vott json for tagging complete images + vott_json = download_vott_json(config, num_images) + + # Grab these images from the blob storage + download_images(vott_json) + + +def download_images(vott_json): + blob_storage = BlobStorage.get_azure_storage_client(config) + if not os.path.exists('images'): + os.makedirs('images') + for image in vott_json: + if (blob_storage.exists(config.get("storage_container"), image)): + blob_storage.get_blob_to_path(config.get("storage_container"),image, "images/{}".format(image)) + + +def download_vott_json(config, num_images): + query = { + "userName": config.get('tagging_user'), + "imageCount": num_images + } + functions_url = config.get('url') + '/api/taggedimages' + response = requests.get(functions_url, params=query) + data = response.json() + print(data) + + vott_json = {} + index = 0 + for item in data['vottJson']['frames']: + tags = data['vottJson']['frames'][item] + array_tags = [] + for tag in tags: + tagdata = TagData(data['imageUrls'][index], item, tag['tags'], tag['x1'], tag['x2'], tag['y1'], tag['y2'], tag['height'], tag['width']) + array_tags.append(tagdata) + vott_json[item] = array_tags + index += 1 + + print(vott_json) + return vott_json + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument('-n', '--num-images', type=int) + config = Config.read_config(CONFIG_PATH) + args = parser.parse_args() + train(config, args.num_images) diff --git a/utils/blob_utils.py b/cli/utils/__init__.py similarity index 100% rename from utils/blob_utils.py rename to cli/utils/__init__.py diff --git a/cli/utils/blob_utils.py b/cli/utils/blob_utils.py new file mode 100644 index 00000000..3eabf131 --- /dev/null +++ b/cli/utils/blob_utils.py @@ -0,0 +1,17 @@ +from azure.storage.blob import BlockBlobService, ContentSettings + +class BlobStorage(): + azure_storage_client = None + + #TODO: Verify the storage account is correct. Currently we get an unhelpful error message if you have a type in Storage Name + @staticmethod + def get_azure_storage_client(config): + if BlobStorage.azure_storage_client is not None: + return BlobStorage.azure_storage_client + + BlobStorage.azure_storage_client = BlockBlobService( + config.get("storage_account"), + account_key=config.get("storage_key") + ) + + return BlobStorage.azure_storage_client \ No newline at end of file diff --git a/cli/utils/config.py b/cli/utils/config.py new file mode 100644 index 00000000..b65eab26 --- /dev/null +++ b/cli/utils/config.py @@ -0,0 +1,104 @@ + +import configparser + +FUNCTIONS_SECTION = 'FUNCTIONS' +FUNCTIONS_KEY = 'FUNCTIONS_KEY' +FUNCTIONS_URL = 'FUNCTIONS_URL' + +STORAGE_SECTION = 'STORAGE' +STORAGE_KEY = 'STORAGE_KEY' +STORAGE_ACCOUNT = 'STORAGE_ACCOUNT' +STORAGE_CONTAINER = 'STORAGE_CONTAINER' + +TAGGING_SECTION = 'TAGGING' +TAGGING_LOCATION_KEY = 'TAGGING_LOCATION' +TAGGING_USER_KEY = 'TAGGING_USER' + +class Config(): + @staticmethod + def parse_file(file_name): + config = {} + with open(file_name) as file_: + for line in file_: + line = line.strip() + if line and line[0] is not "#": + var,value = line.split('=', 1) + config[var.strip()] = value.strip() + + return config + + @staticmethod + def storage_config_section(storage_config_section): + storage_account_value = storage_config_section.get(STORAGE_ACCOUNT) + storage_key_value = storage_config_section.get(STORAGE_KEY) + storage_container_value = storage_config_section.get(STORAGE_CONTAINER) + + if not storage_account_value or not storage_key_value or not storage_container_value: + raise MissingConfigException() + + return storage_account_value, storage_key_value, storage_container_value + + @staticmethod + def tagging_config_section(tagging_config_section): + tagging_location_value = tagging_config_section.get(TAGGING_LOCATION_KEY) + tagging_user_value = tagging_config_section.get(TAGGING_USER_KEY) + + if not tagging_location_value or not tagging_user_value: + raise MissingConfigException() + + return tagging_location_value, tagging_user_value + + @staticmethod + def functions_config_section(functions_config_section): + functions_key_value = functions_config_section.get(FUNCTIONS_KEY) + functions_url_value = functions_config_section.get(FUNCTIONS_URL) + + if not functions_key_value or not functions_url_value: + raise MissingConfigException() + + return functions_key_value, functions_url_value + + @staticmethod + def read_config_with_parsed_config(parser): + sections = parser.sections() + + if FUNCTIONS_SECTION not in sections: + raise MissingConfigException() + + if STORAGE_SECTION not in sections: + raise MissingConfigException() + + if TAGGING_SECTION not in sections: + raise MissingConfigException() + + functions_key, functions_url = Config.functions_config_section( + parser[FUNCTIONS_SECTION] + ) + + storage_account, storage_key, storage_container = Config.storage_config_section( + parser[STORAGE_SECTION] + ) + + tagging_location, tagging_user = Config.tagging_config_section(parser[TAGGING_SECTION]) + + return { + "key": functions_key, + "url": functions_url, + "storage_account": storage_account, + "storage_key": storage_key, + "storage_container": storage_container, + "tagging_location": tagging_location, + "tagging_user": tagging_user + } + + @staticmethod + def read_config(config_path): + if config_path is None: + raise MissingConfigException() + + parser = configparser.ConfigParser() + parser.read(config_path) + return Config.read_config_with_parsed_config(parser) + +class MissingConfigException(Exception): + pass \ No newline at end of file diff --git a/utils/config.py b/utils/config.py deleted file mode 100644 index 06ca9102..00000000 --- a/utils/config.py +++ /dev/null @@ -1,13 +0,0 @@ - -class Config(): - @staticmethod - def parse_file(file_name): - config = {} - with open(file_name) as file_: - for line in file_: - line = line.strip() - if line and line[0] is not "#": - var,value = line.split('=', 1) - config[var.strip()] = value.strip() - - return config diff --git a/utils/convert_to_jpeg.py b/utils/convert_to_jpeg.py deleted file mode 100644 index eb18274b..00000000 --- a/utils/convert_to_jpeg.py +++ /dev/null @@ -1,23 +0,0 @@ -import os -from PIL import Image - -curpath = os.getcwd() -for root, dirs, files in os.walk(curpath, topdown=False): - for name in files: - if os.path.splitext(os.path.join(root, name))[1].lower() == ".tif": - reldir = os.path.relpath(root, curpath) - if os.path.isfile(os.path.splitext(os.path.join(curpath, "JPEG", reldir, name))[0] + ".jpg"): - print("A jpeg file already exists for %s" % name) - else: - outfile = os.path.splitext(os.path.join(curpath, "JPEG", reldir, name))[0] + ".jpg" - if not os.path.exists(os.path.join(curpath, "JPEG", reldir)): - os.makedirs(os.path.join(curpath, "JPEG", reldir)) - try: - im = Image.open(os.path.join(root, name)) - print("Generating jpeg for %s" % name) - im.thumbnail(im.size) - im.save(outfile, "JPEG", quality=95) - except: - print("Error") - else: - print(os.path.join(root, name) + " is not a tiff file.") \ No newline at end of file diff --git a/utils/decode_tf_record.py b/utils/decode_tf_record.py deleted file mode 100644 index fe4c0eaa..00000000 --- a/utils/decode_tf_record.py +++ /dev/null @@ -1,37 +0,0 @@ -import numpy as np -import tensorflow as tf -from pathlib import Path -import cv2 -import csv - -def decode_record(record_file, output_folder): - output_folder = Path(output_folder) - output_folder.mkdir(parents=True, exist_ok=True) - output_file = output_folder/"output.csv" - record_iterator = tf.python_io.tf_record_iterator(record_file) - for string_record in record_iterator: - example = tf.train.Example() - example.ParseFromString(string_record) - filename = example.features.feature['image/filename'].bytes_list.value[0].decode("utf-8") - height = int(example.features.feature['image/height'].int64_list.value[0]) - width = int(example.features.feature['image/width'].int64_list.value[0]) - xmins = example.features.feature['image/object/bbox/xmin'].float_list.value - ymins = example.features.feature['image/object/bbox/ymin'].float_list.value - xmaxs = example.features.feature['image/object/bbox/xmax'].float_list.value - ymaxs = example.features.feature['image/object/bbox/ymax'].float_list.value - classes = example.features.feature['image/object/class/text'].bytes_list.value - img_raw = (example.features.feature['image/encoded'].bytes_list.value[0]) - img_raw = np.fromstring(img_raw, dtype=np.uint8) - cv2_image = cv2.imdecode(img_raw, cv2.IMREAD_COLOR) - cv2.imwrite(str(output_folder/(filename+".JPG")),cv2_image) - with output_file.open('a') as out_csv: - tagwriter = csv.writer(out_csv) - for xmin, ymin, xmax, ymax, class_raw in zip(xmins, ymins, xmaxs, ymaxs, classes): - tagwriter.writerow([filename,class_raw.decode("utf-8"),float(xmin),float(xmax),float(ymin),float(ymax),height,width]) -if __name__ == "__main__": - import sys - if len(sys.argv)<3: - raise ValueError("Need to specify input file and output folder") - input_file = sys.argv[1] - output_folder = sys.argv[2] - decode_record(input_file, output_folder) diff --git a/utils/repartition_test_set.sh b/utils/repartition_test_set.sh deleted file mode 100644 index 6a1e17e3..00000000 --- a/utils/repartition_test_set.sh +++ /dev/null @@ -1,19 +0,0 @@ -# Separate test set -filearr=($(shuf -e $(find "$image_dir" -type f -name $filetype))) -test_num=$(echo "scale=0;${#filearr[@]}*${test_percentage}/1" | bc) - -mkdir -p ${image_dir}/test -mkdir -p ${image_dir}/train -# Separate test set -filearr=($(shuf -e $(ls -pL $image_dir | grep -v /))) -split=$(echo "scale=0;${#filearr[@]}*${train_percentage}/1" | bc) -for i in "${!filearr[@]}"; do - if (("$i" < "$split")); then - mv ${image_dir}/${filearr[$i]} ${image_dir}/train/${filearr[$i]} - else - mv ${image_dir}/${filearr[$i]} ${image_dir}/test/${filearr[$i]} - fi -done - -printf "%s\n" "${filearr[@]:0:$test_num}" > ${image_dir}/test.txt -az storage blob upload --container-name activelearninglabels --file ${image_dir}/test.txt --name test_$(date +%s).csv --account-name $AZURE_STORAGE_ACCOUNT --account-key $AZURE_STORAGE_KEY \ No newline at end of file From 0785ae57909545b1de7e41bda34ee58379d2b0cf Mon Sep 17 00:00:00 2001 From: Samiya Date: Tue, 20 Nov 2018 14:23:11 -0800 Subject: [PATCH 080/145] Dataviz (#44) * Added new charts to python notebook for data visualization as schema changes * Remove unnecessary warning --- dashboard/dashboard.ipynb | 164 +++++++++++++++++++++++++++++++++++--- 1 file changed, 155 insertions(+), 9 deletions(-) diff --git a/dashboard/dashboard.ipynb b/dashboard/dashboard.ipynb index ee2655ea..12a4b801 100644 --- a/dashboard/dashboard.ipynb +++ b/dashboard/dashboard.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -36,19 +36,19 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" ] }, - "execution_count": 4, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -62,8 +62,14 @@ " names.append(name)\n", " numbers.append(number)\n", "\n", - "trace = go.Pie(labels=names, values=numbers)\n", - "py.iplot([trace], filename='basic')" + "fig = {\n", + " 'data': [{'labels': names,\n", + " 'values': numbers,\n", + " 'type': 'pie'}],\n", + " 'layout': {'title': 'Tag state by count'}\n", + " }\n", + "\n", + "py.iplot(fig)" ] }, { @@ -75,8 +81,10 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, + "execution_count": 3, + "metadata": { + "scrolled": true + }, "outputs": [ { "name": "stdout", @@ -94,7 +102,7 @@ "" ] }, - "execution_count": 5, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -121,6 +129,144 @@ "fig = dict(data=data, layout=layout)\n", "py.iplot(fig, filename='basic-scatter')" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Top taggers " + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cursor = conn.cursor()\n", + "usernames = []\n", + "tagcounts = []\n", + "cursor.execute(\"SELECT e.username, count(*) as TagCount FROM image_info a join image_tags b on a.imageid = b.imageid join tags_classification c on b.imagetagid = c.imagetagid join classification_info d on c.classificationid = d.classificationid join user_info e on b.createdbyuser = e.userid group by e.username order by TagCount desc\")\n", + "for (username, tagcount) in cursor: \n", + " usernames.append(username)\n", + " tagcounts.append(tagcount)\n", + "\n", + "fig = {\n", + " 'data': [{'labels': usernames,\n", + " 'values': tagcounts,\n", + " 'type': 'pie'}],\n", + " 'layout': {'title': 'Top taggers by number of classifications'}\n", + " }\n", + "\n", + "py.iplot(fig)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "class_data = {}\n", + "cursor = conn.cursor()\n", + "cursor.execute(\"SELECT e.username, d.classificationname, count(*) as TagCount FROM image_info a join image_tags b on a.imageid = b.imageid join tags_classification c on b.imagetagid = c.imagetagid join classification_info d on c.classificationid = d.classificationid join user_info e on b.createdbyuser = e.userid group by e.username, d.classificationname order by TagCount desc\")\n", + "for (username, classname, tagcount) in cursor:\n", + " if username not in class_data:\n", + " class_data[username] = {}\n", + " class_data[username]['classnames'] = []\n", + " class_data[username]['tagcount'] = []\n", + " class_data[username]['classnames'].append(classname)\n", + " class_data[username]['tagcount'].append(tagcount)\n", + " \n", + "data = []\n", + "for key in class_data:\n", + " trace = go.Bar(\n", + " x=class_data[key]['classnames'],\n", + " y=class_data[key]['tagcount'],\n", + " name=key\n", + " )\n", + " data.append(trace)\n", + "\n", + "layout = go.Layout(\n", + " barmode='stack',\n", + " title='Top taggers by classification info'\n", + ")\n", + "fig = go.Figure(data=data, layout=layout)\n", + "py.iplot(fig, filename='stacked-bar')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cursor = conn.cursor()\n", + "cursor.execute('SELECT b.classificationname, count(*) AS ClassificationCount FROM tags_classification a join classification_info b on a.classificationid = b.classificationid group by classificationname order by ClassificationCount desc')\n", + "classnames = []\n", + "counts = []\n", + "for (classname, count) in cursor:\n", + " classnames.append(classname)\n", + " counts.append(count)\n", + "\n", + "trace = go.Bar(\n", + " x=classnames,\n", + " y=counts\n", + ")\n", + "data = [trace]\n", + "layout = dict(title = 'Top classifications', xaxis=dict(title='Classification'), yaxis=dict(title='Number of tags'))\n", + "fig = dict(data=data, layout=layout)\n", + "py.iplot(fig, filename='basic-plot')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From 67c8e404a57ab337501828698d0d12c9ee974758 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Mon, 26 Nov 2018 13:28:33 -0800 Subject: [PATCH 081/145] Getting image height/width during onboarding (#47) --- functions/pipeline/onboarding/__init__.py | 8 ++++++-- functions/pipeline/requirements.txt | 1 + requirements.txt | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index 5b1cb4f2..f295ba9b 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -3,6 +3,8 @@ import json import azure.functions as func +from urllib.request import urlopen +from PIL import Image from ..shared.db_provider import get_postgres_provider from ..shared.db_access import ImageTagDataAccess, ImageInfo from ..shared.onboarding import copy_images_to_permanent_storage @@ -85,8 +87,10 @@ def build_objects_from_url_list(url_list): # Split original image name from URL original_filename = url.split("/")[-1] # Create ImageInfo object (def in db_access.py) - # TODO: Figure out where actual height/width need to come from. Values are hard-coded for testing. - image = ImageInfo(original_filename, url, 50, 50) + + with Image.open(urlopen(url)) as img: + width, height = img.size + image = ImageInfo(original_filename, url, height, width) # Append image object to the list image_object_list.append(image) return image_object_list diff --git a/functions/pipeline/requirements.txt b/functions/pipeline/requirements.txt index 1ee794f5..e15905ca 100644 --- a/functions/pipeline/requirements.txt +++ b/functions/pipeline/requirements.txt @@ -7,3 +7,4 @@ grpcio-tools==1.14.2 protobuf==3.6.1 six==1.11.0 pg8000==1.12.3 +Pillow==5.3.0 diff --git a/requirements.txt b/requirements.txt index 6251e5a4..ce6355ef 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,4 @@ protobuf==3.6.1 requests six==1.11.0 pg8000==1.12.3 +Pillow==5.3.0 From 18bfe87153d6c2dd37add2b00ac18da956cadde2 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Mon, 26 Nov 2018 14:20:31 -0800 Subject: [PATCH 082/145] Changes to use the data access class in the db acceptance test (#46) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Changes to have acceptance test use DAL --- db/postgres-client.py | 156 +++--------------- .../pipeline/shared/db_access/db_access_v2.py | 1 + 2 files changed, 24 insertions(+), 133 deletions(-) diff --git a/db/postgres-client.py b/db/postgres-client.py index fe36cf72..a39d36b6 100644 --- a/db/postgres-client.py +++ b/db/postgres-client.py @@ -4,118 +4,12 @@ import random import os import time -from enum import IntEnum, unique +import logging +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +from functions.pipeline.shared.db_access import ImageTagDataAccess +from functions.pipeline.shared.db_provider import PostGresProvider, DatabaseInfo +from functions.pipeline.shared.db_access.db_access_v2 import generate_test_image_infos -@unique -class ImageTagState(IntEnum): - NOT_READY = 0 - READY_TO_TAG = 1 - TAG_IN_PROGRESS = 2 - COMPLETED_TAG = 3 - INCOMPLETE_TAG = 4 - ABANDONED = 5 - -# An entity class for a VOTT image -class ImageInfo(object): - def __init__(self, image_name, image_location, height, width): - self.image_name = image_name - self.image_location = image_location - self.height = height - self.width = width - -def get_connection(): - return __new_postgres_connection(os.environ['DB_HOST'],os.environ['DB_NAME'],os.environ['DB_USER'],os.environ['DB_PASS']) - -def __new_postgres_connection(host_name,db_name,db_user,db_pass): - return pg8000.connect(db_user, host=host_name, unix_sock=None, port=5432, database=db_name, password=db_pass, ssl=True, timeout=None, application_name=None) - -def __verify_connect_to_db(conn): - cursor = conn.cursor() - cursor.execute('select * from tagstate') - row = cursor.fetchone() - print() - while row: - print(str(row[0]) + " " + str(row[1])) - row = cursor.fetchone() - -def id_generator(size=6, chars=string.ascii_uppercase + string.digits): - return ''.join(random.choice(chars) for _ in range(size)) - -def generate_test_image_infos(count): - list_of_image_infos = [] - for i in range(count): - file_name = "{0}.jpg".format(id_generator(size=random.randint(4,10))) - image_location = "https://mock-storage.blob.core.windows.net/new-uploads/{0}".format(file_name) - img = ImageInfo(file_name,image_location,random.randint(100,600),random.randint(100,600)) - list_of_image_infos.append(img) - return list_of_image_infos - -# TODO: Use bulk insert: https://stackoverflow.com/questions/5875953/returning-multiple-serial-values-from-posgtres-batch-insert -def get_image_ids_for_new_images(conn, list_of_image_infos, user_id): - url_to_image_id_map = {} - if(len(list_of_image_infos) > 0 and user_id): - cursor = conn.cursor() - for img in list(list_of_image_infos): - query = "INSERT INTO Image_Info (OriginalImageName,ImageLocation,Height,Width,CreatedByUser) VALUES ('{0}','{1}',{2},{3},{4}) RETURNING ImageId;" - cursor.execute(query.format(img.image_name,img.image_location,str(img.height),str(img.width),user_id)) - new_img_id = cursor.fetchone()[0] - url_to_image_id_map[img.image_location] = new_img_id - #__update_images(conn,[new_img_id],ImageTagState.NOT_READY) - conn.commit() - print("Inserted {0} images to the DB".format(len(url_to_image_id_map))) - return url_to_image_id_map - -def get_new_images(conn,number_of_images, user_id): - cursor = conn.cursor() - - # GET N existing UNTAGGED rows - selected_images_to_tag = {} - query = ("SELECT b.ImageId, b.ImageLocation, a.TagStateId FROM Image_Tagging_State a " - "JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = 1 order by " - "a.createddtim DESC limit {0}") - cursor.execute(query.format(number_of_images)) - for row in cursor: - print('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) - selected_images_to_tag[str(row[0])] = str(row[1]) - - __update_images(conn,selected_images_to_tag,ImageTagState.TAG_IN_PROGRESS, user_id) - return selected_images_to_tag.values() - -def update_image_urls(conn,image_id_to_url_map, user_id): - if(len(image_id_to_url_map.items()) and user_id): - for image_id, new_url in image_id_to_url_map.items(): - cursor = conn.cursor() - query = "UPDATE Image_Info SET ImageLocation = '{0}', ModifiedDtim = now() WHERE ImageId = {1}" - cursor.execute(query.format(new_url,image_id)) - conn.commit() - print("Updated ImageId: {0} to new ImageLocation: {1}".format(image_id,new_url)) - __update_images(conn,[image_id],ImageTagState.READY_TO_TAG, user_id) - print("ImageId: {0} to has a new state: {1}".format(image_id,ImageTagState.READY_TO_TAG.name)) - - -def update_tagged_images(conn,list_of_image_ids, user_id): - __update_images(conn,list_of_image_ids,ImageTagState.COMPLETED_TAG,user_id) - print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.COMPLETED_TAG.name)) - -def update_untagged_images(conn,list_of_image_ids, user_id): - __update_images(conn,list_of_image_ids,ImageTagState.INCOMPLETE_TAG,user_id) - print("Updated {0} image(s) to the state {1}".format(len(list_of_image_ids),ImageTagState.INCOMPLETE_TAG.name)) - -def __update_images(conn, list_of_image_ids, new_image_tag_state, user_id): - if not isinstance(new_image_tag_state, ImageTagState): - raise TypeError('new_image_tag_state must be an instance of Direction Enum') - - if(len(list_of_image_ids) > 0 and user_id): - cursor = conn.cursor() - image_ids_as_strings = [str(i) for i in list_of_image_ids] - images_to_update = '{0}'.format(', '.join(image_ids_as_strings)) - query = "UPDATE Image_Tagging_State SET TagStateId = {0}, ModifiedByUser = {2}, ModifiedDtim = now() WHERE ImageId IN ({1})" - cursor.execute(query.format(new_image_tag_state,images_to_update,user_id)) - conn.commit() - #print(f"Updated {len(list_of_image_ids)} image(s) to the state {new_image_tag_state.name}") - else: - print("No images to update") - def get_transformed_id_to_url_map(id_to_url_map): updated_image_id_url_map = {} for image_id, old_url in id_to_url_map.items(): @@ -147,19 +41,6 @@ def pretty_print_audit_history(conn, list_of_image_ids): else: print("No images!") -def create_user(conn,user_name): - user_id = -1 - if user_name: - try: - cursor = conn.cursor() - query = "INSERT INTO User_Info (UserName) VALUES ('{0}') ON CONFLICT (username) DO UPDATE SET username=EXCLUDED.username RETURNING UserId;" - cursor.execute(query.format(user_name)) - user_id = cursor.fetchone()[0] - conn.commit() - except Exception as e: print(e) - finally: cursor.close() - return user_id - def extract_image_name_no_suffix(url): start_idx = url.rfind('/')+1 end_idx = url.rfind('.') @@ -193,7 +74,10 @@ def main(num_of_images,user_name): # Checking in images that have or have not been tagged ################################################################# - user_id = create_user(get_connection(),user_name) + db_config = DatabaseInfo(os.getenv("DB_HOST"),os.getenv("DB_NAME"),os.getenv("DB_USER"),os.getenv("DB_PASS")) + pg = PostGresProvider(db_config) + data_access = ImageTagDataAccess(pg) + user_id = data_access.create_user(user_name) NUMBER_OF_IMAGES = num_of_images @@ -205,7 +89,7 @@ def main(num_of_images,user_name): print() # Simulate the data access layer creating entries in the DB for the new images # and returning a map of the original image url to generaled image id - url_to_image_id_map = get_image_ids_for_new_images(get_connection(),mocked_images, user_id) + url_to_image_id_map = data_access.add_new_images(mocked_images, user_id) print() print("***\tBehind the scenes Az Functions move the images to a new blob location") @@ -220,7 +104,7 @@ def main(num_of_images,user_name): # Simulates the call the client makes to the data access layer # with the new payload. Image urls get updated in the DB - update_image_urls(get_connection(),updated_image_id_url_map, user_id) + data_access.update_image_urls(updated_image_id_url_map, user_id) print() print("***\tThe newly uploaded images are now onboarded with a 'ready to tag' state. See audit history") @@ -230,7 +114,7 @@ def main(num_of_images,user_name): # Prints the audit history of the generated of all the newly onboarded # images involved in the simulation to prove the state tracking for onboarding. image_ids = list(updated_image_id_url_map.keys()) - pretty_print_audit_history(get_connection(),image_ids) + pretty_print_audit_history(pg.get_connection(),image_ids) time.sleep(3) print() @@ -238,7 +122,7 @@ def main(num_of_images,user_name): time.sleep(2) print() - list_of_image_urls = get_new_images(get_connection(),NUMBER_OF_IMAGES, user_id) + list_of_image_urls = data_access.get_images_for_tagging(NUMBER_OF_IMAGES, user_id) print() print("***\tLet's wait for image taggers to get through the set of images....") time.sleep(5) @@ -247,6 +131,7 @@ def main(num_of_images,user_name): time.sleep(2) print() + ''' print("***\tRegardless the SMEs use the CLI to post the VOTT json results") print() # Since we rename the original image name to a integer that matchs the DB image id @@ -265,8 +150,8 @@ def main(num_of_images,user_name): else: incomplete_tagged_ids.append(img_id) - update_tagged_images(get_connection(),completed_tagged_ids,user_id) - update_untagged_images(get_connection(),incomplete_tagged_ids,user_id) + data_access.update_tagged_images(completed_tagged_ids,user_id) + data_access.update_incomplete_images(incomplete_tagged_ids,user_id) print() print("***\tVOTT json results are posted. Lets take a look at the audit history") @@ -274,16 +159,21 @@ def main(num_of_images,user_name): # Finally lets look at the audit history again. We expect to see some images as tagged # and some as incomplete print() - pretty_print_audit_history(get_connection(),image_ids) + pretty_print_audit_history(pg.get_connection(),image_ids) print() print("Success!") - + ''' #__verify_connect_to_db(get_connection()) #get_unvisited_items(get_connection(),count_of_images) except Exception as e: print(e) if __name__ == "__main__": + #print(sys.path) + console = logging.StreamHandler() + log = logging.getLogger() + log.setLevel(logging.getLevelName('DEBUG')) + log.addHandler(console) if (len(sys.argv) != 3): print("Usage: {0} (Number of Images) (User Name)".format(sys.argv[0])) else: diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index 8d0efee8..f4040140 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -392,5 +392,6 @@ def id_generator(size=6, chars=string.ascii_uppercase + string.digits): #Log to console when run locally console = logging.StreamHandler() log = logging.getLogger() + log.setLevel(logging.getLevelName('DEBUG')) log.addHandler(console) main() From be7efea6eb4c2e76262cfcc0d2539ee58fef30c3 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Mon, 26 Nov 2018 14:24:23 -0800 Subject: [PATCH 083/145] Abrig/predictions (#45) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Added new tables * Changes to order and primary keys --- db/data/seed_tag_states.sql | 2 +- db/tables/000_tag_state.sql | 4 ++-- db/tables/010_training_info.sql | 10 ++++++++++ db/tables/100_image_tagging_state.sql | 2 +- db/tables/110_prediction_info.sql | 8 ++++++++ 5 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 db/tables/010_training_info.sql create mode 100644 db/tables/110_prediction_info.sql diff --git a/db/data/seed_tag_states.sql b/db/data/seed_tag_states.sql index 8f8ad5c1..8999dad2 100644 --- a/db/data/seed_tag_states.sql +++ b/db/data/seed_tag_states.sql @@ -1,5 +1,5 @@ -- Set up the states -INSERT INTO TagState VALUES +INSERT INTO Tag_State VALUES (0, 'Not Ready'), (1, 'Ready To Tag'), (2, 'Tag In Progress'), diff --git a/db/tables/000_tag_state.sql b/db/tables/000_tag_state.sql index 0b664649..2c77972d 100644 --- a/db/tables/000_tag_state.sql +++ b/db/tables/000_tag_state.sql @@ -1,5 +1,5 @@ -- Set up table -CREATE TABLE TagState ( - TagStateId integer NOT NULL, +CREATE TABLE Tag_State ( + TagStateId integer PRIMARY KEY, TagStateName text NOT NULL ); \ No newline at end of file diff --git a/db/tables/010_training_info.sql b/db/tables/010_training_info.sql new file mode 100644 index 00000000..e4c8f444 --- /dev/null +++ b/db/tables/010_training_info.sql @@ -0,0 +1,10 @@ +CREATE TABLE Training_Info ( + TrainingId SERIAL PRIMARY KEY, + TrainingDescription text, + ModelLocation text NOT NULL, + --Consider additional metadata like a path to zip file + --containing the pipeline.config, model, etc. + CreatedByUser integer REFERENCES User_Info(UserId), + ModifiedDtim timestamp NOT NULL default current_timestamp, + CreatedDtim timestamp NOT NULL default current_timestamp +); diff --git a/db/tables/100_image_tagging_state.sql b/db/tables/100_image_tagging_state.sql index d8a1207e..0aad85ce 100644 --- a/db/tables/100_image_tagging_state.sql +++ b/db/tables/100_image_tagging_state.sql @@ -1,7 +1,7 @@ -- Set up table and autoincrementing primary key CREATE TABLE Image_Tagging_State ( ImageId integer REFERENCES Image_Info(ImageId), - TagStateId integer NOT NULL, + TagStateId integer REFERENCES Tag_State(TagStateId), ModifiedByUser integer REFERENCES User_Info(UserId), ModifiedDtim timestamp NOT NULL default current_timestamp, CreatedDtim timestamp NOT NULL default current_timestamp diff --git a/db/tables/110_prediction_info.sql b/db/tables/110_prediction_info.sql new file mode 100644 index 00000000..1dfef37e --- /dev/null +++ b/db/tables/110_prediction_info.sql @@ -0,0 +1,8 @@ +CREATE TABLE Prediction_Info ( + ImageTagId integer REFERENCES Image_Tags(ImageTagId), + ClassificationId integer REFERENCES Classification_Info(ClassificationId), + TrainingId integer REFERENCES Training_Info(TrainingId), + BoxConfidence decimal(5,4) NOT NULL, + ImageConfidence decimal(5,4) NOT NULL, + PRIMARY KEY (ImageTagId,ClassificationId,TrainingId) +); \ No newline at end of file From 10b4a41f47974ced48b6a7a4c6d3e0c396a7cd0b Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Mon, 26 Nov 2018 18:36:54 -0600 Subject: [PATCH 084/145] Fixing storage container access + linting (#48) --- cli/operations.py | 16 ++++++++++++---- db/install-db-resources.py | 14 +++++++------- devops/deployment/Deploy-Infrastructure.sh | 4 ++-- .../{create-storage.sh => Deploy-Storage.sh} | 4 ++-- functions/pipeline/onboarding/__init__.py | 4 ++-- 5 files changed, 25 insertions(+), 17 deletions(-) rename devops/deployment/{create-storage.sh => Deploy-Storage.sh} (87%) diff --git a/cli/operations.py b/cli/operations.py index 441483ab..48ae3751 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -33,9 +33,15 @@ def onboard(config, folder_name): print('Uploading image ' + image) # Upload the created file, use image name for the blob name - blob_storage.create_blob_from_path(config.get("storage_container"), image, local_path, content_settings=ContentSettings(content_type='image/png')) + blob_storage.create_blob_from_path( + config.get("storage_container"), + image, + local_path, + content_settings=ContentSettings(content_type='image/png') + ) + images.append(uri + image) - + # Post this data to the server to add them to database and kick off active learning data = {} data['imageUrls'] = images @@ -47,6 +53,8 @@ def onboard(config, folder_name): #TODO: Ensure we don't get 4xx or 5xx return codes response = requests.post(functions_url, data=json.dumps(data), headers=headers, params=query) + response.raise_for_status() + json_resp = response.json() count = len(json_resp['imageUrls']) print("Successfully uploaded " + str(count) + " images.") @@ -120,7 +128,7 @@ def download_images(config, image_dir, json_resp): file_name = url.split('/')[-1] #TODO: We will download an empty file if we get a permission error on the blob store URL - # We should raise an exception. For now the blob store must be publically accessible + # We should raise an exception. For now the blob store must be publically accessible response = requests.get(url) file_path = pathlib.Path(image_dir / file_name) @@ -210,7 +218,7 @@ def trim_file_paths(json_data): munged_visited_frames = [] for frame_path in visited_frames: - #TODO: This line assumes that the visited frames name is a full path. + #TODO: This line assumes that the visited frames name is a full path. # Centralize this business logic in the codebase. It probably exists in shared code too munged_visited_frames.append( pathlib.Path(frame_path).name diff --git a/db/install-db-resources.py b/db/install-db-resources.py index a08af4dd..6dfbbb89 100755 --- a/db/install-db-resources.py +++ b/db/install-db-resources.py @@ -24,7 +24,7 @@ def execute_queries_from_map(conn, file_query_map): for file_path,query in file_query_map.items(): cursor.execute(query) conn.commit() - print("\t{0}".format(file_path)) + print("\t{0}".format(file_path)) return def database_exists(conn, db_name): @@ -65,7 +65,7 @@ def install_extensions(conn, list_of_extensions): if (len(list_of_extensions) > 0): cursor = conn.cursor() conn.autocommit = True - for ext in list_of_extensions: + for ext in list_of_extensions: query = "CREATE EXTENSION {0};" cursor.execute(query.format(ext)) print("Installed extension named '{0}'".format(ext)) @@ -107,10 +107,10 @@ def main(db_name, overwrite_db): if(os.getenv("DB_HOST") is None or os.getenv("DB_USER") is None or os.getenv("DB_PASS") is None): print("Please set environment variables for DB_HOST, DB_USER, DB_PASS") return - + if (database_exists(get_default_connection(), db_name) and overwrite_db): remove_database(get_default_connection(),db_name) - elif (database_exists(get_default_connection(), db_name) and not overwrite_db): + elif (database_exists(get_default_connection(), db_name) and not overwrite_db): print("Database {0} already exists. Please see --help for overwrite option.".format(db_name)) return @@ -121,12 +121,12 @@ def main(db_name, overwrite_db): install_extensions(get_connection_for_db(db_name),['citext']) #Connect to the new database and install resources - conn = get_connection_for_db(db_name) + conn = get_connection_for_db(db_name) sub_dirs = ["tables","functions","triggers","data"] execute_files_in_dir_list(conn,sub_dirs) print("Done!") - except Exception as e: + except Exception as e: print(e) #traceback.print_exc() @@ -141,4 +141,4 @@ def main(db_name, overwrite_db): args = parser.parse_args() database_name = args.database_name - main(args.database_name,args.overwrite) + main(args.database_name,args.overwrite) diff --git a/devops/deployment/Deploy-Infrastructure.sh b/devops/deployment/Deploy-Infrastructure.sh index d91445df..a1fc5098 100755 --- a/devops/deployment/Deploy-Infrastructure.sh +++ b/devops/deployment/Deploy-Infrastructure.sh @@ -61,7 +61,7 @@ export RESOURCE_GROUP=$RESOURCE_GROUP export STORAGE_NAME=$PROJECT_STORAGE_ACCOUNT export STORAGE_TEMP_CONTAINER=$PROJECT_STORAGE_TEMP_CONTAINER export STORAGE_PERM_CONTAINER=$PROJECT_STORAGE_PERM_CONTAINER -./create-storage.sh +./Deploy-Storage.sh if [ "$?" -ne 0 ]; then echo "Unable to create storage accounts and containers" exit 1 @@ -88,7 +88,7 @@ if [ "$?" -ne 0 ]; then fi . ./Deploy-Pipeline-Functions.sh $FUNCTION_APP_NAME ../../functions/pipeline -if [ "$?" -ne 0 ]; then +if [ "$?" -ne 0 ]; then echo "Unable to deploy pipeline functions" exit 1 fi \ No newline at end of file diff --git a/devops/deployment/create-storage.sh b/devops/deployment/Deploy-Storage.sh similarity index 87% rename from devops/deployment/create-storage.sh rename to devops/deployment/Deploy-Storage.sh index 486772eb..0cd2b0e2 100755 --- a/devops/deployment/create-storage.sh +++ b/devops/deployment/Deploy-Storage.sh @@ -26,9 +26,9 @@ az storage account create --resource-group $RESOURCE_GROUP --name $STORAGE_NAME STORAGE_KEY=$(az storage account keys list -n $STORAGE_NAME --resource-group $RESOURCE_GROUP --query [0].value) echo "Creating Temporary Storage Container" -az storage container create -n $STORAGE_TEMP_CONTAINER --account-key $STORAGE_KEY --account-name $STORAGE_NAME +az storage container create -n $STORAGE_TEMP_CONTAINER --account-key $STORAGE_KEY --account-name $STORAGE_NAME --public-access container echo "Creating Permanent Storage Container" -az storage container create -n $STORAGE_PERM_CONTAINER --account-key $STORAGE_KEY --account-name $STORAGE_NAME +az storage container create -n $STORAGE_PERM_CONTAINER --account-key $STORAGE_KEY --account-name $STORAGE_NAME --public-access container echo "Done!" \ No newline at end of file diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index f295ba9b..684c8c5f 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -32,7 +32,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: if not raw_url_list: return func.HttpResponse("ERROR: URL list empty.", status_code=401) - + # Check to ensure image URLs sent by client are all unique. url_list = set(raw_url_list) @@ -44,7 +44,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: try: data_access = ImageTagDataAccess(get_postgres_provider()) - user_id= data_access.create_user(user_name) + user_id = data_access.create_user(user_name) logging.debug("Add new images to the database, and retrieve a dictionary ImageId's mapped to ImageUrl's") image_id_url_map = data_access.add_new_images(image_object_list,user_id) From f1ca1aeaf6100d987f3da5c0c2184625c86a74cd Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Tue, 27 Nov 2018 13:19:19 -0800 Subject: [PATCH 085/145] Adding scripts to set up Active Learning on DSVM (#49) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Adding a script to setup TF env on DSVM --- devops/dsvm/README.md | 17 ++++++++++++ devops/dsvm/setup-tensorflow.py | 47 +++++++++++++++++++++++++++++++++ devops/dsvm/setup-tensorflow.sh | 47 +++++++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 devops/dsvm/README.md create mode 100644 devops/dsvm/setup-tensorflow.py create mode 100644 devops/dsvm/setup-tensorflow.sh diff --git a/devops/dsvm/README.md b/devops/dsvm/README.md new file mode 100644 index 00000000..00c11b5c --- /dev/null +++ b/devops/dsvm/README.md @@ -0,0 +1,17 @@ +# Setting up an Azure DSVM for Active Learning + +We provide a module that will copy over a shell script to your DSVM and execute the shell script to setup an active learning environment. + +We requirement that your ssh key be added to the SSH agent. You can do so my using the **_ssh-add_** command + +```sh +$ ssh-add -K ~/.ssh/act-learn-key +``` + +To copy and execute the shells script use the following command + +```sh +$ python setup-tensorflow.py --host admin@127.0.0.1 -k ~/.ssh/act-learn-key -s setup-tensorflow.sh +``` + +Note that in the host argument **_admin_**@127.0.0.1 section is the DSVM Admin name and admin@**_127.0.0.1_** is the IP address of the DSVM. \ No newline at end of file diff --git a/devops/dsvm/setup-tensorflow.py b/devops/dsvm/setup-tensorflow.py new file mode 100644 index 00000000..abff23eb --- /dev/null +++ b/devops/dsvm/setup-tensorflow.py @@ -0,0 +1,47 @@ +import os +import argparse +from fabric import * + +def get_connection(dsvm_host,ssh_key_path): + #http://docs.fabfile.org/en/2.4/api/connection.html + return Connection(host=dsvm_host,connect_kwargs={"key_filename": ssh_key_path}) + +def main(host,ssh_key_path,script_path): + #ip_address = 'abrig@13.68.227.63' + #local_ssh_key_path = '/Users/andrebriggs/.ssh/act-learn-key' + #tf_setup_script = "setup-tensorflow.sh" + + no_errors = True + try: + with get_connection(host,ssh_key_path) as c: + result = c.run("rm -f ~/{0}".format(script_path)) + print("Ran {0.command!r} on {0.connection.host}, got stdout:\n{0.stdout}".format(result)) + print("Copying {0} to remote machine at {1}".format(script_path,host)) + c.put(script_path) + print("Executing {0} on remote machine".format(script_path)) + result = c.run("sh {0}".format(script_path)) + except Exception as e: + print(str(e)) + no_errors = False + finally: + return no_errors + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Sets up an active learning environment on a DSVM") + + parser.add_argument('--host', default=os.environ.get('DSVM_HOST', None), + help="A host name in the form of (UserName)@IpAddress (e.g. admin@127.0.0.1)") + + parser.add_argument('-k','--sshKeyPath', default=os.environ.get('DSVM_SSH_KEY_PATH', None), + help="Path to local private key for VM. (e.g. /Users/JohnDoe/.ssh/act-learn-key). Be sure run ssh-add -K ~/.ssh/act-learn-key first") + + parser.add_argument('-s','--scriptPath', default=os.environ.get('DSVM_SCRIPT', None), + help="Path to script that will be copied to DSVM and executed") + + args = parser.parse_args() + + if not args.host or not args.sshKeyPath or not args.scriptPath: + exit(parser.print_usage()) + + main(args.host,args.sshKeyPath,args.scriptPath) + diff --git a/devops/dsvm/setup-tensorflow.sh b/devops/dsvm/setup-tensorflow.sh new file mode 100644 index 00000000..f7536554 --- /dev/null +++ b/devops/dsvm/setup-tensorflow.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +#This script automates the instructions from here: +#https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md +# + +#Fail on first error +set -e +#Suppress expanding variables before printing. +set +x +set +v + +#When executing on a DSVM over SSH some paths for pip, cp, make, etc may not be in the path, +export PATH=/anaconda/envs/py35/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/caffe/build/install/bin/:/usr/local/cuda/bin:/dsvm/tools/cntk/cntk/bin:/usr/local/cuda/bin:/dsvm/tools/cntk/cntk/bin:/dsvm/tools/spark/current/bin:/opt/mssql-tools/bin:/bin + +echo -e '\n*******\tClone Tensorflow Models\t*******\n' +git clone https://github.com/tensorflow/models.git repos/models + +echo -e '\n*******\tInstall Tensorflow package\t*******\n' +cd repos/models/ && pip install tensorflow-gpu + +echo -e '\n*******\tInstall COCO API\t*******\n' +cd ~/ +git clone https://github.com/cocodataset/cocoapi.git repos/cocoapi +cd repos/cocoapi/PythonAPI/ +make +cp -r pycocotools ~/repos/models/research/ + +echo -e '\n*******\tSetup Protocal Buffer\t******\n' +cd ~/ +cd repos/models/research/ +wget -O protobuf.zip https://github.com/google/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_64.zip +unzip -o protobuf.zip +./bin/protoc object_detection/protos/*.proto --python_out=. + +echo -e '\n*******\tSetup Python Path\t******\n' +export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim + +echo -e '\n*******\tRunning Object Detection Tests\t******\n' +python object_detection/builders/model_builder_test.py + +echo -e '\n*******\tClone Active Learning\t*******\n' +git clone https://github.com/CatalystCode/active-learning-detect + + +#Update the config.ini file at repos/models/research/active-learning-detect +echo -e 'Objection dectection install validation complete' \ No newline at end of file From 26162e2ced1703f9c2600a7942d62047739db0a6 Mon Sep 17 00:00:00 2001 From: Samiya Date: Tue, 27 Nov 2018 13:42:00 -0800 Subject: [PATCH 086/145] Creating csv file from vott metadata (#51) --- cli/training.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/cli/training.py b/cli/training.py index 21635203..5ac51e83 100644 --- a/cli/training.py +++ b/cli/training.py @@ -1,5 +1,6 @@ import argparse import os +import csv import requests from azure.storage.blob import BlockBlobService, ContentSettings from utils.config import Config @@ -19,6 +20,7 @@ def __init__(self, imageUrl, name, tags, x1, x2, y1, y2, height, width): self.name = name self.imageUrl = imageUrl + def train(config, num_images): # First, download vott json for tagging complete images vott_json = download_vott_json(config, num_images) @@ -26,6 +28,9 @@ def train(config, num_images): # Grab these images from the blob storage download_images(vott_json) + # create csv file from this data + convert_to_csv(vott_json) + def download_images(vott_json): blob_storage = BlobStorage.get_azure_storage_client(config) @@ -59,6 +64,17 @@ def download_vott_json(config, num_images): print(vott_json) return vott_json + + +def convert_to_csv(vott_json): + with open('data.csv', 'w') as csvfile: + filewriter = csv.writer(csvfile, delimiter=',', + quotechar='|', quoting=csv.QUOTE_MINIMAL) + for item in vott_json: + for tags in vott_json[item]: + for tag in tags.tags: + data = [tags.name, tag, tags.x1, tags.x2, tags.y1, tags.y2, tags.height, tags.width, '', 0, 0] + filewriter.writerow(data) if __name__ == "__main__": From ddf8a93c995ef74d7b9c5e5b92f904f929241d5c Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Tue, 27 Nov 2018 13:42:11 -0800 Subject: [PATCH 087/145] Adding stubs for onboard container, removing un-used code (#50) --- cli/README.md | 10 ++-- cli/cli.py | 30 +++++++----- cli/operations.py | 104 +++++++++++++-------------------------- cli/test_operations.py | 109 +---------------------------------------- 4 files changed, 60 insertions(+), 193 deletions(-) diff --git a/cli/README.md b/cli/README.md index 5de0576e..e8afd37c 100644 --- a/cli/README.md +++ b/cli/README.md @@ -30,9 +30,9 @@ TAGGING_USER="bhargav" `FUNCTIONS_KEY` is the Azure Functions Key that allows your CLI to authenticate with the management function `FUNCTIONS_URL` is the URL of the Function deployed to Azure -`STORAGE_ACCOUNT` is the name of the Azure Storage Account used to upload images and vott json. +`STORAGE_ACCOUNT` is the name of the Azure Storage Account used to upload images `STORAGE_KEY` is the secret key of the Azure Storage Account -`STORAGE_CONTAINER` is the name of the container where the CLI deposits vott json files. +`STORAGE_CONTAINER` is the name of the container where the CLI deposits your image files. `TAGGING_LOCATION` is the location on the user's machine where media will be downloaded `TAGGING_USER` is your username. @@ -41,9 +41,11 @@ TAGGING_USER="bhargav" #### Initialize a dataset/Onboard an existing dataset. -*Not Implemented* +Usage: `python3 -m cli onboard -f /path/to/images/` -Usage: `python3 -m cli onboard` +Assuming your directory `/path/to/images` is a flat directory of images, you can use this CLI invocation to upload your images to a temporary storage container. + +The onboarding function is then invoked, processing your images into the database, making them available for downloading. #### Download diff --git a/cli/cli.py b/cli/cli.py index 1793dd0f..c8c2bb4e 100644 --- a/cli/cli.py +++ b/cli/cli.py @@ -1,16 +1,17 @@ import argparse +import os + from utils.config import Config from operations import ( download, upload, - onboard, + onboard_folder, + onboard_container, LOWER_LIMIT, - UPPER_LIMIT, - CONFIG_PATH + UPPER_LIMIT ) if __name__ == "__main__": - # how i want to use the tool: # cli.py download --num-images 40 # cli.py upload @@ -21,20 +22,25 @@ choices=['download', 'upload', 'onboard'] ) - parser.add_argument('-f', '--folder') + parser.add_argument('-f', '--folder') + parser.add_argument('-c', '--container') parser.add_argument('-n', '--num-images', type=int) - args = parser.parse_args() + args = parser.parse_args() operation = args.operation + config_path = os.environ.get('ALCONFIG') - config = Config.read_config(CONFIG_PATH) + config = Config.read_config(config_path) if operation == 'download': download(config, args.num_images) - elif operation == 'onboard' and not args.folder: - print ("--folder arg required for onboard operation") - elif operation == 'onboard' and args.folder: - onboard(config, args.folder) + elif operation == 'onboard': + if args.folder: + onboard_folder(config, args.folder) + elif args.container: + onboard_container(config, args.container) + else: + print("No folder or container argument \ + passed - nothing to onboard") else: upload(config) - diff --git a/cli/operations.py b/cli/operations.py index 48ae3751..6959a8a7 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -1,6 +1,5 @@ import requests import time -import os import shutil import json import copy @@ -12,35 +11,44 @@ LOWER_LIMIT = 0 UPPER_LIMIT = 100 -CONFIG_PATH = os.environ.get('ALCONFIG', None) - azure_storage_client = None - class ImageLimitException(Exception): pass -#TODO We should create the container if it does not exist -def onboard(config, folder_name): + +def supported_file_type(file_name): + file_suffix = pathlib.Path(file_name).suffix.lower() + if file_suffix in ['.png', '.jpg', '.jpeg', '.gif']: + return True + else: + return False + + +# TODO We should create the container if it does not exist +def onboard_folder(config, folder_name): blob_storage = BlobStorage.get_azure_storage_client(config) uri = 'https://' + config.get("storage_account") + '.blob.core.windows.net/' + config.get("storage_container") + '/' functions_url = config.get('url') + '/api/onboarding' user_name = config.get("tagging_user") images = [] - for image in os.listdir(folder_name): - if image.lower().endswith('.png') or image.lower().endswith('.jpg') or image.lower().endswith('.jpeg') or image.lower().endswith('.gif'): - local_path=os.path.join(folder_name, image) - print('Uploading image ' + image) - # Upload the created file, use image name for the blob name - blob_storage.create_blob_from_path( - config.get("storage_container"), - image, - local_path, - content_settings=ContentSettings(content_type='image/png') - ) + for image in os.listdir(folder_name): + if not supported_file_type(image): + continue + + local_path = os.path.join(folder_name, image) + print('Uploading image ' + image) + + # Upload the created file, use image name for the blob name + blob_storage.create_blob_from_path( + config.get("storage_container"), + image, + local_path, + content_settings=ContentSettings(content_type='image/png') + ) - images.append(uri + image) + images.append(uri + image) # Post this data to the server to add them to database and kick off active learning data = {} @@ -51,7 +59,6 @@ def onboard(config, folder_name): "userName": user_name } - #TODO: Ensure we don't get 4xx or 5xx return codes response = requests.post(functions_url, data=json.dumps(data), headers=headers, params=query) response.raise_for_status() @@ -61,6 +68,12 @@ def onboard(config, folder_name): for url in json_resp['imageUrls']: print(url) + +def onboard_container(config, container): + print("onboarding from storage container") + pass + + def _download_bounds(num_images): images_to_download = num_images @@ -127,7 +140,7 @@ def download_images(config, image_dir, json_resp): file_name = url.split('/')[-1] - #TODO: We will download an empty file if we get a permission error on the blob store URL + # TODO: We will download an empty file if we get a permission error on the blob store URL # We should raise an exception. For now the blob store must be publically accessible response = requests.get(url) file_path = pathlib.Path(image_dir / file_name) @@ -154,31 +167,12 @@ def write_vott_data(image_dir, json_resp): print("Corrupted VOTT data received.") return - vott_json_with_fixed_paths = prepend_file_paths(image_dir, vott_json) - with open(str(data_file), "wb") as file: - vott_json_string = json.dumps(vott_json_with_fixed_paths) + vott_json_string = json.dumps(vott_json) file.writelines(vott_json_string) file.close() -def prepend_file_paths(image_dir, vott_json): - # Don't clobber the response. - modified_json = copy.deepcopy(vott_json) - frames = modified_json["frames"] - - # Replace the frame keys with the fully qualified path - # for the image. Should look something like: - # This is the /path/to/tagging_location/data/1.png in the end. - for frame_key in frames.keys(): - new_key = str(pathlib.Path(image_dir / frame_key)) - frames[new_key] = frames.pop(frame_key) - - modified_json["frames"] = frames - - return modified_json - - def upload(config): functions_url = config.get("url") + "/api/upload" user_name = config.get("tagging_user") @@ -192,40 +186,12 @@ def upload(config): with open(str(vott_json)) as json_file: json_data = json.load(json_file) - # Munge the vott json file. - munged_json = trim_file_paths(json_data) - query = { "userName": user_name } - response = requests.post(functions_url, json=munged_json, params=query) + response = requests.post(functions_url, json=json_data, params=query) response.raise_for_status() resp_json = response.json() print("Done!") - - -def trim_file_paths(json_data): - modified_json = copy.deepcopy(json_data) - - munged_frames = modified_json["frames"] - visited_frames = modified_json["visitedFrames"] - - for frame_key in munged_frames.keys(): - frame_name = pathlib.Path(frame_key).name - munged_frames[frame_name] = munged_frames.pop(frame_key) - - munged_visited_frames = [] - for frame_path in visited_frames: - #TODO: This line assumes that the visited frames name is a full path. - # Centralize this business logic in the codebase. It probably exists in shared code too - munged_visited_frames.append( - pathlib.Path(frame_path).name - ) - - modified_json["frames"] = munged_frames - modified_json["visitedFrames"] = munged_visited_frames - - return modified_json - diff --git a/cli/test_operations.py b/cli/test_operations.py index e5329373..5b0c0a51 100644 --- a/cli/test_operations.py +++ b/cli/test_operations.py @@ -22,9 +22,7 @@ ImageLimitException, DEFAULT_NUM_IMAGES, LOWER_LIMIT, - UPPER_LIMIT, - prepend_file_paths, - trim_file_paths + UPPER_LIMIT ) @@ -114,110 +112,5 @@ def test_acceptable_config(self): Config.read_config_with_parsed_config(mock_data) - -class TestPrependFilepaths(unittest.TestCase): - def _mock_json(self): - json_str_fixture = """ - { - "frames": { - "st1012.png": [ - { - } - ], - "st1013.png": [ - { - } - ], - "st1014.png": [ - { - } - ] - }, - "visitedFrames": [ - ] - } - """ - - return json.loads(json_str_fixture) - - def test_correct_number_of_paths(self): - json_resp = self._mock_json() - - data_path = pathlib.Path('/data') - prepended_json = prepend_file_paths(data_path, json_resp) - - self.assertEqual(3, len(prepended_json['frames'])) - - def test_correct_paths(self): - json_resp = self._mock_json() - - data_path = pathlib.Path('/data') - expected = ['/data/st1012.png', '/data/st1013.png', '/data/st1014.png'] - prepended_json = prepend_file_paths(data_path, json_resp) - - for key in prepended_json['frames'].keys(): - self.assertIn(key, expected) - - def test_deep_copy(self): - json_resp = self._mock_json() - data_path = pathlib.Path('/data') - - prepended_json = prepend_file_paths(data_path, json_resp) - self.assertNotEqual(id(json_resp), id(prepended_json)) - - -class TestTrimFilepaths(unittest.TestCase): - def _mock_json(self): - json_str_fixture = """ - { - "frames": { - "/data/st1012.png": [ - { - } - ], - "/data/st1013.png": [ - { - } - ], - "/data/st1014.png": [ - { - } - ] - }, - "visitedFrames": [ - "/data/st1012.png", - "/data/st1013.png", - "/data/st1014.png" - ] - } - """ - - return json.loads(json_str_fixture) - - def test_trimmed_paths(self): - json_resp = self._mock_json() - - expected = ['st1012.png', 'st1013.png', 'st1014.png'] - munged_json = trim_file_paths(json_resp) - - for frame_key in munged_json['frames'].keys(): - self.assertIn(frame_key, expected) - - for frame in munged_json['visitedFrames']: - self.assertIn(frame, expected) - - def test_correct_number_of_paths(self): - json_resp = self._mock_json() - munged_json = trim_file_paths(json_resp) - - self.assertEqual(3, len(munged_json['frames'])) - self.assertEqual(3, len(munged_json['visitedFrames'])) - - def test_deep_copy(self): - json_resp = self._mock_json() - munged_json = trim_file_paths(json_resp) - self.assertNotEqual(id(json_resp), id(munged_json)) - - if __name__ == '__main__': unittest.main() \ No newline at end of file From 2df9b934348f4320cbc0d1b31b0fa2b91aba64ed Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Wed, 28 Nov 2018 12:24:07 -0800 Subject: [PATCH 088/145] Add CLI onboarding for containers (#52) --- cli/cli.py | 23 +++++++++++++++-------- cli/operations.py | 26 ++++++++++++++++++++++---- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/cli/cli.py b/cli/cli.py index c8c2bb4e..6796bfc9 100644 --- a/cli/cli.py +++ b/cli/cli.py @@ -23,7 +23,9 @@ ) parser.add_argument('-f', '--folder') - parser.add_argument('-c', '--container') + parser.add_argument('-a', '--storage-account') + parser.add_argument('-c', '--storage-container') + parser.add_argument('-k', '--storage-key') parser.add_argument('-n', '--num-images', type=int) args = parser.parse_args() @@ -34,13 +36,18 @@ if operation == 'download': download(config, args.num_images) - elif operation == 'onboard': + elif operation == 'upload': + upload(config) + else: if args.folder: onboard_folder(config, args.folder) - elif args.container: - onboard_container(config, args.container) + elif args.storage_container and args.storage_account and args.storage_key: + onboard_container( + config, + args.storage_account, + args.storage_key, + args.storage_container + ) else: - print("No folder or container argument \ - passed - nothing to onboard") - else: - upload(config) + print("No folder, storage account, container, or key argument \ + passed - could not onboard.any") diff --git a/cli/operations.py b/cli/operations.py index 6959a8a7..d271b2bd 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -53,13 +53,13 @@ def onboard_folder(config, folder_name): # Post this data to the server to add them to database and kick off active learning data = {} data['imageUrls'] = images - headers = {'content-type': 'application/json'} + query = { "code": config.get('key'), "userName": user_name } - response = requests.post(functions_url, data=json.dumps(data), headers=headers, params=query) + response = requests.post(functions_url, json=data, params=query) response.raise_for_status() json_resp = response.json() @@ -69,9 +69,27 @@ def onboard_folder(config, folder_name): print(url) -def onboard_container(config, container): +def onboard_container(config, account, key, container): print("onboarding from storage container") - pass + function_url = config.get('url') + '/api/onboardcontainer' + user_name = config.get("tagging_user") + + print("Onboarding storage container " + container + " into dataset") + + query = { + "userName": user_name + } + + data = { + "storageAccount": account, + "storageAccountKey": key, + "storageContainer": container + } + + resp = requests.post(function_url, params=query, json=data) + resp.raise_for_status() + + print("Set up container for onboarding. Onboarding may take some time.") def _download_bounds(num_images): From 315d0ef2a958af8d381d4d3f55895ba6439215e2 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Wed, 28 Nov 2018 12:51:48 -0800 Subject: [PATCH 089/145] Changes to support training (#53) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Added setting to fail on error in train script. Restored Utils dir * reverted change --- requirements.txt | 1 + train/active_learning_train.sh | 2 + utils/__init__.py | 0 utils/blob_utils.py | 17 ++++++ utils/config.py | 104 +++++++++++++++++++++++++++++++++ 5 files changed, 124 insertions(+) create mode 100644 utils/__init__.py create mode 100644 utils/blob_utils.py create mode 100644 utils/config.py diff --git a/requirements.txt b/requirements.txt index ce6355ef..3c2891dc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,3 +9,4 @@ requests six==1.11.0 pg8000==1.12.3 Pillow==5.3.0 +opencv_python diff --git a/train/active_learning_train.sh b/train/active_learning_train.sh index d57dc5b2..24b276ba 100755 --- a/train/active_learning_train.sh +++ b/train/active_learning_train.sh @@ -1,4 +1,6 @@ #!/bin/bash +# Fail on first error +set -e # Source environmental variables set -a sed -i 's/\r//g' $1 diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/utils/blob_utils.py b/utils/blob_utils.py new file mode 100644 index 00000000..3eabf131 --- /dev/null +++ b/utils/blob_utils.py @@ -0,0 +1,17 @@ +from azure.storage.blob import BlockBlobService, ContentSettings + +class BlobStorage(): + azure_storage_client = None + + #TODO: Verify the storage account is correct. Currently we get an unhelpful error message if you have a type in Storage Name + @staticmethod + def get_azure_storage_client(config): + if BlobStorage.azure_storage_client is not None: + return BlobStorage.azure_storage_client + + BlobStorage.azure_storage_client = BlockBlobService( + config.get("storage_account"), + account_key=config.get("storage_key") + ) + + return BlobStorage.azure_storage_client \ No newline at end of file diff --git a/utils/config.py b/utils/config.py new file mode 100644 index 00000000..b65eab26 --- /dev/null +++ b/utils/config.py @@ -0,0 +1,104 @@ + +import configparser + +FUNCTIONS_SECTION = 'FUNCTIONS' +FUNCTIONS_KEY = 'FUNCTIONS_KEY' +FUNCTIONS_URL = 'FUNCTIONS_URL' + +STORAGE_SECTION = 'STORAGE' +STORAGE_KEY = 'STORAGE_KEY' +STORAGE_ACCOUNT = 'STORAGE_ACCOUNT' +STORAGE_CONTAINER = 'STORAGE_CONTAINER' + +TAGGING_SECTION = 'TAGGING' +TAGGING_LOCATION_KEY = 'TAGGING_LOCATION' +TAGGING_USER_KEY = 'TAGGING_USER' + +class Config(): + @staticmethod + def parse_file(file_name): + config = {} + with open(file_name) as file_: + for line in file_: + line = line.strip() + if line and line[0] is not "#": + var,value = line.split('=', 1) + config[var.strip()] = value.strip() + + return config + + @staticmethod + def storage_config_section(storage_config_section): + storage_account_value = storage_config_section.get(STORAGE_ACCOUNT) + storage_key_value = storage_config_section.get(STORAGE_KEY) + storage_container_value = storage_config_section.get(STORAGE_CONTAINER) + + if not storage_account_value or not storage_key_value or not storage_container_value: + raise MissingConfigException() + + return storage_account_value, storage_key_value, storage_container_value + + @staticmethod + def tagging_config_section(tagging_config_section): + tagging_location_value = tagging_config_section.get(TAGGING_LOCATION_KEY) + tagging_user_value = tagging_config_section.get(TAGGING_USER_KEY) + + if not tagging_location_value or not tagging_user_value: + raise MissingConfigException() + + return tagging_location_value, tagging_user_value + + @staticmethod + def functions_config_section(functions_config_section): + functions_key_value = functions_config_section.get(FUNCTIONS_KEY) + functions_url_value = functions_config_section.get(FUNCTIONS_URL) + + if not functions_key_value or not functions_url_value: + raise MissingConfigException() + + return functions_key_value, functions_url_value + + @staticmethod + def read_config_with_parsed_config(parser): + sections = parser.sections() + + if FUNCTIONS_SECTION not in sections: + raise MissingConfigException() + + if STORAGE_SECTION not in sections: + raise MissingConfigException() + + if TAGGING_SECTION not in sections: + raise MissingConfigException() + + functions_key, functions_url = Config.functions_config_section( + parser[FUNCTIONS_SECTION] + ) + + storage_account, storage_key, storage_container = Config.storage_config_section( + parser[STORAGE_SECTION] + ) + + tagging_location, tagging_user = Config.tagging_config_section(parser[TAGGING_SECTION]) + + return { + "key": functions_key, + "url": functions_url, + "storage_account": storage_account, + "storage_key": storage_key, + "storage_container": storage_container, + "tagging_location": tagging_location, + "tagging_user": tagging_user + } + + @staticmethod + def read_config(config_path): + if config_path is None: + raise MissingConfigException() + + parser = configparser.ConfigParser() + parser.read(config_path) + return Config.read_config_with_parsed_config(parser) + +class MissingConfigException(Exception): + pass \ No newline at end of file From 35c79625f1dc5e13f247f81864cf2882e37cc5b6 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Wed, 28 Nov 2018 13:41:58 -0800 Subject: [PATCH 090/145] Updated documentation for DSVM deploy and env setup (#54) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Updated documentation --- devops/dsvm/README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/devops/dsvm/README.md b/devops/dsvm/README.md index 00c11b5c..f45e875d 100644 --- a/devops/dsvm/README.md +++ b/devops/dsvm/README.md @@ -1,5 +1,35 @@ # Setting up an Azure DSVM for Active Learning +This document will explain how to deploy an Azure DSVM and set up the environment for Active Learning. + +## Deployment + +Create an SSH Key on your local machine. The following will create a key in your ~/.ssh/act-learn-key location. + +```sh +$ ssh-keygen -f ~/.ssh/act-learn-key -t rsa -b 2048 +``` + +Secondly edit the environment variables in the [dsvm_config.sh](config/dsvm_config.sh) script with your own values. For instance: + +
    +RESOURCE_GROUP=MyAzureResourceGroup
    +# VM config
    +VM_SKU=Standard_NC6 #Make sure VM SKU is available in your resource group's region 
    +VM_IMAGE=microsoft-ads:linux-data-science-vm-ubuntu:linuxdsvmubuntu:latest
    +VM_DNS_NAME=mytestdns
    +VM_NAME=myvmname
    +VM_ADMIN_USER=johndoe
    +VM_SSH_KEY=~/.ssh/act-learn-key.pub
    +
    + +Lastly execute the deploy_dsvm.sh with your edited config file as a parameter. Note that the Azure CLI is required. Install [here](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) is needed. + +```sh +$ sh deploy_dsvm.sh config/dsvm_config.sh +``` + +## Environment Setup We provide a module that will copy over a shell script to your DSVM and execute the shell script to setup an active learning environment. We requirement that your ssh key be added to the SSH agent. You can do so my using the **_ssh-add_** command From a1f55250ca86029cb877e98ce2f40030f45da14e Mon Sep 17 00:00:00 2001 From: Samiya Date: Wed, 28 Nov 2018 13:44:16 -0800 Subject: [PATCH 091/145] Undoing moving utils folder around (#55) --- cli/{utils => }/__init__.py | 0 cli/cli.py | 2 +- cli/operations.py | 1 + cli/test_operations.py | 2 +- cli/utils/blob_utils.py | 17 ------ cli/utils/config.py | 104 ------------------------------------ 6 files changed, 3 insertions(+), 123 deletions(-) rename cli/{utils => }/__init__.py (100%) delete mode 100644 cli/utils/blob_utils.py delete mode 100644 cli/utils/config.py diff --git a/cli/utils/__init__.py b/cli/__init__.py similarity index 100% rename from cli/utils/__init__.py rename to cli/__init__.py diff --git a/cli/cli.py b/cli/cli.py index 6796bfc9..a9e740ae 100644 --- a/cli/cli.py +++ b/cli/cli.py @@ -2,7 +2,7 @@ import os from utils.config import Config -from operations import ( +from cli.operations import ( download, upload, onboard_folder, diff --git a/cli/operations.py b/cli/operations.py index d271b2bd..c6739532 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -4,6 +4,7 @@ import json import copy import pathlib +import os from azure.storage.blob import BlockBlobService, ContentSettings from utils.blob_utils import BlobStorage diff --git a/cli/test_operations.py b/cli/test_operations.py index 5b0c0a51..257238a6 100644 --- a/cli/test_operations.py +++ b/cli/test_operations.py @@ -16,7 +16,7 @@ TAGGING_LOCATION_KEY, TAGGING_USER_KEY, ) -from operations import ( +from .operations import ( _download_bounds, upload, ImageLimitException, diff --git a/cli/utils/blob_utils.py b/cli/utils/blob_utils.py deleted file mode 100644 index 3eabf131..00000000 --- a/cli/utils/blob_utils.py +++ /dev/null @@ -1,17 +0,0 @@ -from azure.storage.blob import BlockBlobService, ContentSettings - -class BlobStorage(): - azure_storage_client = None - - #TODO: Verify the storage account is correct. Currently we get an unhelpful error message if you have a type in Storage Name - @staticmethod - def get_azure_storage_client(config): - if BlobStorage.azure_storage_client is not None: - return BlobStorage.azure_storage_client - - BlobStorage.azure_storage_client = BlockBlobService( - config.get("storage_account"), - account_key=config.get("storage_key") - ) - - return BlobStorage.azure_storage_client \ No newline at end of file diff --git a/cli/utils/config.py b/cli/utils/config.py deleted file mode 100644 index b65eab26..00000000 --- a/cli/utils/config.py +++ /dev/null @@ -1,104 +0,0 @@ - -import configparser - -FUNCTIONS_SECTION = 'FUNCTIONS' -FUNCTIONS_KEY = 'FUNCTIONS_KEY' -FUNCTIONS_URL = 'FUNCTIONS_URL' - -STORAGE_SECTION = 'STORAGE' -STORAGE_KEY = 'STORAGE_KEY' -STORAGE_ACCOUNT = 'STORAGE_ACCOUNT' -STORAGE_CONTAINER = 'STORAGE_CONTAINER' - -TAGGING_SECTION = 'TAGGING' -TAGGING_LOCATION_KEY = 'TAGGING_LOCATION' -TAGGING_USER_KEY = 'TAGGING_USER' - -class Config(): - @staticmethod - def parse_file(file_name): - config = {} - with open(file_name) as file_: - for line in file_: - line = line.strip() - if line and line[0] is not "#": - var,value = line.split('=', 1) - config[var.strip()] = value.strip() - - return config - - @staticmethod - def storage_config_section(storage_config_section): - storage_account_value = storage_config_section.get(STORAGE_ACCOUNT) - storage_key_value = storage_config_section.get(STORAGE_KEY) - storage_container_value = storage_config_section.get(STORAGE_CONTAINER) - - if not storage_account_value or not storage_key_value or not storage_container_value: - raise MissingConfigException() - - return storage_account_value, storage_key_value, storage_container_value - - @staticmethod - def tagging_config_section(tagging_config_section): - tagging_location_value = tagging_config_section.get(TAGGING_LOCATION_KEY) - tagging_user_value = tagging_config_section.get(TAGGING_USER_KEY) - - if not tagging_location_value or not tagging_user_value: - raise MissingConfigException() - - return tagging_location_value, tagging_user_value - - @staticmethod - def functions_config_section(functions_config_section): - functions_key_value = functions_config_section.get(FUNCTIONS_KEY) - functions_url_value = functions_config_section.get(FUNCTIONS_URL) - - if not functions_key_value or not functions_url_value: - raise MissingConfigException() - - return functions_key_value, functions_url_value - - @staticmethod - def read_config_with_parsed_config(parser): - sections = parser.sections() - - if FUNCTIONS_SECTION not in sections: - raise MissingConfigException() - - if STORAGE_SECTION not in sections: - raise MissingConfigException() - - if TAGGING_SECTION not in sections: - raise MissingConfigException() - - functions_key, functions_url = Config.functions_config_section( - parser[FUNCTIONS_SECTION] - ) - - storage_account, storage_key, storage_container = Config.storage_config_section( - parser[STORAGE_SECTION] - ) - - tagging_location, tagging_user = Config.tagging_config_section(parser[TAGGING_SECTION]) - - return { - "key": functions_key, - "url": functions_url, - "storage_account": storage_account, - "storage_key": storage_key, - "storage_container": storage_container, - "tagging_location": tagging_location, - "tagging_user": tagging_user - } - - @staticmethod - def read_config(config_path): - if config_path is None: - raise MissingConfigException() - - parser = configparser.ConfigParser() - parser.read(config_path) - return Config.read_config_with_parsed_config(parser) - -class MissingConfigException(Exception): - pass \ No newline at end of file From cd54226a2ab475701b712348f80dd824b43ec6b4 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Wed, 28 Nov 2018 15:28:12 -0800 Subject: [PATCH 092/145] Onboard a storage container of images via queue processing (#56) * Able to get list of blobs in storage-container now. How do we want to write to queue? * have blob resource url. need to write to queue and process from queue still * Writing to queue, need to now process from queue * Trying to read from queue, not really working * queue is triggering but code is failing immediately somewhere? * Queue is processing but not able to save to db * working and hacky. Needs a lot of cleanup and db checks. can we avoid double readwrite or check for errors? * cleanup onboard container * onboardqueueprocessor. Should refactor old onboarding code to just write to queue * renaming storage_connection_string * renaming queue --- .../pipeline/onboardcontainer/__init__.py | 67 ++++++++++++++ .../pipeline/onboardcontainer/function.json | 19 ++++ functions/pipeline/onboardcontainer/host.json | 3 + functions/pipeline/onboarding/__init__.py | 2 +- .../onboardqueueproccessor/__init__.py | 88 +++++++++++++++++++ .../onboardqueueproccessor/function.json | 13 +++ .../pipeline/onboardqueueproccessor/host.json | 3 + functions/pipeline/requirements.txt | 1 + requirements.txt | 1 + 9 files changed, 196 insertions(+), 1 deletion(-) create mode 100644 functions/pipeline/onboardcontainer/__init__.py create mode 100644 functions/pipeline/onboardcontainer/function.json create mode 100644 functions/pipeline/onboardcontainer/host.json create mode 100644 functions/pipeline/onboardqueueproccessor/__init__.py create mode 100644 functions/pipeline/onboardqueueproccessor/function.json create mode 100644 functions/pipeline/onboardqueueproccessor/host.json diff --git a/functions/pipeline/onboardcontainer/__init__.py b/functions/pipeline/onboardcontainer/__init__.py new file mode 100644 index 00000000..d08f9a6b --- /dev/null +++ b/functions/pipeline/onboardcontainer/__init__.py @@ -0,0 +1,67 @@ +import os +import logging +import json +import azure.functions as func + +from azure.storage.blob import BlockBlobService +from azure.storage.queue import QueueService, QueueMessageFormat +DEFAULT_RETURN_HEADER= { "content-type": "application/json"} + + +def main(req: func.HttpRequest) -> func.HttpResponse: + logging.info('Python HTTP trigger function processed a request.') + + user_name = req.params.get('userName') + + if not user_name: + return func.HttpResponse( + status_code=401, + headers=DEFAULT_RETURN_HEADER, + body=json.dumps({"error": "invalid userName given or omitted"}) + ) + + try: + req_body = req.get_json() + logging.debug(req.get_json()) + storage_account = req_body["storageAccount"] + storage_account_key = req_body["storageAccountKey"] + storage_container = req_body["storageContainer"] + except ValueError: + return func.HttpResponse("ERROR: Unable to decode POST body", status_code=400) + + if not storage_container or not storage_account or not storage_account_key: + return func.HttpResponse("ERROR: storage container/account/key/queue not specified.", status_code=401) + + # Create blob service for storage account (retrieval source) + blob_service = BlockBlobService(account_name=storage_account, + account_key=storage_account_key) + + # Queue service for perm storage and queue + queue_service = QueueService(account_name=os.getenv('STORAGE_ACCOUNT_NAME'), + account_key=os.getenv('STORAGE_ACCOUNT_KEY')) + queue_service.encode_function = QueueMessageFormat.text_base64encode + + try: + blob_list = [] + for blob_object in blob_service.list_blobs(storage_container): + blob_list.append(blob_service.make_blob_url(storage_container, blob_object.name)) + + # TODO: Batch messaging? + for image_url in blob_list: + msg_body = { + "imageUrl": image_url, + "userName": user_name + } + body_str = json.dumps(msg_body) + + queue_service.put_message("onboardqueue", body_str) + + return func.HttpResponse( + status_code=200, + headers=DEFAULT_RETURN_HEADER, + body=json.dumps(blob_list) + ) + except Exception as e: + logging.error("ERROR: Could not build blob object list. Exception: " + str(e)) + return func.HttpResponse("ERROR: Could not get list of blobs in storage_container={0}. Exception={1}".format( + storage_container, e), status_code=500) \ No newline at end of file diff --git a/functions/pipeline/onboardcontainer/function.json b/functions/pipeline/onboardcontainer/function.json new file mode 100644 index 00000000..852fa7b0 --- /dev/null +++ b/functions/pipeline/onboardcontainer/function.json @@ -0,0 +1,19 @@ +{ + "scriptFile": "__init__.py", + "bindings": [ + { + "authLevel": "anonymous", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "post" + ] + }, + { + "type": "http", + "direction": "out", + "name": "$return" + } + ] +} \ No newline at end of file diff --git a/functions/pipeline/onboardcontainer/host.json b/functions/pipeline/onboardcontainer/host.json new file mode 100644 index 00000000..81e35b7b --- /dev/null +++ b/functions/pipeline/onboardcontainer/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" +} \ No newline at end of file diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index 684c8c5f..17c448fb 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -80,7 +80,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: return func.HttpResponse("Internal error occured", status_code=503) -# Given a list ofnimage URL's, build an ImageInfo object for each, and return a list of these image objects. +# Given a list of image URL's, build an ImageInfo object for each, and return a list of these image objects. def build_objects_from_url_list(url_list): image_object_list = [] for url in url_list: diff --git a/functions/pipeline/onboardqueueproccessor/__init__.py b/functions/pipeline/onboardqueueproccessor/__init__.py new file mode 100644 index 00000000..3eeb085a --- /dev/null +++ b/functions/pipeline/onboardqueueproccessor/__init__.py @@ -0,0 +1,88 @@ +import os +import json +import logging +import azure.functions as func +import urllib.parse + +from urllib.request import urlopen + +from PIL import Image +from ..shared.db_provider import get_postgres_provider +from ..shared.db_access import ImageTagDataAccess, ImageInfo +from azure.storage.blob import BlockBlobService + + +def main(msg: func.QueueMessage) -> None: + logging.info('Python queue trigger function processed a queue item: %s', + msg.get_body().decode('utf-8')) + + queue_msg = json.dumps({ + 'id': msg.id, + 'body': msg.get_body().decode('utf-8'), + 'expiration_time': (msg.expiration_time.isoformat() + if msg.expiration_time else None), + 'insertion_time': (msg.insertion_time.isoformat() + if msg.insertion_time else None), + 'time_next_visible': (msg.time_next_visible.isoformat() + if msg.time_next_visible else None), + 'pop_receipt': msg.pop_receipt, + 'dequeue_count': msg.dequeue_count + }) + + logging.debug(queue_msg) + + try: + msg_json = json.loads(msg.get_body().decode('utf-8')) + img_url = urllib.parse.quote(msg_json["imageUrl"], safe=':/') + user_name = msg_json["userName"] + + # TODO: move into function method and support list of urls for batch processing. + image_object_list = [] + # Split original image name from URL + original_filename = img_url.split("/")[-1] + # Create ImageInfo object (def in db_access.py) + + with Image.open(urlopen(img_url)) as img: + width, height = img.size + + image = ImageInfo(original_filename, img_url, height, width) + # Append image object to the list + image_object_list.append(image) + + data_access = ImageTagDataAccess(get_postgres_provider()) + user_id = data_access.create_user(user_name) + + logging.debug("Add new images to the database, and retrieve a dictionary ImageId's mapped to ImageUrl's") + image_id_url_map = data_access.add_new_images(image_object_list, user_id) + + copy_destination = os.getenv('DESTINATION_CONTAINER_NAME') + + # Create blob service for storage account + blob_service = BlockBlobService(account_name=os.getenv('STORAGE_ACCOUNT_NAME'), + account_key=os.getenv('STORAGE_ACCOUNT_KEY')) + + # Copy images to permanent storage and get a dictionary of images for which to update URLs in DB. + # and a list of failures. If the list of failures contains any items, return a status code other than 200. + + file_extension = os.path.splitext(img_url)[1] + image_id = list(image_id_url_map.values())[0] # TODO: Fix once we have a list of urls. + new_blob_name = (str(image_id) + file_extension) + + response = urlopen(img_url) + + image_bytes = response.read() + + blob_create_response = blob_service.create_blob_from_bytes(copy_destination, new_blob_name, image_bytes) + update_urls_dictionary = {image_id: blob_service.make_blob_url(copy_destination, new_blob_name)} + + # Otherwise, dictionary contains permanent image URLs for each image ID that was successfully copied. + if not blob_create_response: + logging.error("ERROR: Image copy/delete operation failed. Check state of images in storage.") + else: + logging.debug("Now updating permanent URLs in the DB...") + data_access.update_image_urls(update_urls_dictionary, user_id) + + # content = json.dumps({"imageUrls": list(update_urls_dictionary.values())}) + logging.debug("success onboarding.") + except Exception as e: + logging.error("Exception: " + str(e)) diff --git a/functions/pipeline/onboardqueueproccessor/function.json b/functions/pipeline/onboardqueueproccessor/function.json new file mode 100644 index 00000000..57c6527c --- /dev/null +++ b/functions/pipeline/onboardqueueproccessor/function.json @@ -0,0 +1,13 @@ +{ + "scriptFile": "__init__.py", + "disabled": false, + "bindings": [ + { + "type": "queueTrigger", + "direction": "in", + "name": "msg", + "queueName": "onboardqueue", + "connection": "STORAGE_CONNECTION_STRING", + } + ] +} \ No newline at end of file diff --git a/functions/pipeline/onboardqueueproccessor/host.json b/functions/pipeline/onboardqueueproccessor/host.json new file mode 100644 index 00000000..81e35b7b --- /dev/null +++ b/functions/pipeline/onboardqueueproccessor/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" +} \ No newline at end of file diff --git a/functions/pipeline/requirements.txt b/functions/pipeline/requirements.txt index e15905ca..8485bc6a 100644 --- a/functions/pipeline/requirements.txt +++ b/functions/pipeline/requirements.txt @@ -2,6 +2,7 @@ azure-functions==1.0.0a5 azure-functions-worker==1.0.0a6 azure-storage-blob==1.4.0 azure-storage-file==1.4.0 +azure-storage-queue==1.4.0 grpcio==1.14.2 grpcio-tools==1.14.2 protobuf==3.6.1 diff --git a/requirements.txt b/requirements.txt index 3c2891dc..c37abc55 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,7 @@ azure-functions==1.0.0a5 azure-functions-worker==1.0.0a6 azure-storage-blob==1.4.0 azure-storage-file==1.4.0 +azure-storage-queue==1.4.0 grpcio==1.14.2 grpcio-tools==1.14.2 protobuf==3.6.1 From 56dfa94c09301bf78266069c9d6144d5ead3178a Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Thu, 29 Nov 2018 09:35:34 -0800 Subject: [PATCH 093/145] Update README.md (#58) --- devops/dsvm/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/devops/dsvm/README.md b/devops/dsvm/README.md index f45e875d..5fc5e74c 100644 --- a/devops/dsvm/README.md +++ b/devops/dsvm/README.md @@ -23,7 +23,7 @@ VM_ADMIN_USER=johndoe VM_SSH_KEY=~/.ssh/act-learn-key.pub -Lastly execute the deploy_dsvm.sh with your edited config file as a parameter. Note that the Azure CLI is required. Install [here](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) is needed. +Lastly execute the deploy_dsvm.sh with your edited config file as a parameter. Note that the Azure CLI is required. Install [here](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) if needed. ```sh $ sh deploy_dsvm.sh config/dsvm_config.sh @@ -32,16 +32,16 @@ $ sh deploy_dsvm.sh config/dsvm_config.sh ## Environment Setup We provide a module that will copy over a shell script to your DSVM and execute the shell script to setup an active learning environment. -We requirement that your ssh key be added to the SSH agent. You can do so my using the **_ssh-add_** command +We require that your SSH key be added to the SSH agent. To add your SSH key to the SSH agent use the **_ssh-add_** command ```sh $ ssh-add -K ~/.ssh/act-learn-key ``` -To copy and execute the shells script use the following command +To copy and execute the shell script on the DSVM use the following command ```sh $ python setup-tensorflow.py --host admin@127.0.0.1 -k ~/.ssh/act-learn-key -s setup-tensorflow.sh ``` -Note that in the host argument **_admin_**@127.0.0.1 section is the DSVM Admin name and admin@**_127.0.0.1_** is the IP address of the DSVM. \ No newline at end of file +Note that in the host argument **_admin_**@127.0.0.1 section is the DSVM Admin name and admin@**_127.0.0.1_** is the IP address of the DSVM. From d434fc8e8ef5ae46e665349a379c45dd628c9985 Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Thu, 29 Nov 2018 11:58:29 -0800 Subject: [PATCH 094/145] Infrastructure scripts to create storage queue, and configure connection strings (#57) --- devops/deployment/Deploy-Infrastructure.sh | 5 ++++- devops/deployment/Deploy-Python-Functions-App.sh | 16 +++++++++------- devops/deployment/Deploy-Storage.sh | 3 +++ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/devops/deployment/Deploy-Infrastructure.sh b/devops/deployment/Deploy-Infrastructure.sh index a1fc5098..c0de52ce 100755 --- a/devops/deployment/Deploy-Infrastructure.sh +++ b/devops/deployment/Deploy-Infrastructure.sh @@ -67,6 +67,8 @@ if [ "$?" -ne 0 ]; then exit 1 fi +STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n $PROJECT_STORAGE_ACCOUNT -g $RESOURCE_GROUP) + # Setup azure python function PROJECT_STORAGE_ACCOUNT_KEY=$(az storage account keys list -n $PROJECT_STORAGE_ACCOUNT --query [0].value --resource-group $RESOURCE_GROUP) . ./Deploy-Python-Functions-App.sh \ @@ -81,7 +83,8 @@ PROJECT_STORAGE_ACCOUNT_KEY=$(az storage account keys list -n $PROJECT_STORAGE_A $DB_HOST_FULL_NAME \ $DATABASE_USERNAME_AT_HOST \ $DATABASE_PASSWORD \ - $DATABASE_NAME + $DATABASE_NAME \ + $STORAGE_CONNECTION_STRING if [ "$?" -ne 0 ]; then echo "Unable to setup app insights" exit 1 diff --git a/devops/deployment/Deploy-Python-Functions-App.sh b/devops/deployment/Deploy-Python-Functions-App.sh index 38c94524..8fb4ba40 100755 --- a/devops/deployment/Deploy-Python-Functions-App.sh +++ b/devops/deployment/Deploy-Python-Functions-App.sh @@ -10,8 +10,8 @@ StorageName=$2 FunctionAppName=$3 AppInsightsName=$4 -if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ] || [ -z "$6" ] || [ -z "$7" ] || [ -z "$8" ] || [ -z "$9" ] || [ -z "${10}" ] || [ -z "${11}" ] || [ -z "${12}" ]; then - echo "Usage: 'sh $0 (Azure Resource Group Name) (Azure Function Storage Name) (Azure Function App Name) (AppInsightsName) (Storage account) (Source container) (Dest container) (DB Server Name) (DB Username) (DB Password) (DB Name)'" +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ] || [ -z "$6" ] || [ -z "$7" ] || [ -z "$8" ] || [ -z "$9" ] || [ -z "${10}" ] || [ -z "${11}" ] || [ -z "${12}" ] || [ -z "${13}" ] then + echo "Usage: 'sh $0 (Azure Resource Group Name) (Azure Function Storage Name) (Azure Function App Name) (AppInsightsName) (Storage account) (Source container) (Dest container) (DB Server Name) (DB Username) (DB Password) (DB Name) (Storage Connection String)'" exit 1 fi @@ -19,10 +19,11 @@ STORAGE_ACCOUNT_NAME="$5" STORAGE_ACCOUNT_KEY="$6" SOURCE_CONTAINER_NAME="$7" DESTINATION_CONTAINER_NAME="$8" -DB_HOST="$9" -DB_USER="${10}" -DB_PASS="${11}" -DB_NAME="${12}" +DB_HOST="$9" +DB_USER="${10}" +DB_PASS="${11}" +DB_NAME="${12}" +STORAGE_CONNECTION_STRING="${13}" StorageNameLength=${#StorageName} if [ $StorageNameLength -lt 3 -o $StorageNameLength -gt 24 ]; then @@ -93,4 +94,5 @@ az functionapp config appsettings set --name $FunctionAppName --resource-group $ "STORAGE_ACCOUNT_NAME=$STORAGE_ACCOUNT_NAME" \ "STORAGE_ACCOUNT_KEY=$STORAGE_ACCOUNT_KEY" \ "SOURCE_CONTAINER_NAME=$SOURCE_CONTAINER_NAME" \ - "DESTINATION_CONTAINER_NAME=$DESTINATION_CONTAINER_NAME" \ No newline at end of file + "DESTINATION_CONTAINER_NAME=$DESTINATION_CONTAINER_NAME" \ + "STORAGE_CONNECTION_STRING=$STORAGE_CONNECTION_STRING" \ No newline at end of file diff --git a/devops/deployment/Deploy-Storage.sh b/devops/deployment/Deploy-Storage.sh index 0cd2b0e2..291988e7 100755 --- a/devops/deployment/Deploy-Storage.sh +++ b/devops/deployment/Deploy-Storage.sh @@ -31,4 +31,7 @@ az storage container create -n $STORAGE_TEMP_CONTAINER --account-key $STORAGE_KE echo "Creating Permanent Storage Container" az storage container create -n $STORAGE_PERM_CONTAINER --account-key $STORAGE_KEY --account-name $STORAGE_NAME --public-access container +echo "Creating an onboarding queue" +az storage queue create -n onboardqueue --account-key $STORAGE_KEY --account-name $STORAGE_NAME + echo "Done!" \ No newline at end of file From f29e69046bebeb56c80fbae116dd00eabc2ae78f Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Tue, 4 Dec 2018 11:48:21 -0800 Subject: [PATCH 095/145] Fix infra scripts (#60) --- devops/deployment/Deploy-Infrastructure.sh | 2 +- devops/deployment/Deploy-Python-Functions-App.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/deployment/Deploy-Infrastructure.sh b/devops/deployment/Deploy-Infrastructure.sh index c0de52ce..46dc4449 100755 --- a/devops/deployment/Deploy-Infrastructure.sh +++ b/devops/deployment/Deploy-Infrastructure.sh @@ -67,7 +67,7 @@ if [ "$?" -ne 0 ]; then exit 1 fi -STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n $PROJECT_STORAGE_ACCOUNT -g $RESOURCE_GROUP) +STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n $PROJECT_STORAGE_ACCOUNT -g $RESOURCE_GROUP --query "connectionString") # Setup azure python function PROJECT_STORAGE_ACCOUNT_KEY=$(az storage account keys list -n $PROJECT_STORAGE_ACCOUNT --query [0].value --resource-group $RESOURCE_GROUP) diff --git a/devops/deployment/Deploy-Python-Functions-App.sh b/devops/deployment/Deploy-Python-Functions-App.sh index 8fb4ba40..aefa0ce7 100755 --- a/devops/deployment/Deploy-Python-Functions-App.sh +++ b/devops/deployment/Deploy-Python-Functions-App.sh @@ -10,7 +10,7 @@ StorageName=$2 FunctionAppName=$3 AppInsightsName=$4 -if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ] || [ -z "$6" ] || [ -z "$7" ] || [ -z "$8" ] || [ -z "$9" ] || [ -z "${10}" ] || [ -z "${11}" ] || [ -z "${12}" ] || [ -z "${13}" ] then +if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ] || [ -z "$6" ] || [ -z "$7" ] || [ -z "$8" ] || [ -z "$9" ] || [ -z "${10}" ] || [ -z "${11}" ] || [ -z "${12}" ] || [ -z "${13}" ]; then echo "Usage: 'sh $0 (Azure Resource Group Name) (Azure Function Storage Name) (Azure Function App Name) (AppInsightsName) (Storage account) (Source container) (Dest container) (DB Server Name) (DB Username) (DB Password) (DB Name) (Storage Connection String)'" exit 1 fi From 1c662a77f2ceb79840b36c56a50a645f8125115c Mon Sep 17 00:00:00 2001 From: ackaufman <43971124+ackaufman@users.noreply.github.com> Date: Tue, 4 Dec 2018 15:16:50 -0700 Subject: [PATCH 096/145] Onboarding refactor. New version also returns JSON of copy/delete status in addition to HTTP status code. (#59) * Brainstorming how to refactor code * Not yet tested: Finished initial refactor. * Fixing errors * Brainstorming how to refactor code * Not yet tested: Finished initial refactor. * Fixing errors * Tested locally, bug fixes. * Code cleanup and local testing. Still need to deploy and test. * Removed partially completed test file * Removed another test file * Revert "Removed another test file" This reverts commit 633df1f92cd2b431102b1b705e156a91e0522f17. * Added get_connection back into test_db_access_v2.py - disappeared somehow --- functions/pipeline/onboarding/__init__.py | 136 ++++++++++++------ .../shared/db_access/test_db_access_v2.py | 8 +- .../pipeline/shared/onboarding/__init__.py | 135 ++++++++++++----- 3 files changed, 194 insertions(+), 85 deletions(-) diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index 17c448fb..ca4106cd 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -2,14 +2,19 @@ import logging import json import azure.functions as func - from urllib.request import urlopen from PIL import Image from ..shared.db_provider import get_postgres_provider from ..shared.db_access import ImageTagDataAccess, ImageInfo -from ..shared.onboarding import copy_images_to_permanent_storage +from ..shared.onboarding import copy_images_to_permanent_storage, delete_images_from_temp_storage from azure.storage.blob import BlockBlobService -DEFAULT_RETURN_HEADER= { "content-type": "application/json"} + +DEFAULT_RETURN_HEADER= { "content-type": "application/json" } + +COPY_SOURCE = os.getenv('SOURCE_CONTAINER_NAME') +COPY_DESTINATION = os.getenv('DESTINATION_CONTAINER_NAME') +ACCOUNT_NAME=os.getenv('STORAGE_ACCOUNT_NAME') +ACCOUNT_KEY=os.getenv('STORAGE_ACCOUNT_KEY') def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') @@ -18,67 +23,109 @@ def main(req: func.HttpRequest) -> func.HttpResponse: if not user_name: return func.HttpResponse( - status_code=401, + status_code=400, headers=DEFAULT_RETURN_HEADER, - body=json.dumps({"error": "invalid userName given or omitted"}) + body=json.dumps({"Error": "userName query parameter invalid or omitted."}) ) try: req_body = req.get_json() - logging.debug(req.get_json()) + logging.info(req.get_json()) raw_url_list = req_body["imageUrls"] except ValueError: - return func.HttpResponse("ERROR: Unable to decode POST body", status_code=400) + logging.error("Error: Unable to decode POST body.") + return func.HttpResponse( + status_code=400, + headers=DEFAULT_RETURN_HEADER, + body=json.dumps({"Error": "Unable to decode POST body."}) + ) if not raw_url_list: - return func.HttpResponse("ERROR: URL list empty.", status_code=401) - + logging.error("Error: URL list empty.") + return func.HttpResponse( + status_code=400, + headers=DEFAULT_RETURN_HEADER, + body=json.dumps({"Error": "URL list empty."}) + ) + # Check to ensure image URLs sent by client are all unique. url_list = set(raw_url_list) try: image_object_list = build_objects_from_url_list(url_list) except Exception as e: - logging.error("ERROR: Could not build image object list. Exception: " + str(e)) - return func.HttpResponse("ERROR: Could not build image object list.", status_code=401) + logging.error("Error: Could not build image object list. Exception: " + str(e)) + return func.HttpResponse( + status_code=400, + headers=DEFAULT_RETURN_HEADER, + body=json.dumps({"Error": "Could not build image object list. Exception: " + str(e)}) + ) try: + logging.info("Now connecting to database...") data_access = ImageTagDataAccess(get_postgres_provider()) - user_id = data_access.create_user(user_name) - - logging.debug("Add new images to the database, and retrieve a dictionary ImageId's mapped to ImageUrl's") - image_id_url_map = data_access.add_new_images(image_object_list,user_id) - - copy_source = os.getenv('SOURCE_CONTAINER_NAME') - copy_destination = os.getenv('DESTINATION_CONTAINER_NAME') - - # Create blob service for storage account - blob_service = BlockBlobService(account_name=os.getenv('STORAGE_ACCOUNT_NAME'), account_key=os.getenv('STORAGE_ACCOUNT_KEY')) - - # Copy images to permanent storage and get a dictionary of images for which to update URLs in DB. - # TODO: Prefer to have this function return a JSON blob as a string containing a list of successes - # and a list of failures. If the list of failures contains any items, return a status code other than 200. - update_urls_dictionary = copy_images_to_permanent_storage(image_id_url_map, copy_source, copy_destination, blob_service) - - # If the dictionary of images is empty, this means a faiure occurred in a copy/delete operation. - # Otherwise, dictionary contains permanent image URLs for each image ID that was successfully copied. - if not update_urls_dictionary: - return func.HttpResponse("ERROR: Image copy/delete operation failed. Check state of images in storage.", status_code=401) - else: - logging.debug("Now updating permanent URLs in the DB...") - data_access.update_image_urls(update_urls_dictionary, user_id) - - content = json.dumps({"imageUrls":list(update_urls_dictionary.values())}) - return func.HttpResponse( - status_code=200, - headers=DEFAULT_RETURN_HEADER, - body=content - ) - + logging.info("Connected.") except Exception as e: - logging.error("Exception: " + str(e)) - return func.HttpResponse("Internal error occured", status_code=503) + logging.error("Error: Database connection failed. Exception: " + str(e)) + return func.HttpResponse( + status_code=500, + headers=DEFAULT_RETURN_HEADER, + body=json.dumps({"Error": "Database connection failed. Exception: " + str(e)}) + ) + # Create/look up username in database and retrieve user_id number + user_id= data_access.create_user(user_name) + logging.info("User ID for {0} is {1}".format(user_name, user_id)) + + # Add the images to the database and retrieve their image ID's + logging.info("Add new images to the database, and retrieve a dictionary ImageId's mapped to ImageUrl's") + image_id_url_map = data_access.add_new_images(image_object_list,user_id) + + # Create blob service for storage account + blob_service = BlockBlobService(account_name=ACCOUNT_NAME, account_key=ACCOUNT_KEY) + + # Copy images from temporary to permanent storage. Receive back a list of the copy operations that succeeded and failed. + # Note: Format for copy_succeeded_dict and copy_error_dict is { sourceURL : destinationURL } + copy_succeeded_dict, copy_error_dict = copy_images_to_permanent_storage(image_id_url_map, COPY_SOURCE, COPY_DESTINATION, blob_service) + + # Update URLs in DB for images that were successfully copied + logging.info("Now updating URLs in the DB for images that were successfully copied...") + # Build new image_id_url_map containing images that were successfully copied + update_urls_dictionary = {} + for key in copy_succeeded_dict.keys(): + destination_url = copy_succeeded_dict[key] + filename = str(destination_url).split('/')[-1] + image_id_to_update = int(filename.split('.')[0]) + update_urls_dictionary[image_id_to_update] = str(destination_url) + data_access.update_image_urls(update_urls_dictionary, user_id) + logging.info("Done.") + + # Delete images from temporary storage. Receive back a list of the delete operations that succeeded and failed. + # Note: Format for delete_succeeded_dict and delete_error_dict is { sourceURL : destinationURL } + logging.info("Now deleting images from temp storage...") + delete_succeeded_dict, delete_error_dict = delete_images_from_temp_storage(copy_succeeded_dict, COPY_SOURCE, blob_service) + logging.info("Done.") + + # If both error_dicts are empty, return a 200 OK status code. + # If copy_error_dict or delete_error_dict contains any items, build a JSON object for HTTP response + # and return a bad status code indicating that one or more images failed. + if not copy_error_dict and not delete_error_dict: + content = json.dumps({"Success": "Transfer of all images complete."}) + return func.HttpResponse( + status_code=200, + headers=DEFAULT_RETURN_HEADER, + body=content + ) + else: + content = json.dumps({ + "copy_failed":dict(copy_error_dict), + "delete_failed":dict(delete_error_dict) + }) + return func.HttpResponse( + status_code=500, + headers=DEFAULT_RETURN_HEADER, + body=content + ) # Given a list of image URL's, build an ImageInfo object for each, and return a list of these image objects. def build_objects_from_url_list(url_list): @@ -87,7 +134,6 @@ def build_objects_from_url_list(url_list): # Split original image name from URL original_filename = url.split("/")[-1] # Create ImageInfo object (def in db_access.py) - with Image.open(urlopen(url)) as img: width, height = img.size image = ImageInfo(original_filename, url, height, width) diff --git a/functions/pipeline/shared/db_access/test_db_access_v2.py b/functions/pipeline/shared/db_access/test_db_access_v2.py index 6de5af0c..f8f22a23 100644 --- a/functions/pipeline/shared/db_access/test_db_access_v2.py +++ b/functions/pipeline/shared/db_access/test_db_access_v2.py @@ -38,10 +38,10 @@ class MockDBProvider: def __init__(self, fail = False): self.fail = fail - def get_connection(self): - if self.fail: - raise Exception - return MockConnection() + def get_connection(self): + if self.fail: + raise Exception + return MockConnection() class TestImageTagDataAccess(unittest.TestCase): def test_connection(self): diff --git a/functions/pipeline/shared/onboarding/__init__.py b/functions/pipeline/shared/onboarding/__init__.py index 3d0a58d0..dd1081a9 100644 --- a/functions/pipeline/shared/onboarding/__init__.py +++ b/functions/pipeline/shared/onboarding/__init__.py @@ -1,52 +1,115 @@ import os import logging +from enum import Enum +from datetime import datetime +import time +import asyncio -# TODO: Modify this function to return a JSON string that contains a "succeeded" list and a "failed" list. +TIMEOUT_SECONDS = 1 + +class CopyStatus(Enum): + SUCCESS = "success", + PENDING = "pending", + ABORTED = "aborted", + FAILED = "failed", + TIMEOUT = "timeout" # custom status + +class DeleteStatus(Enum): + SUCCESS = "success", + PENDING = "pending", + ABORTED = "aborted", + FAILED = "failed", + TIMEOUT = "timeout" # custom status + +# Initiates copy of images from temporary to permanent storage, and checks the status of each operation. +# Returns two dictionaries, copy_succeeded_dict and copy_error_dict, in the format {sourceURL : destinationURL }. def copy_images_to_permanent_storage(image_id_url_map, copy_source, copy_destination, blob_service): - # Create a dictionary to store map of new permanent image URLs to image ID's - update_urls_dictionary = {} + copy_initiated_dict = {} # Dictionary of images for which copy was successfully initiated + copy_error_dict = {} # Dictionary of images for which some error/exception occurred - # Copy images from temporary to permanent storage and delete them. + # Create new blob names for key, value in image_id_url_map.items(): - original_image_url = key - original_blob_name = original_image_url.split("/")[-1] - file_extension = os.path.splitext(original_image_url)[1] + original_blob_url = key + # original_blob_name = original_blob_url.split("/")[-1] + file_extension = os.path.splitext(original_blob_url)[1] image_id = value new_blob_name = (str(image_id) + file_extension) - # Verbose logging for testing - logging.debug("Original image name: " + original_blob_name) - logging.debug("Image ID: " + str(image_id)) - logging.debug("New blob name: " + new_blob_name) - - # Create the blob URLs - source_blob_path = blob_service.make_blob_url(copy_source, original_blob_name) + # Create the destination blob URL destination_blob_path = blob_service.make_blob_url(copy_destination, new_blob_name) # Copy blob from temp storage to permanent storage + logging.info("Now initiating copy of image from temporary to permanent storage...") + # Log source and destination paths for debugging + logging.info("Source path: " + original_blob_url) + logging.info("Destination path: " + destination_blob_path) try: - logging.debug("Now copying file from temporary to permanent storage...") - logging.debug("Source path: " + source_blob_path) - logging.debug("Destination path: " + destination_blob_path) - blob_service.copy_blob(copy_destination, new_blob_name, source_blob_path) - logging.debug("Done.") - - # Add ImageId and permanent storage url to new dictionary to be sent to update function - update_urls_dictionary[image_id] = destination_blob_path - - # Delete the file from temp storage once it's been copied - logging.debug("Now deleting image " + original_blob_name + " from temp storage container.") - try: - blob_service.delete_blob(copy_source, original_blob_name) - logging.debug("Blob " + original_blob_name + " has been deleted successfully") - except Exception as e: - logging.error("ERROR: Deletion of blob " + original_blob_name + " failed. Exception: " + str(e)) - update_urls_dictionary.clear() - return update_urls_dictionary + blob_service.copy_blob(copy_destination, new_blob_name, original_blob_url) + logging.info("Done.") + # Add to list of items for which we need to check status if copy was initiated successfully + copy_initiated_dict[original_blob_url] = destination_blob_path + except Exception as e: + logging.error("ERROR: Exception thrown during copy attempt: " + str(e)) + copy_error_dict[original_blob_url] = destination_blob_path + + # Wait a few seconds before checking status + time.sleep(TIMEOUT_SECONDS) + copy_succeeded_dict = {} # Dictionary of copy operations that were successful + + # Get copy status of each item. If status is succeeded, add to success list. Otherwise, add to error list. + for key, value in copy_initiated_dict.items(): + target_blob_properties = blob_service.get_blob_properties(copy_destination, value.split("/")[-1]) + copy_properties = target_blob_properties.properties.copy + # logging.info("Copy status of image" + value.split("/")[-1] + " is: " + copy_properties.status) # Debugging + # if copy_properties.status == CopyStatus.SUCCESS: # Note: Want to remove hard-coding, but this line does not work + if copy_properties.status == "success": + copy_succeeded_dict[key] = value + else: + copy_error_dict[key] = value + + # Debugging + # logging.info("copy_succeeded_dict:") + # for key, value in copy_succeeded_dict.items(): + # logging.info("Key: " + key + " Value: " + value) + # logging.info("copy_error_dict:") + # for key, value in copy_error_dict.items(): + # logging.info("Key: " + key + " Value: " + value) + + return copy_succeeded_dict, copy_error_dict + +# Initiates deletion of images from temporary storage, and then checks whether the images still exist in the container. +# Returns two dictionaries, delete_succeeded_dict and delete_error_dict, in the format {sourceURL : destinationURL }. +def delete_images_from_temp_storage(delete_images_dict, delete_location, blob_service): + delete_initiated_dict = {} # Dictionary of images for which delete was successfully initiated + delete_error_dict = {} # Dictionary of images for which some error/exception occurred + + # Delete blobs from container + for key, value in delete_images_dict.items(): + logging.info("Now initiating delete of image from temp storage...") + logging.info("Image to be deleted: " + key) + try: + blob_service.delete_blob(delete_location, key.split("/")[-1]) + logging.info("Done.") + # Add to list of items to check status if delete was initiated successfully + delete_initiated_dict[key] = value except Exception as e: - logging.error("ERROR: Copy of blob " + original_blob_name + " failed. Exception: " + str(e)) - update_urls_dictionary.clear() - return update_urls_dictionary + logging.error("ERROR: Exception thrown during delete attempt: " + str(e)) + delete_error_dict[key] = value + + # Wait a few seconds before checking status + time.sleep(TIMEOUT_SECONDS) + + delete_succeeded_dict = {} # Dictionary of delete operations that were successful - return update_urls_dictionary + # List blobs in the source container. For each image in delete_initiated_dict, if the blob no longer exists, + # add to delete_succeeded_dict. If the blob still exists, add to delete_error_dict. + blob_list = blob_service.list_blobs(delete_location) + for key, value in delete_initiated_dict.items(): + blob_name = key.split('/')[-1] + if blob_name in blob_list: + delete_error_dict[key] = value + else: + delete_succeeded_dict[key] = value + + return delete_succeeded_dict, delete_error_dict \ No newline at end of file From 44cfd382d54cdbbe44e703bcc05be631d298d361 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Wed, 5 Dec 2018 10:33:02 -0800 Subject: [PATCH 097/145] Changes to support automated deployments (#61) * Changes to make deploy config file, postgres server deploy optional * Added comment * Added readme. Removed flag * Adjusting case * Link changes * Updated README * More readme changes --- devops/deployment/Deploy-Infrastructure.sh | 43 +++++++++++---- .../deployment/Deploy-Python-Functions-App.sh | 2 +- devops/deployment/ReadMe.md | 55 +++++++++++++++++++ 3 files changed, 87 insertions(+), 13 deletions(-) create mode 100644 devops/deployment/ReadMe.md diff --git a/devops/deployment/Deploy-Infrastructure.sh b/devops/deployment/Deploy-Infrastructure.sh index 46dc4449..9998b2b6 100755 --- a/devops/deployment/Deploy-Infrastructure.sh +++ b/devops/deployment/Deploy-Infrastructure.sh @@ -1,5 +1,4 @@ #!/bin/bash -set -x # Check if we are in a virutal env (needed to deploy functions, database) if [ -z "$VIRTUAL_ENV" ]; then @@ -21,33 +20,53 @@ fi # Check if any of the args are empty if [ -z "$1" ]; then - echo "Usage: 'sh $0 (Configuration file)'" - exit 1 + echo "Usage: 'sh $0 (Configuration file)' or SET Environment Variables" fi -# Is the config file present? -if [ ! -e "$1" ]; then +# If arg exists but the config file isn't present? +if [ -n "$1" ] && [ ! -e "$1" ]; then echo "Configuration file does not exist." exit 1 +elif [ -e "$1" ]; then + # Read configuration + . $1 fi -# Read configuration -. $1 +#Verify env vars are set +[ -z "$RESOURCE_GROUP" ] && echo "Need to set RESOURCE_GROUP" && exit 1; +[ -z "$RESOURCE_LOCATION" ] && echo "Need to set RESOURCE_LOCATION" && exit 1; +[ -z "$PROJECT_STORAGE_ACCOUNT" ] && echo "Need to set PROJECT_STORAGE_ACCOUNT" && exit 1; +[ -z "$PROJECT_STORAGE_TEMP_CONTAINER" ] && echo "Need to set PROJECT_STORAGE_TEMP_CONTAINER" && exit 1; +[ -z "$PROJECT_STORAGE_PERM_CONTAINER" ] && echo "Need to set PROJECT_STORAGE_PERM_CONTAINER" && exit 1; +[ -z "$DATABASE_NAME" ] && echo "Need to set DATABASE_NAME" && exit 1; +[ -z "$DATABASE_SERVER_NAME" ] && echo "Need to set DATABASE_SERVER_NAME" && exit 1; +[ -z "$DATABASE_USERNAME" ] && echo "Need to set DATABASE_USERNAME" && exit 1; +[ -z "$DATABASE_PASSWORD" ] && echo "Need to set DATABASE_PASSWORD" && exit 1; +[ -z "$APPINSIGHTS_NAME" ] && echo "Need to set APPINSIGHTS_NAME" && exit 1; +[ -z "$FUNCTION_STORAGE_ACCOUNT" ] && echo "Need to set FUNCTION_STORAGE_ACCOUNT" && exit 1; +[ -z "$FUNCTION_APP_NAME" ] && echo "Need to set FUNCTION_APP_NAME" && exit 1; # Install reuired python modules pip install -r ../../requirements.txt +#Conditional Postgres Server deployment to speed up scheduled automated deploys +DEPLOY_POSTGRES_SERVER=${DEPLOY_POSTGRES:="true"} + # Setup database DATABASE_USERNAME_AT_HOST="$DATABASE_USERNAME@$DATABASE_SERVER_NAME" -. ./Deploy-Postgres-DB.sh $RESOURCE_GROUP $DATABASE_SERVER_NAME "$DATABASE_USERNAME" $DATABASE_PASSWORD -if [ "$?" -ne 0 ]; then - echo "Unable to setup database" - exit 1 +if $DEPLOY_POSTGRES_SERVER; then + . ./Deploy-Postgres-DB.sh $RESOURCE_GROUP $DATABASE_SERVER_NAME "$DATABASE_USERNAME" $DATABASE_PASSWORD + if [ "$?" -ne 0 ]; then + echo "Unable to setup database" + exit 1 + fi +else + echo "Skipping deploy of Postgres SQL server" fi # Setup database schema DB_HOST_FULL_NAME="$DATABASE_SERVER_NAME"".postgres.database.azure.com" -(cd ../../db && export DB_HOST=$DB_HOST_FULL_NAME && export DB_USER="$DATABASE_USERNAME_AT_HOST" && export DB_PASS=$DATABASE_PASSWORD && ./install-db-resources.py $DATABASE_NAME) +(cd ../../db && export DB_HOST=$DB_HOST_FULL_NAME && export DB_USER="$DATABASE_USERNAME_AT_HOST" && export DB_PASS=$DATABASE_PASSWORD && ./install-db-resources.py --overwrite $DATABASE_NAME) # Setup app insights . ./Deploy-AppInsights.sh $RESOURCE_GROUP $APPINSIGHTS_NAME diff --git a/devops/deployment/Deploy-Python-Functions-App.sh b/devops/deployment/Deploy-Python-Functions-App.sh index aefa0ce7..3ca21020 100755 --- a/devops/deployment/Deploy-Python-Functions-App.sh +++ b/devops/deployment/Deploy-Python-Functions-App.sh @@ -11,7 +11,7 @@ FunctionAppName=$3 AppInsightsName=$4 if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ] || [ -z "$6" ] || [ -z "$7" ] || [ -z "$8" ] || [ -z "$9" ] || [ -z "${10}" ] || [ -z "${11}" ] || [ -z "${12}" ] || [ -z "${13}" ]; then - echo "Usage: 'sh $0 (Azure Resource Group Name) (Azure Function Storage Name) (Azure Function App Name) (AppInsightsName) (Storage account) (Source container) (Dest container) (DB Server Name) (DB Username) (DB Password) (DB Name) (Storage Connection String)'" + echo "Usage: sh $0 (Azure Resource Group Name) (Azure Function Storage Name) (Azure Function App Name) (AppInsightsName) (Storage account) (Source container) (Dest container) (DB Server Name) (DB Username) (DB Password) (DB Name) (Storage Connection String)" exit 1 fi diff --git a/devops/deployment/ReadMe.md b/devops/deployment/ReadMe.md new file mode 100644 index 00000000..8ca04cab --- /dev/null +++ b/devops/deployment/ReadMe.md @@ -0,0 +1,55 @@ +# Getting Starting With Active Learning Infrastructure + +This directory contains several scripts to install the Active Learning infrastructure on to Azure. A more detailed look at database infrastructure deployment can be found [here](../../db/README.md) + +# Install Options +1. [Easy Install](#step1) +2. [Automated Install](#step2) + +## Easy Install
    + +The easiest way to get up and running is to manually update the _values_ of the config file [here](config/deployment_config.sh) + +``` +# Project configuration +RESOURCE_GROUP=my-resource-name +RESOURCE_LOCATION=westus +PROJECT_STORAGE_ACCOUNT=actlrnintstor +PROJECT_STORAGE_TEMP_CONTAINER=tempcont +PROJECT_STORAGE_PERM_CONTAINER=permcont + +# Database config +DATABASE_NAME=mydatabasename +DATABASE_SERVER_NAME=mypostgresservername +DATABASE_USERNAME=actlrnadmin +DATABASE_PASSWORD=MyPassword2019 + +# AppInsights config +APPINSIGHTS_NAME=myappinsightsname + +# Azure Function configuration +FUNCTION_STORAGE_ACCOUNT=actlrnintfuncstor +FUNCTION_APP_NAME=actlrnintegration +``` + +Next start a Python (3.5+) __virtual environment__ in the directory of deployment script (this directory). Next run the command below from the same directory: + +``` +. ./Deploy-Infrastructure config/deployment_config.sh +``` + +This command will deploy all the components necessary to accomplish tagging from scratch. + +## Automated Install + +In deployment environments that rely on dynamic environment variables we allow our top level script to be run without config file. SET the environment variables defined [here](config/deployment_config.sh) in your Bash session + +Start a Python (3.5+) __virtual environment__ in the directory of deployment script (this directory). Next run the command below from the same directory: + +``` +. ./Deploy-Infrastructure +``` + +# Azure Pipelines Continuous Deployment Example + +TODO \ No newline at end of file From d79f0063fd9740cc4d2e69e8cd55e05d12a0e0c8 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Wed, 5 Dec 2018 15:33:59 -0800 Subject: [PATCH 098/145] Deployment bug fixes (#63) * Added more explicit logic around when to skip a postgres server deploy * Fixed syntax * Fixing conditional * Update Deploy-Python-Functions-App.sh * Additonal logging * Changes to make sure the storage & containers are deleted before deploy --- devops/deployment/Deploy-Infrastructure.sh | 12 +++++++++--- devops/deployment/Deploy-Python-Functions-App.sh | 3 ++- devops/deployment/Deploy-Storage.sh | 12 ++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/devops/deployment/Deploy-Infrastructure.sh b/devops/deployment/Deploy-Infrastructure.sh index 9998b2b6..b911847a 100755 --- a/devops/deployment/Deploy-Infrastructure.sh +++ b/devops/deployment/Deploy-Infrastructure.sh @@ -54,17 +54,23 @@ DEPLOY_POSTGRES_SERVER=${DEPLOY_POSTGRES:="true"} # Setup database DATABASE_USERNAME_AT_HOST="$DATABASE_USERNAME@$DATABASE_SERVER_NAME" -if $DEPLOY_POSTGRES_SERVER; then + +#Only skip the deploy if the server exists and we are configured not to deploy +query_result=$(az postgres server list --query "[?name=='$DATABASE_SERVER_NAME'].name") +if [[ $query_result =~ $DATABASE_SERVER_NAME ]] && ! $DEPLOY_POSTGRES_SERVER; +then + echo && echo "Skipping deployment of PostgreSQL server $DATABASE_SERVER_NAME" && echo +else + echo "Entering deployment of PostgreSQL server $DATABASE_SERVER_NAME" . ./Deploy-Postgres-DB.sh $RESOURCE_GROUP $DATABASE_SERVER_NAME "$DATABASE_USERNAME" $DATABASE_PASSWORD if [ "$?" -ne 0 ]; then echo "Unable to setup database" exit 1 fi -else - echo "Skipping deploy of Postgres SQL server" fi # Setup database schema +echo "Installing of database resources to PostgreSQL server $DATABASE_SERVER_NAME" DB_HOST_FULL_NAME="$DATABASE_SERVER_NAME"".postgres.database.azure.com" (cd ../../db && export DB_HOST=$DB_HOST_FULL_NAME && export DB_USER="$DATABASE_USERNAME_AT_HOST" && export DB_PASS=$DATABASE_PASSWORD && ./install-db-resources.py --overwrite $DATABASE_NAME) diff --git a/devops/deployment/Deploy-Python-Functions-App.sh b/devops/deployment/Deploy-Python-Functions-App.sh index 3ca21020..32747ec8 100755 --- a/devops/deployment/Deploy-Python-Functions-App.sh +++ b/devops/deployment/Deploy-Python-Functions-App.sh @@ -81,6 +81,7 @@ AppInsightsKey=$(az resource show -g $ResourceGroup -n $AppInsightsName --resour #Remove double quotes AppInsightsKey=$(sed -e 's/^"//' -e 's/"$//' <<<"$AppInsightsKey") STORAGE_ACCOUNT_KEY=$(sed -e 's/^"//' -e 's/"$//' <<<"$STORAGE_ACCOUNT_KEY") +STORAGE_CONNECTION_STRING=$(sed -e 's/^"//' -e 's/"$//' <<<"$STORAGE_CONNECTION_STRING") echo echo "Setting application setting on $FunctionAppName" @@ -95,4 +96,4 @@ az functionapp config appsettings set --name $FunctionAppName --resource-group $ "STORAGE_ACCOUNT_KEY=$STORAGE_ACCOUNT_KEY" \ "SOURCE_CONTAINER_NAME=$SOURCE_CONTAINER_NAME" \ "DESTINATION_CONTAINER_NAME=$DESTINATION_CONTAINER_NAME" \ - "STORAGE_CONNECTION_STRING=$STORAGE_CONNECTION_STRING" \ No newline at end of file + "STORAGE_CONNECTION_STRING=$STORAGE_CONNECTION_STRING" diff --git a/devops/deployment/Deploy-Storage.sh b/devops/deployment/Deploy-Storage.sh index 291988e7..c323e5de 100755 --- a/devops/deployment/Deploy-Storage.sh +++ b/devops/deployment/Deploy-Storage.sh @@ -20,6 +20,18 @@ if [ -z "$STORAGE_NAME" ]; then exit 1 fi +#A conditional to choose whether or not to redploy the storage account if it already exists +REDEPLOY_AZURE_STORAGE=${REDEPLOY_STORAGE:="true"} +if $REDEPLOY_AZURE_STORAGE; then + #First see if the storage account exists. + storage_query_result=$(az storage account list -g $RESOURCE_GROUP --query "[?name=='$PROJECT_STORAGE_ACCOUNT'].name") + if [[ $storage_query_result =~ $STORAGE_NAME ]]; + then + echo "Storage account $STORAGE_NAME already exists. Removing..." + az storage account delete -g $RESOURCE_GROUP -n $STORAGE_NAME -y + fi +fi + echo "Creating Storage Account" az storage account create --resource-group $RESOURCE_GROUP --name $STORAGE_NAME --sku Standard_LRS From b4bdf4be2fa40bc8ea135a7e92149f99358a2fa1 Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Wed, 5 Dec 2018 19:13:35 -0800 Subject: [PATCH 099/145] Using signed URLs in onboarding container (#65) --- .../pipeline/onboardcontainer/__init__.py | 52 +++++++++++++++---- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/functions/pipeline/onboardcontainer/__init__.py b/functions/pipeline/onboardcontainer/__init__.py index d08f9a6b..72653c0e 100644 --- a/functions/pipeline/onboardcontainer/__init__.py +++ b/functions/pipeline/onboardcontainer/__init__.py @@ -2,10 +2,14 @@ import logging import json import azure.functions as func +from datetime import datetime, timedelta -from azure.storage.blob import BlockBlobService +from azure.storage.blob import BlockBlobService, BlobPermissions from azure.storage.queue import QueueService, QueueMessageFormat -DEFAULT_RETURN_HEADER= { "content-type": "application/json"} + +DEFAULT_RETURN_HEADER = { + "content-type": "application/json" +} def main(req: func.HttpRequest) -> func.HttpResponse: @@ -27,33 +31,59 @@ def main(req: func.HttpRequest) -> func.HttpResponse: storage_account_key = req_body["storageAccountKey"] storage_container = req_body["storageContainer"] except ValueError: - return func.HttpResponse("ERROR: Unable to decode POST body", status_code=400) + return func.HttpResponse( + "ERROR: Unable to decode POST body", + status_code=400 + ) if not storage_container or not storage_account or not storage_account_key: - return func.HttpResponse("ERROR: storage container/account/key/queue not specified.", status_code=401) + return func.HttpResponse( + "ERROR: storage container/account/key/queue not specified.", + status_code=401 + ) # Create blob service for storage account (retrieval source) blob_service = BlockBlobService(account_name=storage_account, account_key=storage_account_key) # Queue service for perm storage and queue - queue_service = QueueService(account_name=os.getenv('STORAGE_ACCOUNT_NAME'), - account_key=os.getenv('STORAGE_ACCOUNT_KEY')) + queue_service = QueueService( + account_name=os.getenv('STORAGE_ACCOUNT_NAME'), + account_key=os.getenv('STORAGE_ACCOUNT_KEY') + ) + queue_service.encode_function = QueueMessageFormat.text_base64encode try: blob_list = [] + for blob_object in blob_service.list_blobs(storage_container): - blob_list.append(blob_service.make_blob_url(storage_container, blob_object.name)) + logging.info("INFO: Building sas token for blob " + blob_object.name) + # create sas signature + sas_signature = blob_service.generate_blob_shared_access_signature( + storage_container, + blob_object.name, + BlobPermissions.READ, + datetime.utcnow() + timedelta(hours=1) + ) + + blob_url = blob_service.make_blob_url( + storage_container, + blob_object.name + ) + + signed_url = blob_url + "?" + sas_signature + + blob_list.append(signed_url) + + logging.info("INFO: Built signed url " + signed_url) - # TODO: Batch messaging? - for image_url in blob_list: msg_body = { - "imageUrl": image_url, + "imageUrl": signed_url, "userName": user_name } - body_str = json.dumps(msg_body) + body_str = json.dumps(msg_body) queue_service.put_message("onboardqueue", body_str) return func.HttpResponse( From 50df3d495a967d58418b3c36ccb2a626d355792b Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Wed, 5 Dec 2018 19:15:40 -0800 Subject: [PATCH 100/145] Adding function extensions required for queueTrigger deployments (#64) --- .gitignore | 6 +++++- functions/pipeline/extensions.csproj | 11 +++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 functions/pipeline/extensions.csproj diff --git a/.gitignore b/.gitignore index d5dbf2ae..1aaec666 100644 --- a/.gitignore +++ b/.gitignore @@ -120,4 +120,8 @@ tag/*.csv .pb # VSCode -.vscode/*.json \ No newline at end of file +.vscode/*.json + +# Function extension /bin and /obj folders +Functions/pipeline/bin +Functions/pipeline/obj diff --git a/functions/pipeline/extensions.csproj b/functions/pipeline/extensions.csproj new file mode 100644 index 00000000..c4e99e98 --- /dev/null +++ b/functions/pipeline/extensions.csproj @@ -0,0 +1,11 @@ + + + netstandard2.0 + + ** + + + + + + \ No newline at end of file From 1dd982556c613cbb836f7009fca6877d812d0736 Mon Sep 17 00:00:00 2001 From: Samiya Date: Thu, 6 Dec 2018 09:47:12 -0800 Subject: [PATCH 101/145] Script to download training data, images and convert data to csv files (#62) * Separated downloaded training metadata into tagged and totag * Use config tagging location * Loading image info for ready to tag images * Optimized function to get tag data for tagging complete images * Refactored db access code to use single function for both tag complete and ready to tag images * Refactored functions into api/images/ and api/tags/ for better readability and separation of concerns * Removed unused taggedimages api --- cli/training.py | 85 ------------ functions/pipeline/images/__init__.py | 63 +++++++++ functions/pipeline/images/function.json | 20 +++ functions/pipeline/images/host.json | 3 + .../pipeline/shared/db_access/db_access_v2.py | 91 +++++++++++-- .../shared/vott_parser/vott_parser.py | 3 +- functions/pipeline/taggedimages/function.json | 19 --- functions/pipeline/taggedimages/host.json | 3 - .../{taggedimages => tags}/__init__.py | 126 +++++++++--------- functions/pipeline/tags/function.json | 20 +++ functions/pipeline/tags/host.json | 3 + train/__init__.py | 0 train/training.py | 107 +++++++++++++++ utils/config.py | 16 +++ 14 files changed, 377 insertions(+), 182 deletions(-) delete mode 100644 cli/training.py create mode 100644 functions/pipeline/images/__init__.py create mode 100644 functions/pipeline/images/function.json create mode 100644 functions/pipeline/images/host.json delete mode 100644 functions/pipeline/taggedimages/function.json delete mode 100644 functions/pipeline/taggedimages/host.json rename functions/pipeline/{taggedimages => tags}/__init__.py (69%) create mode 100644 functions/pipeline/tags/function.json create mode 100644 functions/pipeline/tags/host.json create mode 100644 train/__init__.py create mode 100644 train/training.py diff --git a/cli/training.py b/cli/training.py deleted file mode 100644 index 5ac51e83..00000000 --- a/cli/training.py +++ /dev/null @@ -1,85 +0,0 @@ -import argparse -import os -import csv -import requests -from azure.storage.blob import BlockBlobService, ContentSettings -from utils.config import Config -from utils.blob_utils import BlobStorage - -CONFIG_PATH = os.environ.get('ALCONFIG', None) - -class TagData(object): - def __init__(self, imageUrl, name, tags, x1, x2, y1, y2, height, width): - self.tags = tags - self.x1 = x1 - self.x2 = x2 - self.y1 = y1 - self.y2 = y2 - self.height = height - self.width = width - self.name = name - self.imageUrl = imageUrl - - -def train(config, num_images): - # First, download vott json for tagging complete images - vott_json = download_vott_json(config, num_images) - - # Grab these images from the blob storage - download_images(vott_json) - - # create csv file from this data - convert_to_csv(vott_json) - - -def download_images(vott_json): - blob_storage = BlobStorage.get_azure_storage_client(config) - if not os.path.exists('images'): - os.makedirs('images') - for image in vott_json: - if (blob_storage.exists(config.get("storage_container"), image)): - blob_storage.get_blob_to_path(config.get("storage_container"),image, "images/{}".format(image)) - - -def download_vott_json(config, num_images): - query = { - "userName": config.get('tagging_user'), - "imageCount": num_images - } - functions_url = config.get('url') + '/api/taggedimages' - response = requests.get(functions_url, params=query) - data = response.json() - print(data) - - vott_json = {} - index = 0 - for item in data['vottJson']['frames']: - tags = data['vottJson']['frames'][item] - array_tags = [] - for tag in tags: - tagdata = TagData(data['imageUrls'][index], item, tag['tags'], tag['x1'], tag['x2'], tag['y1'], tag['y2'], tag['height'], tag['width']) - array_tags.append(tagdata) - vott_json[item] = array_tags - index += 1 - - print(vott_json) - return vott_json - - -def convert_to_csv(vott_json): - with open('data.csv', 'w') as csvfile: - filewriter = csv.writer(csvfile, delimiter=',', - quotechar='|', quoting=csv.QUOTE_MINIMAL) - for item in vott_json: - for tags in vott_json[item]: - for tag in tags.tags: - data = [tags.name, tag, tags.x1, tags.x2, tags.y1, tags.y2, tags.height, tags.width, '', 0, 0] - filewriter.writerow(data) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument('-n', '--num-images', type=int) - config = Config.read_config(CONFIG_PATH) - args = parser.parse_args() - train(config, args.num_images) diff --git a/functions/pipeline/images/__init__.py b/functions/pipeline/images/__init__.py new file mode 100644 index 00000000..ff8f7d22 --- /dev/null +++ b/functions/pipeline/images/__init__.py @@ -0,0 +1,63 @@ +import logging + +import azure.functions as func +import json + +from ..shared.vott_parser import create_starting_vott_json +from ..shared.db_provider import get_postgres_provider +from ..shared.db_access import ImageTagDataAccess, ImageTagState + + +def main(req: func.HttpRequest) -> func.HttpResponse: + logging.info('Python HTTP trigger function processed a request.') + + image_count = int(req.params.get('imageCount')) + user_name = req.params.get('userName') + tag_status = req.params.get('tagStatus') + + # setup response object + headers = { + "content-type": "application/json" + } + if not user_name: + return func.HttpResponse( + status_code=401, + headers=headers, + body=json.dumps({"error": "invalid userName given or omitted"}) + ) + elif not image_count: + return func.HttpResponse( + status_code=400, + headers=headers, + body=json.dumps({"error": "image count not specified"}) + ) + elif not tag_status: + return func.HttpResponse( + status_code=400, + headers=headers, + body=json.dumps({"error": "tag status not specified"}) + ) + else: + try: + # DB configuration + data_access = ImageTagDataAccess(get_postgres_provider()) + user_id = data_access.create_user(user_name) + + # Get images info + ready_to_tag_images = data_access.get_images_by_tag_status(user_id, tag_status, image_count) + + image_infos = data_access.get_image_info_for_image_ids(list(ready_to_tag_images.keys())) + + # return_body_json = { image_infos } + + content = json.dumps(image_infos) + return func.HttpResponse( + status_code=200, + headers=headers, + body=content + ) + except Exception as e: + return func.HttpResponse( + "exception:" + str(e), + status_code=500 + ) diff --git a/functions/pipeline/images/function.json b/functions/pipeline/images/function.json new file mode 100644 index 00000000..f6425972 --- /dev/null +++ b/functions/pipeline/images/function.json @@ -0,0 +1,20 @@ +{ + "scriptFile": "__init__.py", + "bindings": [ + { + "authLevel": "anonymous", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "get" + ] + }, + { + "type": "http", + "direction": "out", + "name": "$return" + } + ] + } + \ No newline at end of file diff --git a/functions/pipeline/images/host.json b/functions/pipeline/images/host.json new file mode 100644 index 00000000..b9f92c0d --- /dev/null +++ b/functions/pipeline/images/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" +} \ No newline at end of file diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index f4040140..01f63591 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -16,7 +16,6 @@ class ImageTagState(IntEnum): INCOMPLETE_TAG = 4 ABANDONED = 5 - # An entity class for a VOTT image class ImageInfo(object): def __init__(self, image_name, image_location, height, width): @@ -39,10 +38,11 @@ def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names): # Vott tags have image height & width data as well. class VottImageTag(ImageTag): - def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names, image_height, image_width): + def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names, image_height, image_width, image_location): super().__init__(image_id, x_min, x_max, y_min, y_max, classification_names) self.image_height = image_height self.image_width = image_width + self.image_location = image_location class ImageTagDataAccess(object): @@ -130,11 +130,10 @@ def add_new_images(self,list_of_image_infos, user_id): finally: conn.close() return url_to_image_id_map - def get_tag_complete_images(self, number_of_images, user_id): - if number_of_images <= 0: + def get_images_by_tag_status(self, user_id, tag_status, limit): + if limit <= 0: raise ArgumentException("Parameter must be greater than zero") - - tag_complete_images = {} + images_by_tag_status = {} try: conn = self._db_provider.get_connection() try: @@ -142,18 +141,86 @@ def get_tag_complete_images(self, number_of_images, user_id): query = ("SELECT b.ImageId, b.ImageLocation, a.TagStateId FROM Image_Tagging_State a " "JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = {1} order by " "a.createddtim DESC limit {0}") - cursor.execute(query.format(number_of_images, ImageTagState.COMPLETED_TAG)) + cursor.execute(query.format(limit, tag_status)) for row in cursor: logging.debug('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) - tag_complete_images[row[0]] = str(row[1]) + images_by_tag_status[row[0]] = str(row[1]) finally: cursor.close() except Exception as e: - logging.error("An errors occured getting images: {0}".format(e)) + logging.error("An errors occured getting ready to tag images: {0}".format(e)) + raise + finally: + conn.close() + return images_by_tag_status + + + def get_image_info_for_image_ids(self, image_ids): + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + ids = '' + for id in image_ids: + ids += str(id) + ',' + ids = ids[:-1] + query = ("select imageid, originalimagename, imagelocation, height, width, createdbyuser from image_info where imageid IN ({0});") + cursor.execute(query.format(ids)) + logging.debug("Got image info back for image_id={}".format(image_ids)) + + images_info = [] + for row in cursor: + info = {} + info['height'] = row[3] + info['width'] = row[4] + info['name'] = row[1] + info['location'] = row[2] + info['id'] = row[0] + images_info.append(info) + finally: + cursor.close() + except Exception as e: + logging.error("An error occurred getting image tags {0}".format(e)) raise finally: conn.close() - return tag_complete_images + return list(images_info) + + + def get_image_tags_for_image_ids(self, image_ids): + image_id_to_vott_tags = {} + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + ids = '' + for id in image_ids: + ids += str(id) + ',' + ids = ids[:-1] + query = ("SELECT image_tags.imagetagid, image_info.imageid, x_min, x_max, y_min, y_max, " + "classification_info.classificationname, image_info.height, image_info.width, image_info.imagelocation " + "FROM image_tags " + "inner join tags_classification on image_tags.imagetagid = tags_classification.imagetagid " + "inner join classification_info on tags_classification.classificationid = classification_info.classificationid " + "inner join image_info on image_info.imageid = image_tags.imageid " + "WHERE image_tags.imageid IN ({0});") + cursor.execute(query.format(ids,)) + + logging.debug("Got image tags back for image_id={}".format(image_ids)) + tag_id_to_vott_tags = self.__build_id_to_VottImageTag(cursor) + for vott_tag in tag_id_to_vott_tags.values(): + if vott_tag.image_id not in image_id_to_vott_tags: + image_id_to_vott_tags[vott_tag.image_id] = [] + image_id_to_vott_tags[vott_tag.image_id].append(vott_tag) + finally: + cursor.close() + except Exception as e: + logging.error("An error occurred getting image tags for image ids = {0}: {1}".format(image_ids, e)) + raise + finally: + conn.close() + return image_id_to_vott_tags + def get_image_tags(self, image_id): if type(image_id) is not int: @@ -164,7 +231,7 @@ def get_image_tags(self, image_id): try: cursor = conn.cursor() query = ("SELECT image_tags.imagetagid, image_info.imageid, x_min, x_max, y_min, y_max, " - "classification_info.classificationname, image_info.height, image_info.width " + "classification_info.classificationname, image_info.height, image_info.width, image_info.imagelocation " "FROM image_tags " "inner join tags_classification on image_tags.imagetagid = tags_classification.imagetagid " "inner join classification_info on tags_classification.classificationid = classification_info.classificationid " @@ -201,7 +268,7 @@ def __build_id_to_VottImageTag(self, tag_db_cursor): [row[6].strip()], row[7], row[8])) tag_id_to_VottImageTag[tag_id] = VottImageTag(row[1], float(row[2]), float(row[3]), float(row[4]), float(row[5]), [row[6].strip()], - row[7], row[8]) + row[7], row[8], row[9]) except Exception as e: logging.error("An error occurred building VottImageTag dict: {0}".format(e)) raise diff --git a/functions/pipeline/shared/vott_parser/vott_parser.py b/functions/pipeline/shared/vott_parser/vott_parser.py index a476c4d7..051d66b7 100644 --- a/functions/pipeline/shared/vott_parser/vott_parser.py +++ b/functions/pipeline/shared/vott_parser/vott_parser.py @@ -9,7 +9,8 @@ def __build_tag_from_VottImageTag(image_tag): "y2": image_tag.y_max, "width": image_tag.image_width, "height": image_tag.image_height, - "tags": image_tag.classification_names + "tags": image_tag.classification_names, + "location": image_tag.image_location } diff --git a/functions/pipeline/taggedimages/function.json b/functions/pipeline/taggedimages/function.json deleted file mode 100644 index f24e4f1d..00000000 --- a/functions/pipeline/taggedimages/function.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "scriptFile": "__init__.py", - "bindings": [ - { - "authLevel": "anonymous", - "type": "httpTrigger", - "direction": "in", - "name": "req", - "methods": [ - "get" - ] - }, - { - "type": "http", - "direction": "out", - "name": "$return" - } - ] -} diff --git a/functions/pipeline/taggedimages/host.json b/functions/pipeline/taggedimages/host.json deleted file mode 100644 index 81e35b7b..00000000 --- a/functions/pipeline/taggedimages/host.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "2.0" -} \ No newline at end of file diff --git a/functions/pipeline/taggedimages/__init__.py b/functions/pipeline/tags/__init__.py similarity index 69% rename from functions/pipeline/taggedimages/__init__.py rename to functions/pipeline/tags/__init__.py index b602345b..7d2d0ead 100644 --- a/functions/pipeline/taggedimages/__init__.py +++ b/functions/pipeline/tags/__init__.py @@ -1,62 +1,64 @@ -import logging - -import azure.functions as func -import json - -from ..shared.vott_parser import create_starting_vott_json -from ..shared.db_provider import get_postgres_provider -from ..shared.db_access import ImageTagDataAccess - - -def main(req: func.HttpRequest) -> func.HttpResponse: - logging.info('Python HTTP trigger function processed a request.') - - image_count = int(req.params.get('imageCount')) - user_name = req.params.get('userName') - - # setup response object - headers = { - "content-type": "application/json" - } - if not user_name: - return func.HttpResponse( - status_code=401, - headers=headers, - body=json.dumps({"error": "invalid userName given or omitted"}) - ) - elif not image_count: - return func.HttpResponse( - status_code=400, - headers=headers, - body=json.dumps({"error": "image count not specified"}) - ) - else: - try: - # DB configuration - data_access = ImageTagDataAccess(get_postgres_provider()) - user_id = data_access.create_user(user_name) - image_id_to_urls = data_access.get_tag_complete_images(image_count, user_id) - image_urls = list(image_id_to_urls.values()) - - image_id_to_image_tags = {} - for image_id in image_id_to_urls.keys(): - image_id_to_image_tags[image_id] = data_access.get_image_tags(image_id) - - existing_classifications_list = data_access.get_existing_classifications() - - vott_json = create_starting_vott_json(image_id_to_urls, image_id_to_image_tags, existing_classifications_list) - - return_body_json = {"imageUrls": image_urls, - "vottJson": vott_json} - - content = json.dumps(return_body_json) - return func.HttpResponse( - status_code=200, - headers=headers, - body=content - ) - except Exception as e: - return func.HttpResponse( - "exception:" + str(e), - status_code=500 - ) +import logging + +import azure.functions as func +import json + +from ..shared.vott_parser import create_starting_vott_json +from ..shared.db_provider import get_postgres_provider +from ..shared.db_access import ImageTagDataAccess, ImageTagState + + +def main(req: func.HttpRequest) -> func.HttpResponse: + logging.info('Python HTTP trigger function processed a request.') + + image_count = int(req.params.get('imageCount')) + user_name = req.params.get('userName') + tag_status = req.params.get('tagStatus') + + # setup response object + headers = { + "content-type": "application/json" + } + if not user_name: + return func.HttpResponse( + status_code=401, + headers=headers, + body=json.dumps({"error": "invalid userName given or omitted"}) + ) + elif not image_count: + return func.HttpResponse( + status_code=400, + headers=headers, + body=json.dumps({"error": "image count not specified"}) + ) + elif not tag_status: + return func.HttpResponse( + status_code=400, + headers=headers, + body=json.dumps({"error": "tag status not specified"}) + ) + else: + try: + # DB configuration + data_access = ImageTagDataAccess(get_postgres_provider()) + user_id = data_access.create_user(user_name) + + # Get tag data by status + image_id_to_urls = data_access.get_images_by_tag_status(user_id, tag_status, image_count) + image_id_to_image_tags = data_access.get_image_tags_for_image_ids(list(image_id_to_urls.keys())) + + existing_classifications_list = data_access.get_existing_classifications() + + tags_json = create_starting_vott_json(image_id_to_urls, image_id_to_image_tags, existing_classifications_list) + + content = json.dumps(tags_json) + return func.HttpResponse( + status_code=200, + headers=headers, + body=content + ) + except Exception as e: + return func.HttpResponse( + "exception:" + str(e), + status_code=500 + ) diff --git a/functions/pipeline/tags/function.json b/functions/pipeline/tags/function.json new file mode 100644 index 00000000..f6425972 --- /dev/null +++ b/functions/pipeline/tags/function.json @@ -0,0 +1,20 @@ +{ + "scriptFile": "__init__.py", + "bindings": [ + { + "authLevel": "anonymous", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "get" + ] + }, + { + "type": "http", + "direction": "out", + "name": "$return" + } + ] + } + \ No newline at end of file diff --git a/functions/pipeline/tags/host.json b/functions/pipeline/tags/host.json new file mode 100644 index 00000000..1c8bb37a --- /dev/null +++ b/functions/pipeline/tags/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" + } \ No newline at end of file diff --git a/train/__init__.py b/train/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/train/training.py b/train/training.py new file mode 100644 index 00000000..d562c3da --- /dev/null +++ b/train/training.py @@ -0,0 +1,107 @@ +import argparse +import os +import csv +import requests +from azure.storage.blob import BlockBlobService, ContentSettings +from utils.config import Config +from utils.blob_utils import BlobStorage +import urllib.request +import sys +import time + +CONFIG_PATH = os.environ.get('ALCONFIG', None) + +def train(config, num_images): + + # First, downloxad data necessary for training + training_data = download_data_for_training(config, num_images) + + # Make sure directory is clean: + file_location = Config.initialize_tagging_location(config) + + # Grab tagged and totag images from the blob storage + download_images(training_data["imageURLs"], str(file_location)) + + # create csv file from this data + convert_to_csv(training_data, str(file_location)) + + +def download_images(imageURLs, file_location): + print("Downloading images to " + file_location + ", this may take a few seconds...") + + # Download tagged images into tagged folder + if not os.path.exists(file_location + '/AllImages'): + os.makedirs(file_location + '/AllImages') + folder = file_location + '/AllImages' + for image in imageURLs: + filename = get_image_name_from_url(image) + location = image + # extension = location.split('.')[-1] + with urllib.request.urlopen(location) as response, open(folder + '/' + str(filename), 'wb') as out_file: + data = response.read() # a `bytes` object + out_file.write(data) + + print("Downloaded images into " + file_location + "/AllImages/") + + +def download_data_for_training(config, num_images): + print("Downloading data for training, this may take a few moments...") + # Download n images that are ready to tag + query = { + "userName": config.get('tagging_user'), + "imageCount": num_images, + "tagStatus": 1 + } + url = config.get('url') + '/api/images' + response = requests.get(url, params=query) + to_tag_image_info = response.json() + image_urls_to_download = [info['location'] for info in to_tag_image_info] + + # Download upto 200 images that have been tagged, for training + query['tagStatus'] = 3 + query['imageCount'] = 200 + url = config.get('url') + '/api/tags' + response = requests.get(url, params=query) + tagged_image_data = response.json() + image_urls_to_download.extend([tag[0]["location"] for tag in tagged_image_data["frames"].values()]) + return { "imageURLs": image_urls_to_download, + "toTagImageInfo": to_tag_image_info, + "taggedImageData": tagged_image_data } + + +def convert_to_csv(training_data, file_location): + # Convert tagged images into their own csv + with open(file_location + '/tagged.csv', 'w') as csvfile: + filewriter = csv.writer(csvfile, delimiter=',', + quotechar='|', quoting=csv.QUOTE_MINIMAL) + filewriter.writerow(['filename','class','xmin','xmax','ymin','ymax','height','width']) + for item in training_data["taggedImageData"]["frames"]: + for tags in training_data["taggedImageData"]["frames"][item]: + for tag in training_data["taggedImageData"]["frames"][item][0]["tags"]: + data = [item, tag, tags['x1'], tags['x2'], tags['y1'], tags['y2'], tags['height'], tags['width']] + filewriter.writerow(data) + + # Convert totag images into their own csv + with open(file_location + '/totag.csv', 'w') as csvfile: + filewriter = csv.writer(csvfile, delimiter=',', + quotechar='|', quoting=csv.QUOTE_MINIMAL) + filewriter.writerow(['filename','class','xmin','xmax','ymin','ymax','height','width','folder','box_confidence','image_confidence']) + for item in training_data["toTagImageInfo"]: + filename = get_image_name_from_url(item['location']) + data = [filename, 'NULL', 0, 0, 0, 0, item['height'], item['width'], '', 0, 0] + filewriter.writerow(data) + + print("Created csv files with metadata " + file_location + "/tagged.csv and " + file_location + "/totag.csv") + + +def get_image_name_from_url(image_url): + s = image_url.split('/') + return s[len(s)-1] + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument('-n', '--num-images', type=int) + config = Config.read_config(CONFIG_PATH) + args = parser.parse_args() + train(config, args.num_images) diff --git a/utils/config.py b/utils/config.py index b65eab26..c3a0ff8a 100644 --- a/utils/config.py +++ b/utils/config.py @@ -1,5 +1,8 @@ import configparser +import pathlib +import os +import shutil FUNCTIONS_SECTION = 'FUNCTIONS' FUNCTIONS_KEY = 'FUNCTIONS_KEY' @@ -100,5 +103,18 @@ def read_config(config_path): parser.read(config_path) return Config.read_config_with_parsed_config(parser) + @staticmethod + def initialize_tagging_location(config): + file_tree = pathlib.Path(os.path.expanduser( + config.get("tagging_location")) + ) + + if file_tree.exists(): + print("Removing existing tag data directory: " + str(file_tree)) + + shutil.rmtree(str(file_tree), ignore_errors=True) + + return pathlib.Path(file_tree) + class MissingConfigException(Exception): pass \ No newline at end of file From 066dae49ce5f4f89a1c168fb6a80686a6122b2b3 Mon Sep 17 00:00:00 2001 From: Samiya Date: Thu, 6 Dec 2018 17:55:03 -0800 Subject: [PATCH 102/145] Update params for labels and images api (#66) * Updated params for labels api * Updated params for images api --- functions/pipeline/images/__init__.py | 22 ++++++++++--------- .../pipeline/{tags => labels}/__init__.py | 16 +++++--------- .../pipeline/{tags => labels}/function.json | 0 functions/pipeline/{tags => labels}/host.json | 0 .../pipeline/shared/db_access/db_access_v2.py | 14 +++++++----- train/training.py | 16 +++++++------- utils/config.py | 10 ++++++--- 7 files changed, 42 insertions(+), 36 deletions(-) rename functions/pipeline/{tags => labels}/__init__.py (86%) rename functions/pipeline/{tags => labels}/function.json (100%) rename functions/pipeline/{tags => labels}/host.json (100%) diff --git a/functions/pipeline/images/__init__.py b/functions/pipeline/images/__init__.py index ff8f7d22..1ba1792b 100644 --- a/functions/pipeline/images/__init__.py +++ b/functions/pipeline/images/__init__.py @@ -11,9 +11,10 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') - image_count = int(req.params.get('imageCount')) + image_count = req.params.get('imageCount') user_name = req.params.get('userName') tag_status = req.params.get('tagStatus') + image_ids = req.params.get('imageId') # setup response object headers = { @@ -25,17 +26,17 @@ def main(req: func.HttpRequest) -> func.HttpResponse: headers=headers, body=json.dumps({"error": "invalid userName given or omitted"}) ) - elif not image_count: + elif not image_count and tag_status: return func.HttpResponse( status_code=400, headers=headers, - body=json.dumps({"error": "image count not specified"}) + body=json.dumps({"error": "image count needs to be specified if tag status is specified"}) ) - elif not tag_status: + elif not tag_status and not image_ids: return func.HttpResponse( status_code=400, headers=headers, - body=json.dumps({"error": "tag status not specified"}) + body=json.dumps({"error": "either of tag status or images ids needs to be specified"}) ) else: try: @@ -44,11 +45,12 @@ def main(req: func.HttpRequest) -> func.HttpResponse: user_id = data_access.create_user(user_name) # Get images info - ready_to_tag_images = data_access.get_images_by_tag_status(user_id, tag_status, image_count) - - image_infos = data_access.get_image_info_for_image_ids(list(ready_to_tag_images.keys())) - - # return_body_json = { image_infos } + if image_ids: + image_infos = data_access.get_image_info_for_image_ids(image_ids.split(',')) + elif tag_status: + image_count = int(image_count) + images_by_tag_status = data_access.get_images_by_tag_status(user_id, tag_status, image_count) + image_infos = data_access.get_image_info_for_image_ids(list(images_by_tag_status.keys())) content = json.dumps(image_infos) return func.HttpResponse( diff --git a/functions/pipeline/tags/__init__.py b/functions/pipeline/labels/__init__.py similarity index 86% rename from functions/pipeline/tags/__init__.py rename to functions/pipeline/labels/__init__.py index 7d2d0ead..2ca9f0ce 100644 --- a/functions/pipeline/tags/__init__.py +++ b/functions/pipeline/labels/__init__.py @@ -2,7 +2,6 @@ import azure.functions as func import json - from ..shared.vott_parser import create_starting_vott_json from ..shared.db_provider import get_postgres_provider from ..shared.db_access import ImageTagDataAccess, ImageTagState @@ -11,10 +10,10 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') - image_count = int(req.params.get('imageCount')) + image_count = req.params.get('imageCount') user_name = req.params.get('userName') tag_status = req.params.get('tagStatus') - + # setup response object headers = { "content-type": "application/json" @@ -25,12 +24,6 @@ def main(req: func.HttpRequest) -> func.HttpResponse: headers=headers, body=json.dumps({"error": "invalid userName given or omitted"}) ) - elif not image_count: - return func.HttpResponse( - status_code=400, - headers=headers, - body=json.dumps({"error": "image count not specified"}) - ) elif not tag_status: return func.HttpResponse( status_code=400, @@ -42,9 +35,12 @@ def main(req: func.HttpRequest) -> func.HttpResponse: # DB configuration data_access = ImageTagDataAccess(get_postgres_provider()) user_id = data_access.create_user(user_name) + # Allowing image_count to be empty + if image_count: + image_count = int(image_count) # Get tag data by status - image_id_to_urls = data_access.get_images_by_tag_status(user_id, tag_status, image_count) + image_id_to_urls = data_access.get_images_by_tag_status(user_id, tag_status.split(','), image_count) image_id_to_image_tags = data_access.get_image_tags_for_image_ids(list(image_id_to_urls.keys())) existing_classifications_list = data_access.get_existing_classifications() diff --git a/functions/pipeline/tags/function.json b/functions/pipeline/labels/function.json similarity index 100% rename from functions/pipeline/tags/function.json rename to functions/pipeline/labels/function.json diff --git a/functions/pipeline/tags/host.json b/functions/pipeline/labels/host.json similarity index 100% rename from functions/pipeline/tags/host.json rename to functions/pipeline/labels/host.json diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index 01f63591..e63d6051 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -131,17 +131,21 @@ def add_new_images(self,list_of_image_infos, user_id): return url_to_image_id_map def get_images_by_tag_status(self, user_id, tag_status, limit): - if limit <= 0: - raise ArgumentException("Parameter must be greater than zero") images_by_tag_status = {} try: conn = self._db_provider.get_connection() try: cursor = conn.cursor() + tags = '' + for id in tag_status: + tags += str(id) + ',' + tags = tags[:-1] query = ("SELECT b.ImageId, b.ImageLocation, a.TagStateId FROM Image_Tagging_State a " - "JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId = {1} order by " - "a.createddtim DESC limit {0}") - cursor.execute(query.format(limit, tag_status)) + "JOIN Image_Info b ON a.ImageId = b.ImageId WHERE a.TagStateId IN ({0}) order by " + "a.createddtim DESC") + if limit: + query += " limit {1}" + cursor.execute(query.format(tags, limit)) for row in cursor: logging.debug('Image Id: {0} \t\tImage Name: {1} \t\tTag State: {2}'.format(row[0], row[1], row[2])) images_by_tag_status[row[0]] = str(row[1]) diff --git a/train/training.py b/train/training.py index d562c3da..ceb09a67 100644 --- a/train/training.py +++ b/train/training.py @@ -20,28 +20,27 @@ def train(config, num_images): file_location = Config.initialize_tagging_location(config) # Grab tagged and totag images from the blob storage - download_images(training_data["imageURLs"], str(file_location)) + download_images(training_data["imageURLs"], config.get('tagging_image_dir')) # create csv file from this data convert_to_csv(training_data, str(file_location)) def download_images(imageURLs, file_location): + file_location = os.path.expanduser(file_location) print("Downloading images to " + file_location + ", this may take a few seconds...") - # Download tagged images into tagged folder - if not os.path.exists(file_location + '/AllImages'): - os.makedirs(file_location + '/AllImages') - folder = file_location + '/AllImages' + if not os.path.exists(file_location): + os.makedirs(file_location) for image in imageURLs: filename = get_image_name_from_url(image) location = image # extension = location.split('.')[-1] - with urllib.request.urlopen(location) as response, open(folder + '/' + str(filename), 'wb') as out_file: + with urllib.request.urlopen(location) as response, open(file_location + '/' + str(filename), 'wb') as out_file: data = response.read() # a `bytes` object out_file.write(data) - print("Downloaded images into " + file_location + "/AllImages/") + print("Downloaded images into " + file_location) def download_data_for_training(config, num_images): @@ -60,7 +59,7 @@ def download_data_for_training(config, num_images): # Download upto 200 images that have been tagged, for training query['tagStatus'] = 3 query['imageCount'] = 200 - url = config.get('url') + '/api/tags' + url = config.get('url') + '/api/labels' response = requests.get(url, params=query) tagged_image_data = response.json() image_urls_to_download.extend([tag[0]["location"] for tag in tagged_image_data["frames"].values()]) @@ -70,6 +69,7 @@ def download_data_for_training(config, num_images): def convert_to_csv(training_data, file_location): + file_location = os.path.expanduser(file_location) # Convert tagged images into their own csv with open(file_location + '/tagged.csv', 'w') as csvfile: filewriter = csv.writer(csvfile, delimiter=',', diff --git a/utils/config.py b/utils/config.py index c3a0ff8a..ba81cc0c 100644 --- a/utils/config.py +++ b/utils/config.py @@ -16,6 +16,7 @@ TAGGING_SECTION = 'TAGGING' TAGGING_LOCATION_KEY = 'TAGGING_LOCATION' TAGGING_USER_KEY = 'TAGGING_USER' +TAGGING_IMAGE_DIR_KEY='TAGGING_IMAGE_DIR' class Config(): @staticmethod @@ -45,11 +46,12 @@ def storage_config_section(storage_config_section): def tagging_config_section(tagging_config_section): tagging_location_value = tagging_config_section.get(TAGGING_LOCATION_KEY) tagging_user_value = tagging_config_section.get(TAGGING_USER_KEY) + tagging_image_dir = tagging_config_section.get(TAGGING_IMAGE_DIR_KEY) if not tagging_location_value or not tagging_user_value: raise MissingConfigException() - return tagging_location_value, tagging_user_value + return tagging_location_value, tagging_user_value, tagging_image_dir @staticmethod def functions_config_section(functions_config_section): @@ -82,7 +84,7 @@ def read_config_with_parsed_config(parser): parser[STORAGE_SECTION] ) - tagging_location, tagging_user = Config.tagging_config_section(parser[TAGGING_SECTION]) + tagging_location, tagging_user, tagging_image_dir = Config.tagging_config_section(parser[TAGGING_SECTION]) return { "key": functions_key, @@ -91,7 +93,8 @@ def read_config_with_parsed_config(parser): "storage_key": storage_key, "storage_container": storage_container, "tagging_location": tagging_location, - "tagging_user": tagging_user + "tagging_user": tagging_user, + "tagging_image_dir": tagging_image_dir } @staticmethod @@ -100,6 +103,7 @@ def read_config(config_path): raise MissingConfigException() parser = configparser.ConfigParser() + parser._interpolation = configparser.ExtendedInterpolation() parser.read(config_path) return Config.read_config_with_parsed_config(parser) From 0e354f5b9885e5d8eab139071348ce1a0c41a835 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Fri, 7 Dec 2018 14:33:58 -0800 Subject: [PATCH 103/145] Adding flag to disable SSL connections on Postgres Host (#67) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Added a flag to disable SSL on PostgreSQL host --- db/README.md | 8 +++++++- devops/deployment/Deploy-Postgres-DB.sh | 13 ++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/db/README.md b/db/README.md index 6e44fb92..c94fcf3f 100644 --- a/db/README.md +++ b/db/README.md @@ -9,7 +9,13 @@ The _Deploy-Postgres-DB_ shell script will deploy a [PostgreSQL server in Azure] Once the above is ready run the command below by replacing the 3 arguments ```sh -$ sh Deploy-Postgres-DB.sh RESOURCE_GROUP_NAME POSTGRES_SERVER_NAME POSTGRES_USER +$ sh ../devops/deployment/Deploy-Postgres-DB.sh RESOURCE_GROUP_NAME POSTGRES_SERVER_NAME POSTGRES_USER +``` + +By default PostgreSQL server on Azure will enforce SSL connections. To disable them on deployment set the following environment variable prior to deployment: + +```sh +$ export DISABLE_SSL_POSTGRES=true ``` ## Deploying a PostgreSQL database and installing resources diff --git a/devops/deployment/Deploy-Postgres-DB.sh b/devops/deployment/Deploy-Postgres-DB.sh index a53f610b..442dc959 100755 --- a/devops/deployment/Deploy-Postgres-DB.sh +++ b/devops/deployment/Deploy-Postgres-DB.sh @@ -71,4 +71,15 @@ az postgres server firewall-rule create \ --server-name $ServerName \ --name "AzureServices_$RuleDate" \ --start-ip-address "0.0.0.0" \ - --end-ip-address "0.0.0.0" \ No newline at end of file + --end-ip-address "0.0.0.0" + +SSL_POSTGRES=${DISABLE_SSL_POSTGRES:="false"} +if $SSL_POSTGRES; then + echo + echo "WARNING: Disabling SSL enforcement on Postgres host." + echo + az postgres server update \ + --resource-group $ResourceGroup \ + --server-name $ServerName \ + --ssl-enforcement Disabled +fi \ No newline at end of file From f7adfcd2214e7263721c21ab13b17750796cea01 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Fri, 7 Dec 2018 16:46:52 -0800 Subject: [PATCH 104/145] Saving directory information from images when onboarding through containers. (#69) * Adding local.settings.json for storage connection * Writing path information to queue working. Need to do processor work and clean up * Saving correct names to db in processor. Next work requires DB and code cleanup * Saving filepath, original file name and upload user to blob metadata for now, skipping db * Deployed and working * removing exception peeking method --- functions/pipeline/local.settings.json | 5 +- .../pipeline/onboardcontainer/__init__.py | 83 +++++++++++++------ .../onboardqueueproccessor/__init__.py | 29 +++++-- functions/pipeline/requirements.txt | 1 + .../pipeline/shared/constants/__init__.py | 13 +++ requirements.txt | 1 + 6 files changed, 94 insertions(+), 38 deletions(-) create mode 100644 functions/pipeline/shared/constants/__init__.py diff --git a/functions/pipeline/local.settings.json b/functions/pipeline/local.settings.json index 6c204881..9267e456 100644 --- a/functions/pipeline/local.settings.json +++ b/functions/pipeline/local.settings.json @@ -2,6 +2,7 @@ "IsEncrypted": false, "Values": { "FUNCTIONS_WORKER_RUNTIME": "python", - "AzureWebJobsStorage": "{AzureWebJobsStorage}" + "AzureWebJobsStorage": "{AzureWebJobsStorage}", + "STORAGE_CONNECTION_STRING": "replace this when running local func" } -} \ No newline at end of file +} diff --git a/functions/pipeline/onboardcontainer/__init__.py b/functions/pipeline/onboardcontainer/__init__.py index 72653c0e..498e7e2c 100644 --- a/functions/pipeline/onboardcontainer/__init__.py +++ b/functions/pipeline/onboardcontainer/__init__.py @@ -2,7 +2,9 @@ import logging import json import azure.functions as func +from urlpath import URL from datetime import datetime, timedelta +from ..shared.constants import ImageFileType from azure.storage.blob import BlockBlobService, BlobPermissions from azure.storage.queue import QueueService, QueueMessageFormat @@ -58,33 +60,43 @@ def main(req: func.HttpRequest) -> func.HttpResponse: blob_list = [] for blob_object in blob_service.list_blobs(storage_container): - logging.info("INFO: Building sas token for blob " + blob_object.name) - # create sas signature - sas_signature = blob_service.generate_blob_shared_access_signature( - storage_container, - blob_object.name, - BlobPermissions.READ, - datetime.utcnow() + timedelta(hours=1) + blob_url = URL( + blob_service.make_blob_url( + storage_container, + blob_object.name + ) ) - - blob_url = blob_service.make_blob_url( - storage_container, - blob_object.name - ) - - signed_url = blob_url + "?" + sas_signature - - blob_list.append(signed_url) - - logging.info("INFO: Built signed url " + signed_url) - - msg_body = { - "imageUrl": signed_url, - "userName": user_name - } - - body_str = json.dumps(msg_body) - queue_service.put_message("onboardqueue", body_str) + # Check for supported image types here. + if ImageFileType.is_supported_filetype(blob_url.suffix): + logging.debug("INFO: Building sas token for blob " + blob_object.name) + # create sas signature + sas_signature = blob_service.generate_blob_shared_access_signature( + storage_container, + blob_object.name, + BlobPermissions.READ, + datetime.utcnow() + timedelta(hours=1) + ) + + logging.debug("INFO: have sas signature {}".format(sas_signature)) + + signed_url = blob_url.with_query(sas_signature) + + blob_list.append(signed_url.as_uri()) + + logging.debug("INFO: Built signed url: {}".format(signed_url)) + + msg_body = { + "imageUrl": signed_url.as_uri(), + "fileName": str(blob_url.name), + "fileExtension": str(blob_url.suffix), + "directoryComponents": __get_filepath_from_url(blob_url, storage_container), + "userName": user_name + } + + body_str = json.dumps(msg_body) + queue_service.put_message("onboardqueue", body_str) + else: + logging.info("Blob object not supported. Object URL={}".format(blob_url.as_uri)) return func.HttpResponse( status_code=200, @@ -94,4 +106,21 @@ def main(req: func.HttpRequest) -> func.HttpResponse: except Exception as e: logging.error("ERROR: Could not build blob object list. Exception: " + str(e)) return func.HttpResponse("ERROR: Could not get list of blobs in storage_container={0}. Exception={1}".format( - storage_container, e), status_code=500) \ No newline at end of file + storage_container, e), status_code=500) + + +def __get_filepath_from_url(blob_url: URL, storage_container): + blob_uri = blob_url.path + return __remove_postfix(__remove_prefix(blob_uri, '/' + storage_container), '/' + blob_url.name) + + +def __remove_prefix(text, prefix): + if text.startswith(prefix): + return text[len(prefix):] + return text + + +def __remove_postfix(text, postfix): + if not text.endswith(postfix): + return text + return text[:len(text)-len(postfix)] diff --git a/functions/pipeline/onboardqueueproccessor/__init__.py b/functions/pipeline/onboardqueueproccessor/__init__.py index 3eeb085a..4e3d6c22 100644 --- a/functions/pipeline/onboardqueueproccessor/__init__.py +++ b/functions/pipeline/onboardqueueproccessor/__init__.py @@ -2,7 +2,6 @@ import json import logging import azure.functions as func -import urllib.parse from urllib.request import urlopen @@ -33,14 +32,15 @@ def main(msg: func.QueueMessage) -> None: try: msg_json = json.loads(msg.get_body().decode('utf-8')) - img_url = urllib.parse.quote(msg_json["imageUrl"], safe=':/') + + img_url = msg_json['imageUrl'] user_name = msg_json["userName"] + original_filename = msg_json['fileName'] + filetype = msg_json['fileExtension'] + original_file_directory = msg_json['directoryComponents'] - # TODO: move into function method and support list of urls for batch processing. + # Only 1 object in this list for now due to single message processing. image_object_list = [] - # Split original image name from URL - original_filename = img_url.split("/")[-1] - # Create ImageInfo object (def in db_access.py) with Image.open(urlopen(img_url)) as img: width, height = img.size @@ -64,9 +64,8 @@ def main(msg: func.QueueMessage) -> None: # Copy images to permanent storage and get a dictionary of images for which to update URLs in DB. # and a list of failures. If the list of failures contains any items, return a status code other than 200. - file_extension = os.path.splitext(img_url)[1] - image_id = list(image_id_url_map.values())[0] # TODO: Fix once we have a list of urls. - new_blob_name = (str(image_id) + file_extension) + image_id = list(image_id_url_map.values())[0] + new_blob_name = (str(image_id) + filetype) response = urlopen(img_url) @@ -79,6 +78,17 @@ def main(msg: func.QueueMessage) -> None: if not blob_create_response: logging.error("ERROR: Image copy/delete operation failed. Check state of images in storage.") else: + # Per Azure notes https://docs.microsoft.com/en-us/azure/storage/blobs/storage-properties-metadata: + # The name of your metadata must conform to the naming conventions for C# identifiers. Dashes do not work. + # Azure blob is also setting the keys to full lowercase. + blob_service.set_blob_metadata(container_name=copy_destination, + blob_name=new_blob_name, + metadata={ + "userFilePath": original_file_directory, + "originalFilename": original_filename, + "uploadUser": user_name + }) + logging.debug("Now updating permanent URLs in the DB...") data_access.update_image_urls(update_urls_dictionary, user_id) @@ -86,3 +96,4 @@ def main(msg: func.QueueMessage) -> None: logging.debug("success onboarding.") except Exception as e: logging.error("Exception: " + str(e)) + raise e # TODO: Handle errors and exceptions on the poison queue diff --git a/functions/pipeline/requirements.txt b/functions/pipeline/requirements.txt index 8485bc6a..d3a76121 100644 --- a/functions/pipeline/requirements.txt +++ b/functions/pipeline/requirements.txt @@ -9,3 +9,4 @@ protobuf==3.6.1 six==1.11.0 pg8000==1.12.3 Pillow==5.3.0 +urlpath==1.1.4 diff --git a/functions/pipeline/shared/constants/__init__.py b/functions/pipeline/shared/constants/__init__.py new file mode 100644 index 00000000..8d52ee33 --- /dev/null +++ b/functions/pipeline/shared/constants/__init__.py @@ -0,0 +1,13 @@ +from enum import Enum, unique + + +@unique +class ImageFileType(Enum): + GIF = ".gif" + PNG = ".png" + JPG = ".jpg" + JPEG = ".jpeg" + + @classmethod + def is_supported_filetype(cls, value): + return any(value.lower() == item.value.lower() for item in cls) diff --git a/requirements.txt b/requirements.txt index c37abc55..f484bf48 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,3 +11,4 @@ six==1.11.0 pg8000==1.12.3 Pillow==5.3.0 opencv_python +urlpath==1.1.4 From 68de15b2df964ea765a1ccc0189598edb8243634 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Fri, 7 Dec 2018 16:47:58 -0800 Subject: [PATCH 105/145] Changes to support human and predicted labels in db (#68) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Changes to support training focused db structure * Removed constants --- db/tables/100_annotated_labels.sql | 14 ++ db/tables/100_image_tags.sql | 2 +- db/tables/100_tags_classification.sql | 2 +- db/tables/110_prediction_info.sql | 8 - db/tables/110_prediction_labels.sql | 12 ++ .../pipeline/shared/db_access/db_access_v2.py | 172 +++++++++++++++++- 6 files changed, 193 insertions(+), 17 deletions(-) create mode 100644 db/tables/100_annotated_labels.sql delete mode 100644 db/tables/110_prediction_info.sql create mode 100644 db/tables/110_prediction_labels.sql diff --git a/db/tables/100_annotated_labels.sql b/db/tables/100_annotated_labels.sql new file mode 100644 index 00000000..405da5dc --- /dev/null +++ b/db/tables/100_annotated_labels.sql @@ -0,0 +1,14 @@ +-- Set up table +CREATE TABLE Annotated_Labels ( + ImageTagId SERIAL UNIQUE, + ImageId integer REFERENCES Image_Info(ImageId) ON DELETE RESTRICT, + ClassificationId integer REFERENCES Classification_Info(ClassificationId), + X_Min decimal(6,2) NOT NULL, + X_Max decimal(6,2) NOT NULL, + Y_Min decimal(6,2) NOT NULL, + Y_Max decimal(6,2) NOT NULL, + CreatedByUser integer REFERENCES User_Info(UserId), + CreatedDtim timestamp NOT NULL default current_timestamp, + --VOTT_Data json NOT NULL + PRIMARY KEY (ImageId,ClassificationId,X_Min,X_Max,Y_Min,Y_Max) --Should we include the bounded box as well? +); \ No newline at end of file diff --git a/db/tables/100_image_tags.sql b/db/tables/100_image_tags.sql index 421cdb13..b5bf4584 100644 --- a/db/tables/100_image_tags.sql +++ b/db/tables/100_image_tags.sql @@ -1,4 +1,4 @@ --- Set up table +-- TO DELETE CREATE TABLE Image_Tags ( ImageTagId SERIAL UNIQUE, ImageId integer REFERENCES Image_Info(ImageId) ON DELETE RESTRICT, diff --git a/db/tables/100_tags_classification.sql b/db/tables/100_tags_classification.sql index a285ee2d..9894f5b0 100644 --- a/db/tables/100_tags_classification.sql +++ b/db/tables/100_tags_classification.sql @@ -1,4 +1,4 @@ --- Set up table +--TO DELETE CREATE TABLE Tags_Classification ( ImageTagId integer REFERENCES Image_Tags(ImageTagId), ClassificationId integer REFERENCES Classification_Info(ClassificationId), diff --git a/db/tables/110_prediction_info.sql b/db/tables/110_prediction_info.sql deleted file mode 100644 index 1dfef37e..00000000 --- a/db/tables/110_prediction_info.sql +++ /dev/null @@ -1,8 +0,0 @@ -CREATE TABLE Prediction_Info ( - ImageTagId integer REFERENCES Image_Tags(ImageTagId), - ClassificationId integer REFERENCES Classification_Info(ClassificationId), - TrainingId integer REFERENCES Training_Info(TrainingId), - BoxConfidence decimal(5,4) NOT NULL, - ImageConfidence decimal(5,4) NOT NULL, - PRIMARY KEY (ImageTagId,ClassificationId,TrainingId) -); \ No newline at end of file diff --git a/db/tables/110_prediction_labels.sql b/db/tables/110_prediction_labels.sql new file mode 100644 index 00000000..04af9076 --- /dev/null +++ b/db/tables/110_prediction_labels.sql @@ -0,0 +1,12 @@ +CREATE TABLE Prediction_Labels ( + TrainingId integer REFERENCES Training_Info(TrainingId), + ImageId integer REFERENCES Image_Info(ImageId), + ClassificationId integer REFERENCES Classification_Info(ClassificationId), + X_Min decimal(6,2) NOT NULL, + X_Max decimal(6,2) NOT NULL, + Y_Min decimal(6,2) NOT NULL, + Y_Max decimal(6,2) NOT NULL, + BoxConfidence decimal(5,4) NOT NULL, + ImageConfidence decimal(5,4) NOT NULL, + PRIMARY KEY (TrainingId,ImageId,ClassificationId,X_Min,X_Max,Y_Min,Y_Max) +); diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index e63d6051..9e71ec52 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -35,6 +35,27 @@ def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names): self.y_max = y_max self.classification_names = classification_names +#This class doesn't have box and image confidence because they are human curated labels +class AnnotatedLabel(object): + def __init__(self, image_id, classification_id, x_min, x_max, y_min, y_max): + self.image_id = image_id + self.x_min = x_min + self.x_max = x_max + self.y_min = y_min + self.y_max = y_max + self.classification_id = classification_id + + +class PredictionLabel(AnnotatedLabel): + def __init__(self, training_id, image_id, classification_id, x_min, x_max, y_min, y_max, + image_height, image_width, box_confidence=0, image_confidence= 0): + super().__init__(image_id, classification_id, x_min, x_max, y_min, y_max) + self.training_id = training_id + self.image_height = image_height + self.image_width = image_width + self.box_confidence = box_confidence + self.image_confidence = image_confidence + # Vott tags have image height & width data as well. class VottImageTag(ImageTag): @@ -130,7 +151,7 @@ def add_new_images(self,list_of_image_infos, user_id): finally: conn.close() return url_to_image_id_map - def get_images_by_tag_status(self, user_id, tag_status, limit): + def get_images_by_tag_status(self, tag_status, limit=None): images_by_tag_status = {} try: conn = self._db_provider.get_connection() @@ -226,7 +247,7 @@ def get_image_tags_for_image_ids(self, image_ids): return image_id_to_vott_tags - def get_image_tags(self, image_id): + def get_image_tags(self, image_id: int): if type(image_id) is not int: raise TypeError('image_id must be an integer') @@ -262,7 +283,7 @@ def __build_id_to_VottImageTag(self, tag_db_cursor): logging.debug(row) tag_id = row[0] if tag_id in tag_id_to_VottImageTag: - logging.debug("Existing ImageTag found, appending classification {}", row[6]) + logging.debug("Existing ImageTag found, appending classification {0}".format(row[6])) tag_id_to_VottImageTag[tag_id].classification_names.append(row[6].strip()) else: logging.debug("No existing ImageTag found, creating new ImageTag: " @@ -378,7 +399,7 @@ def update_tagged_images(self,list_of_image_tags, user_id): for img_tag in list(list_of_tags): query = ("with iti AS ( " "INSERT INTO image_tags (ImageId, X_Min,X_Max,Y_Min,Y_Max,CreatedByUser) " - "VALUES ({0}, {1},{2},{3},{4},{5}) " + "VALUES ({0},{1},{2},{3},{4},{5}) " "RETURNING ImageTagId), " "ci AS ( " "INSERT INTO classification_info (ClassificationName) " @@ -398,6 +419,109 @@ def update_tagged_images(self,list_of_image_tags, user_id): raise finally: conn.close() + def get_classification_map(self, class_names: set, user_id: int) -> dict: + class_to_id = {} + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + query = ("WITH sc AS ( " + "SELECT classificationid, classificationname FROM classification_info " + "WHERE classificationname in ({0})), " + "data(class_name) AS (values {1}), " + "ci AS ( " + "INSERT INTO classification_info (ClassificationName) " + "SELECT d.class_name FROM data d " + "WHERE NOT EXISTS (select 1 FROM classification_info c WHERE c.classificationname = d.class_name) " + "RETURNING classificationid,classificationname) " + "SELECT classificationid,classificationname FROM ci " + "UNION ALL " + "SELECT classificationid,classificationname FROM sc") + class_names_where = "'{0}'".format("', '".join(class_names)) + class_names_value = ", ".join("('{0}')".format(class_name) for class_name in class_names) + query = query.format(class_names_where,class_names_value) + cursor.execute(query) + for row in cursor: + logging.debug(row) + class_to_id[row[1]] = int(row[0]) + finally: cursor.close() + except Exception as e: + logging.error("An errors occured upserting classification names: {0}".format(e)) + raise + finally: conn.close() + return class_to_id + + def update_tagged_images_v2(self, annotated_labels: list, user_id: int): + if(not annotated_labels): + return + + if type(user_id) is not int: + raise TypeError('user id must be an integer') + + labels_length = len(annotated_labels) + all_image_ids = list(l.image_id for l in annotated_labels) + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + query = "INSERT INTO Annotated_Labels(ImageId,ClassificationId,X_Min,X_Max,Y_Min,Y_Max,CreatedByUser) VALUES " + #Build query so we can insert all rows at once + for i in range(labels_length): + label = annotated_labels[i] + query+="({0},{1},{2},{3},{4},{5},{6}) ".format(label.image_id,label.classification_id, + label.x_min,label.x_max,label.y_min,label.y_max,user_id) + if i != labels_length-1: query+="," + cursor.execute(query) + self._update_images(all_image_ids,ImageTagState.COMPLETED_TAG,user_id,conn) + conn.commit() + #logging.debug("Updated status for {0} images".format(len(all_image_ids))) + finally: cursor.close() + except Exception as e: + logging.error("An errors occured updating tagged image: {0}".format(e)) + raise + finally: conn.close() + + def convert_to_annotated_label(self, image_tags: list, class_map: dict): + annotated_labels = [] + for img_tag in image_tags: + for class_name in img_tag.classification_names: + annotated_labels.append(AnnotatedLabel(img_tag.image_id,class_map[class_name], + img_tag.x_min,img_tag.x_max,img_tag.y_min,img_tag.y_max)) + return annotated_labels + + def add_prediction_labels(self, prediction_labels: list, training_id: int): + if(not prediction_labels): + return + + if type(training_id) is not int: + raise TypeError('training id must be an integer') + + labels_length = len(prediction_labels) + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + query = "INSERT INTO Prediction_Labels(TrainingId,ImageId,ClassificationId,X_Min,X_Max,Y_Min,Y_Max,BoxConfidence,ImageConfidence) VALUES " + #Build query so we can insert all rows at once + for i in range(labels_length): + label = prediction_labels[i] + query+="({0},{1},{2},{3},{4},{5},{6},{7},{8}) ".format(training_id,label.image_id,label.classification_id, + label.x_min,label.x_max,label.y_min,label.y_max, + label.box_confidence,label.image_confidence) + if i != labels_length-1: query+="," + cursor.execute(query) + #TODO: Update some sort of training status table? + #self._update_training_status(training_id,conn) + conn.commit() + # logging.debug('Inserted {0} predictions for training session {1}'.format(labels_length, training_id)) + finally: cursor.close() + except Exception as e: + logging.error("An errors occured updating tagged image: {0}".format(e)) + raise + finally: conn.close() + + + class ArgumentException(Exception): pass @@ -426,13 +550,28 @@ def main(): list_of_image_infos = generate_test_image_infos(5) url_to_image_id_map = data_access.add_new_images(list_of_image_infos,user_id) - image_tags = generate_test_image_tags(list(url_to_image_id_map.values()),4,4) - data_access.update_tagged_images(image_tags,user_id) + image_ids = list(url_to_image_id_map.values()) + image_tags = generate_test_image_tags(image_ids,4,4) -TestClassifications = ("maine coon","german shephard","goldfinch","mackerel","african elephant","rattlesnake") + all_class_name_lists = (list(it.classification_names for it in image_tags)) + unique_class_names = set(x for l in all_class_name_lists for x in l) + print(len(unique_class_names)) + + class_map = data_access.get_classification_map(unique_class_names,user_id) + + annotated_labels = data_access.convert_to_annotated_label(image_tags,class_map) + data_access.update_tagged_images_v2(annotated_labels,user_id) + + training_id = 1 + prediction_labels = generate_test_prediction_labels(training_id,image_ids, class_map) + + data_access.add_prediction_labels(prediction_labels,training_id) + #data_access.update_tagged_images(image_tags,user_id) +TestClassifications = ("maine coon","german shephard","goldfinch","mackerel","african elephant","rattlesnake") + def generate_test_image_infos(count): list_of_image_infos = [] for i in range(count): @@ -456,6 +595,25 @@ def generate_test_image_tags(list_of_image_ids,max_tags_per_image,max_classifica list_of_image_tags.append(image_tag) return list_of_image_tags +def generate_test_prediction_labels(training_id, list_of_image_ids,class_map: dict): + list_of_prediction_labels = [] + for image_id in list(list_of_image_ids): + tags_per_image = random.randint(1,3) + for i in range(tags_per_image): + x_min = random.uniform(50,300) + x_max = random.uniform(x_min,300) + y_min = random.uniform(50,300) + y_max = random.uniform(y_min,300) + image_conf = random.uniform(.5,1) + box_conf = random.uniform(image_conf,1) + class_name = random.choice(TestClassifications) + class_id = class_map[class_name] + prediction_label = PredictionLabel(training_id,image_id,class_id, + x_min,x_max,y_min,y_max,random.randint(100,600), + random.randint(100,600), box_conf,image_conf) + list_of_prediction_labels.append(prediction_label) + return list_of_prediction_labels + def id_generator(size=6, chars=string.ascii_uppercase + string.digits): return ''.join(random.choice(chars) for _ in range(size)) From fba5bc1d9061609946229778d651581b8fe86166 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Mon, 10 Dec 2018 09:43:40 -0800 Subject: [PATCH 106/145] Updated Image and Label APIs (#70) Updated Image and Label APIs Added new get labels method in data access Fixed VOTT json gen issue Added method to parse updated Labels API JSON and write CSV --- functions/pipeline/images/__init__.py | 10 +- functions/pipeline/labels/__init__.py | 31 ++---- functions/pipeline/requirements.txt | 1 + .../pipeline/shared/db_access/db_access_v2.py | 104 ++++++++++++++---- .../shared/vott_parser/vott_parser.py | 6 +- requirements.txt | 1 + train/training.py | 15 ++- 7 files changed, 121 insertions(+), 47 deletions(-) diff --git a/functions/pipeline/images/__init__.py b/functions/pipeline/images/__init__.py index 1ba1792b..cd5d6cc3 100644 --- a/functions/pipeline/images/__init__.py +++ b/functions/pipeline/images/__init__.py @@ -44,12 +44,20 @@ def main(req: func.HttpRequest) -> func.HttpResponse: data_access = ImageTagDataAccess(get_postgres_provider()) user_id = data_access.create_user(user_name) + #TODO: Merge with the existing "Download" API + # If client adds the querystring param api/images&vott=true + # Then we should do "check out" behavior and return a VOTT json in the + # return payload. This is already implemented in the "Download" API + # Consequently this "Images" API is all about images and optionally + # "check out" behavior. This supports both tagging and training needs + # Get images info if image_ids: image_infos = data_access.get_image_info_for_image_ids(image_ids.split(',')) elif tag_status: image_count = int(image_count) - images_by_tag_status = data_access.get_images_by_tag_status(user_id, tag_status, image_count) + images_by_tag_status = data_access.get_images_by_tag_status(tag_status, image_count) + logging.debug("Received {0} images in tag status {1}".format(len(images_by_tag_status),tag_status)) image_infos = data_access.get_image_info_for_image_ids(list(images_by_tag_status.keys())) content = json.dumps(image_infos) diff --git a/functions/pipeline/labels/__init__.py b/functions/pipeline/labels/__init__.py index 2ca9f0ce..2f502201 100644 --- a/functions/pipeline/labels/__init__.py +++ b/functions/pipeline/labels/__init__.py @@ -1,5 +1,5 @@ import logging - +import jsonpickle import azure.functions as func import json from ..shared.vott_parser import create_starting_vott_json @@ -10,9 +10,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') - image_count = req.params.get('imageCount') user_name = req.params.get('userName') - tag_status = req.params.get('tagStatus') # setup response object headers = { @@ -24,30 +22,23 @@ def main(req: func.HttpRequest) -> func.HttpResponse: headers=headers, body=json.dumps({"error": "invalid userName given or omitted"}) ) - elif not tag_status: - return func.HttpResponse( - status_code=400, - headers=headers, - body=json.dumps({"error": "tag status not specified"}) - ) else: try: # DB configuration data_access = ImageTagDataAccess(get_postgres_provider()) user_id = data_access.create_user(user_name) - # Allowing image_count to be empty - if image_count: - image_count = int(image_count) - - # Get tag data by status - image_id_to_urls = data_access.get_images_by_tag_status(user_id, tag_status.split(','), image_count) - image_id_to_image_tags = data_access.get_image_tags_for_image_ids(list(image_id_to_urls.keys())) - existing_classifications_list = data_access.get_existing_classifications() + # TODO: Support POST http calls by merging with the existing "Upload" API. + # Ideally GET http calls rerurn all human annotated labels. + # POST calls save all human annotated labels + logging.debug("User '{0}' requested labels".format(user_name)) - tags_json = create_starting_vott_json(image_id_to_urls, image_id_to_image_tags, existing_classifications_list) + # Note: Currently we return all human annotated labels since TAGGING.CSV requires all rows + # No use case to return predicted labels at the moment. + labels = data_access.get_labels() - content = json.dumps(tags_json) + #Encode the complex object nesting + content = jsonpickle.encode(labels,unpicklable=False) return func.HttpResponse( status_code=200, headers=headers, @@ -57,4 +48,4 @@ def main(req: func.HttpRequest) -> func.HttpResponse: return func.HttpResponse( "exception:" + str(e), status_code=500 - ) + ) \ No newline at end of file diff --git a/functions/pipeline/requirements.txt b/functions/pipeline/requirements.txt index d3a76121..d521c99a 100644 --- a/functions/pipeline/requirements.txt +++ b/functions/pipeline/requirements.txt @@ -10,3 +10,4 @@ six==1.11.0 pg8000==1.12.3 Pillow==5.3.0 urlpath==1.1.4 +jsonpickle diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index 9e71ec52..8c2e519b 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -44,7 +44,24 @@ def __init__(self, image_id, classification_id, x_min, x_max, y_min, y_max): self.y_min = y_min self.y_max = y_max self.classification_id = classification_id - + +# TODO: Think about moving all this schemas to a separate file +class ImageLabel(object): + def __init__(self,image_id, imagelocation,image_height: int, image_width: int, labels: list, user_folder=None): + self.image_id = image_id + self.imagelocation = imagelocation + self.image_height = image_height + self.image_width = image_width + self.user_folder = user_folder + self.labels = labels + +class Tag(object): + def __init__(self,classificationname, x_min: float, x_max: float, y_min: float, y_max: float): + self.x_min = x_min + self.x_max = x_max + self.y_min = y_min + self.y_max = y_min + self.classificationname = classificationname class PredictionLabel(AnnotatedLabel): def __init__(self, training_id, image_id, classification_id, x_min, x_max, y_min, y_max, @@ -178,9 +195,11 @@ def get_images_by_tag_status(self, tag_status, limit=None): finally: conn.close() return images_by_tag_status - - + def get_image_info_for_image_ids(self, image_ids): + if not image_ids: + return list() + try: conn = self._db_provider.get_connection() try: @@ -210,9 +229,11 @@ def get_image_info_for_image_ids(self, image_ids): finally: conn.close() return list(images_info) - - + def get_image_tags_for_image_ids(self, image_ids): + if not image_ids: + return dict() + image_id_to_vott_tags = {} try: conn = self._db_provider.get_connection() @@ -246,7 +267,6 @@ def get_image_tags_for_image_ids(self, image_ids): conn.close() return image_id_to_vott_tags - def get_image_tags(self, image_id: int): if type(image_id) is not int: raise TypeError('image_id must be an integer') @@ -520,7 +540,39 @@ def add_prediction_labels(self, prediction_labels: list, training_id: int): raise finally: conn.close() - + # In practice we won't be getting multiple class names per bounding box however + # VOTT supports this. If multple class names per boounding box is common we can get more + # efficient with the nesting to avoid dupe bounding boxes per image + def get_labels(self): + id_to_imagelabels = {} + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + query = ("SELECT d.imageid, d.imagelocation, d.height, d.width, " + "c.classificationname, x_min, x_max, y_min, y_max " + "FROM Annotated_Labels a " + "inner join classification_info c on a.classificationid = c.classificationid " + "inner join image_info d on d.imageid = a.imageid ") + cursor.execute(query) + for row in cursor: + image_id = row[0] + tag = Tag(row[4],float(row[5]),float(row[6]),float(row[7]),float(row[8])) + if image_id in id_to_imagelabels: + id_to_imagelabels[image_id].labels.append(tag) + else: + img_label = ImageLabel(image_id,row[1],row[2],row[3],[tag]) + id_to_imagelabels[image_id] = img_label + + logging.debug("Found labels for {0} images".format(len(id_to_imagelabels))) + finally: + cursor.close() + except Exception as e: + logging.error("An error occurred getting labels: {0}".format(e)) + raise + finally: + conn.close() + return list(id_to_imagelabels.values()) class ArgumentException(Exception): pass @@ -547,27 +599,35 @@ def main(): user_id = data_access.create_user(getpass.getuser()) logging.info("The user id for '{0}' is {1}".format(getpass.getuser(),user_id)) - list_of_image_infos = generate_test_image_infos(5) - url_to_image_id_map = data_access.add_new_images(list_of_image_infos,user_id) - - image_ids = list(url_to_image_id_map.values()) + #img_labels = data_access.get_labels() - image_tags = generate_test_image_tags(image_ids,4,4) + simulate_onboarding = True + if simulate_onboarding: + list_of_image_infos = generate_test_image_infos(5) + url_to_image_id_map = data_access.add_new_images(list_of_image_infos,user_id) - all_class_name_lists = (list(it.classification_names for it in image_tags)) - unique_class_names = set(x for l in all_class_name_lists for x in l) - print(len(unique_class_names)) + image_ids = list(url_to_image_id_map.values()) + #Skip extra stuff and just put the images to expected state for testing + data_access._update_images(image_ids,ImageTagState.READY_TO_TAG, user_id,None) - class_map = data_access.get_classification_map(unique_class_names,user_id) + simulate_tagging = False + if simulate_tagging: + image_tags = generate_test_image_tags(image_ids,4,4) - annotated_labels = data_access.convert_to_annotated_label(image_tags,class_map) - data_access.update_tagged_images_v2(annotated_labels,user_id) + all_class_name_lists = (list(it.classification_names for it in image_tags)) + unique_class_names = set(x for l in all_class_name_lists for x in l) + print(len(unique_class_names)) - training_id = 1 - prediction_labels = generate_test_prediction_labels(training_id,image_ids, class_map) + #What the Labels API will do when POST http action occurs + class_map = data_access.get_classification_map(unique_class_names,user_id) + annotated_labels = data_access.convert_to_annotated_label(image_tags,class_map) + data_access.update_tagged_images_v2(annotated_labels,user_id) - data_access.add_prediction_labels(prediction_labels,training_id) - #data_access.update_tagged_images(image_tags,user_id) + simulate_post_training = False + if simulate_post_training and simulate_tagging: + training_id = 1 + prediction_labels = generate_test_prediction_labels(training_id,image_ids, class_map) + data_access.add_prediction_labels(prediction_labels,training_id) TestClassifications = ("maine coon","german shephard","goldfinch","mackerel","african elephant","rattlesnake") diff --git a/functions/pipeline/shared/vott_parser/vott_parser.py b/functions/pipeline/shared/vott_parser/vott_parser.py index 051d66b7..a2318e76 100644 --- a/functions/pipeline/shared/vott_parser/vott_parser.py +++ b/functions/pipeline/shared/vott_parser/vott_parser.py @@ -36,9 +36,11 @@ def create_starting_vott_json(image_id_to_urls, image_id_to_image_tags, existing frame_to_tag_list_map = __build_frames_data(image_id_to_urls, image_id_to_image_tags) # "inputTags" + class_length = len(existing_classifications_list) classification_str = "" - for classification in existing_classifications_list: - classification_str += classification + "," + for i in range(class_length): + classification_str += existing_classifications_list[i] + if i != class_length-1: classification_str+="," return { "frames": frame_to_tag_list_map, diff --git a/requirements.txt b/requirements.txt index f484bf48..f977df3b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,3 +12,4 @@ pg8000==1.12.3 Pillow==5.3.0 opencv_python urlpath==1.1.4 +jsonpickle diff --git a/train/training.py b/train/training.py index ceb09a67..7af4c696 100644 --- a/train/training.py +++ b/train/training.py @@ -93,10 +93,21 @@ def convert_to_csv(training_data, file_location): print("Created csv files with metadata " + file_location + "/tagged.csv and " + file_location + "/totag.csv") +def convert_labels_to_csv(data, tagging_output_location): + with open(tagging_output_location, 'w') as csvfile: + filewriter = csv.writer(csvfile, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL) + filewriter.writerow(['filename','class','xmin','xmax','ymin','ymax','height','width']) + for img in data: + imagelocation = get_image_name_from_url(img["imagelocation"]) + image_height = img["image_height"] + image_width = img["image_width"] + for label in img["labels"]: + data = [imagelocation, label["classificationname"], label['x_min'], label['x_max'], label['y_min'], label['y_max'], image_height, image_width] + filewriter.writerow(data) def get_image_name_from_url(image_url): - s = image_url.split('/') - return s[len(s)-1] + start_idx = image_url.rfind('/')+1 + return image_url[start_idx:] if __name__ == "__main__": From 6172d220253c9dfe7f6bdf31defb0ad293547cee Mon Sep 17 00:00:00 2001 From: Samiya Date: Mon, 10 Dec 2018 10:56:04 -0800 Subject: [PATCH 107/145] Updating readme for new config setting (#71) --- cli/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cli/README.md b/cli/README.md index e8afd37c..eb615786 100644 --- a/cli/README.md +++ b/cli/README.md @@ -25,6 +25,7 @@ STORAGE_CONTAINER=vott [TAGGING] TAGGING_LOCATION=~/taggingdata TAGGING_USER="bhargav" +TAGGING_IMAGE_DIR=${TAGGING:TAGGING_LOCATION}/AllImages ``` `FUNCTIONS_KEY` is the Azure Functions Key that allows your CLI to authenticate with the management function @@ -36,6 +37,7 @@ TAGGING_USER="bhargav" `TAGGING_LOCATION` is the location on the user's machine where media will be downloaded `TAGGING_USER` is your username. +`TAGGING_IMAGE_DIR` is the location where images will be downloaded, usually /AllImages folder inside tagging_location. ### Commands From f8db4c7c0f7c335420ec3146fd7f15db03749267 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Mon, 10 Dec 2018 12:14:28 -0800 Subject: [PATCH 108/145] Updates to CLI and API (#72) * Updating training.py * Fix * Fixed dupe * Removed unused method --- cli/README.md | 4 ++ functions/pipeline/images/__init__.py | 2 +- train/training.py | 96 ++++++++++++--------------- utils/config.py | 9 ++- 4 files changed, 52 insertions(+), 59 deletions(-) diff --git a/cli/README.md b/cli/README.md index eb615786..d6e3e735 100644 --- a/cli/README.md +++ b/cli/README.md @@ -26,6 +26,7 @@ STORAGE_CONTAINER=vott TAGGING_LOCATION=~/taggingdata TAGGING_USER="bhargav" TAGGING_IMAGE_DIR=${TAGGING:TAGGING_LOCATION}/AllImages +TAGGED_OUTPUT=${TAGGING:TAGGING_LOCATION}/tagged.csv ``` `FUNCTIONS_KEY` is the Azure Functions Key that allows your CLI to authenticate with the management function @@ -39,6 +40,9 @@ TAGGING_IMAGE_DIR=${TAGGING:TAGGING_LOCATION}/AllImages `TAGGING_USER` is your username. `TAGGING_IMAGE_DIR` is the location where images will be downloaded, usually /AllImages folder inside tagging_location. +`TAGGING_IMAGE_DIR` is the location where all images will be downloaded to for training +`TAGGED_OUTPUT` is the location of the CSV file that will have human labelled data + ### Commands #### Initialize a dataset/Onboard an existing dataset. diff --git a/functions/pipeline/images/__init__.py b/functions/pipeline/images/__init__.py index cd5d6cc3..12121280 100644 --- a/functions/pipeline/images/__init__.py +++ b/functions/pipeline/images/__init__.py @@ -56,7 +56,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: image_infos = data_access.get_image_info_for_image_ids(image_ids.split(',')) elif tag_status: image_count = int(image_count) - images_by_tag_status = data_access.get_images_by_tag_status(tag_status, image_count) + images_by_tag_status = data_access.get_images_by_tag_status(tag_status.split(','), image_count) logging.debug("Received {0} images in tag status {1}".format(len(images_by_tag_status),tag_status)) image_infos = data_access.get_image_info_for_image_ids(list(images_by_tag_status.keys())) diff --git a/train/training.py b/train/training.py index 7af4c696..0a2ad725 100644 --- a/train/training.py +++ b/train/training.py @@ -8,6 +8,7 @@ import urllib.request import sys import time +from functions.pipeline.shared.db_access import ImageTagState CONFIG_PATH = os.environ.get('ALCONFIG', None) @@ -23,23 +24,26 @@ def train(config, num_images): download_images(training_data["imageURLs"], config.get('tagging_image_dir')) # create csv file from this data - convert_to_csv(training_data, str(file_location)) + convert_labels_to_csv(training_data["taggedLabelData"],config.get('tagged_output')) -def download_images(imageURLs, file_location): +def download_images(imageURLs, file_location): file_location = os.path.expanduser(file_location) print("Downloading images to " + file_location + ", this may take a few seconds...") # Download tagged images into tagged folder if not os.path.exists(file_location): os.makedirs(file_location) - for image in imageURLs: - filename = get_image_name_from_url(image) - location = image - # extension = location.split('.')[-1] - with urllib.request.urlopen(location) as response, open(file_location + '/' + str(filename), 'wb') as out_file: - data = response.read() # a `bytes` object - out_file.write(data) - + try: + for image in imageURLs: + filename = get_image_name_from_url(image) + location = image + # extension = location.split('.')[-1] + with urllib.request.urlopen(location) as response, open(file_location + '/' + str(filename), 'wb') as out_file: + data = response.read() # a `bytes` object + out_file.write(data) + except Exception as e: + print("An error occurred attempting to download image at {0}:\n\n{1}".format(image,e)) + raise print("Downloaded images into " + file_location) @@ -49,61 +53,43 @@ def download_data_for_training(config, num_images): query = { "userName": config.get('tagging_user'), "imageCount": num_images, - "tagStatus": 1 + "tagStatus": [ int(ImageTagState.READY_TO_TAG), + int(ImageTagState.TAG_IN_PROGRESS), + int(ImageTagState.COMPLETED_TAG), + int(ImageTagState.INCOMPLETE_TAG)] } url = config.get('url') + '/api/images' response = requests.get(url, params=query) - to_tag_image_info = response.json() - image_urls_to_download = [info['location'] for info in to_tag_image_info] + all_images_json = response.json() + image_urls_to_download = [info['location'] for info in all_images_json] # Download upto 200 images that have been tagged, for training - query['tagStatus'] = 3 + query['tagStatus'] = ImageTagState.COMPLETED_TAG query['imageCount'] = 200 url = config.get('url') + '/api/labels' response = requests.get(url, params=query) - tagged_image_data = response.json() - image_urls_to_download.extend([tag[0]["location"] for tag in tagged_image_data["frames"].values()]) - return { "imageURLs": image_urls_to_download, - "toTagImageInfo": to_tag_image_info, - "taggedImageData": tagged_image_data } - + tagged_label_data = response.json() -def convert_to_csv(training_data, file_location): - file_location = os.path.expanduser(file_location) - # Convert tagged images into their own csv - with open(file_location + '/tagged.csv', 'w') as csvfile: - filewriter = csv.writer(csvfile, delimiter=',', - quotechar='|', quoting=csv.QUOTE_MINIMAL) - filewriter.writerow(['filename','class','xmin','xmax','ymin','ymax','height','width']) - for item in training_data["taggedImageData"]["frames"]: - for tags in training_data["taggedImageData"]["frames"][item]: - for tag in training_data["taggedImageData"]["frames"][item][0]["tags"]: - data = [item, tag, tags['x1'], tags['x2'], tags['y1'], tags['y2'], tags['height'], tags['width']] + return { "imageURLs": image_urls_to_download, + "taggedLabelData": tagged_label_data } + +def convert_labels_to_csv(data, tagging_output_file_path): + try: + if not os.path.exists(tagging_output_file_path): + os.makedirs(os.path.dirname(tagging_output_file_path)) + with open(tagging_output_file_path, 'w') as csvfile: + filewriter = csv.writer(csvfile, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL) + filewriter.writerow(['filename','class','xmin','xmax','ymin','ymax','height','width']) + for img in data: + imagelocation = get_image_name_from_url(img["imagelocation"]) + image_height = img["image_height"] + image_width = img["image_width"] + for label in img["labels"]: + data = [imagelocation, label["classificationname"], label['x_min'], label['x_max'], label['y_min'], label['y_max'], image_height, image_width] filewriter.writerow(data) - - # Convert totag images into their own csv - with open(file_location + '/totag.csv', 'w') as csvfile: - filewriter = csv.writer(csvfile, delimiter=',', - quotechar='|', quoting=csv.QUOTE_MINIMAL) - filewriter.writerow(['filename','class','xmin','xmax','ymin','ymax','height','width','folder','box_confidence','image_confidence']) - for item in training_data["toTagImageInfo"]: - filename = get_image_name_from_url(item['location']) - data = [filename, 'NULL', 0, 0, 0, 0, item['height'], item['width'], '', 0, 0] - filewriter.writerow(data) - - print("Created csv files with metadata " + file_location + "/tagged.csv and " + file_location + "/totag.csv") - -def convert_labels_to_csv(data, tagging_output_location): - with open(tagging_output_location, 'w') as csvfile: - filewriter = csv.writer(csvfile, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL) - filewriter.writerow(['filename','class','xmin','xmax','ymin','ymax','height','width']) - for img in data: - imagelocation = get_image_name_from_url(img["imagelocation"]) - image_height = img["image_height"] - image_width = img["image_width"] - for label in img["labels"]: - data = [imagelocation, label["classificationname"], label['x_min'], label['x_max'], label['y_min'], label['y_max'], image_height, image_width] - filewriter.writerow(data) + except Exception as e: + print("An error occurred attempting to write to file at {0}:\n\n{1}".format(tagging_output_file_path,e)) + raise def get_image_name_from_url(image_url): start_idx = image_url.rfind('/')+1 diff --git a/utils/config.py b/utils/config.py index ba81cc0c..51eff74b 100644 --- a/utils/config.py +++ b/utils/config.py @@ -17,6 +17,7 @@ TAGGING_LOCATION_KEY = 'TAGGING_LOCATION' TAGGING_USER_KEY = 'TAGGING_USER' TAGGING_IMAGE_DIR_KEY='TAGGING_IMAGE_DIR' +TAGGED_OUTPUT_KEY='TAGGED_OUTPUT' class Config(): @staticmethod @@ -47,11 +48,12 @@ def tagging_config_section(tagging_config_section): tagging_location_value = tagging_config_section.get(TAGGING_LOCATION_KEY) tagging_user_value = tagging_config_section.get(TAGGING_USER_KEY) tagging_image_dir = tagging_config_section.get(TAGGING_IMAGE_DIR_KEY) + tagged_output = tagging_config_section.get(TAGGED_OUTPUT_KEY) if not tagging_location_value or not tagging_user_value: raise MissingConfigException() - return tagging_location_value, tagging_user_value, tagging_image_dir + return tagging_location_value, tagging_user_value, tagging_image_dir, tagged_output @staticmethod def functions_config_section(functions_config_section): @@ -84,7 +86,7 @@ def read_config_with_parsed_config(parser): parser[STORAGE_SECTION] ) - tagging_location, tagging_user, tagging_image_dir = Config.tagging_config_section(parser[TAGGING_SECTION]) + tagging_location, tagging_user, tagging_image_dir, tagged_output = Config.tagging_config_section(parser[TAGGING_SECTION]) return { "key": functions_key, @@ -94,7 +96,8 @@ def read_config_with_parsed_config(parser): "storage_container": storage_container, "tagging_location": tagging_location, "tagging_user": tagging_user, - "tagging_image_dir": tagging_image_dir + "tagging_image_dir": tagging_image_dir, + "tagged_output": tagged_output } @staticmethod From 45e85787cd79183a6e2e7259e7dea8846e5ba00c Mon Sep 17 00:00:00 2001 From: Samiya Date: Mon, 10 Dec 2018 13:49:31 -0800 Subject: [PATCH 109/145] Move vott parser from functions pipeline to utils (#73) --- cli/operations.py | 12 +++++++++--- functions/pipeline/download/__init__.py | 7 +++---- functions/pipeline/images/__init__.py | 1 - functions/pipeline/labels/__init__.py | 1 - functions/pipeline/shared/vott_parser/__init__.py | 1 - functions/pipeline/upload/__init__.py | 5 ++--- .../shared/vott_parser => utils}/vott_parser.py | 1 - 7 files changed, 14 insertions(+), 14 deletions(-) delete mode 100644 functions/pipeline/shared/vott_parser/__init__.py rename {functions/pipeline/shared/vott_parser => utils}/vott_parser.py (99%) diff --git a/cli/operations.py b/cli/operations.py index c6739532..aaa5a80d 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -7,6 +7,7 @@ import os from azure.storage.blob import BlockBlobService, ContentSettings from utils.blob_utils import BlobStorage +from utils.vott_parser import process_vott_json, create_starting_vott_json DEFAULT_NUM_IMAGES = 40 LOWER_LIMIT = 0 @@ -138,7 +139,12 @@ def download(config, num_images, strategy=None): exist_ok=True ) - local_images = download_images(config, data_dir, json_resp) + vott_json = create_starting_vott_json(json_resp['image_id_to_urls'], json_resp['image_id_to_image_tags'], json_resp['existing_classifications_list']) + + json_data = {'vott_json': vott_json, + 'imageUrls': json_resp['imageUrls']} + + local_images = download_images(config, data_dir, json_data) count = len(local_images) print("Successfully downloaded " + str(count) + " images.") for image_path in local_images: @@ -204,12 +210,12 @@ def upload(config): with open(str(vott_json)) as json_file: json_data = json.load(json_file) - + process_json = process_vott_json(json_data) query = { "userName": user_name } - response = requests.post(functions_url, json=json_data, params=query) + response = requests.post(functions_url, json=process_json, params=query) response.raise_for_status() resp_json = response.json() diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py index d208b25f..b2cae137 100644 --- a/functions/pipeline/download/__init__.py +++ b/functions/pipeline/download/__init__.py @@ -3,7 +3,6 @@ import azure.functions as func import json -from ..shared.vott_parser import create_starting_vott_json from ..shared.db_provider import get_postgres_provider from ..shared.db_access import ImageTagDataAccess @@ -44,10 +43,10 @@ def main(req: func.HttpRequest) -> func.HttpResponse: existing_classifications_list = data_access.get_existing_classifications() - vott_json = create_starting_vott_json(image_id_to_urls, image_id_to_image_tags, existing_classifications_list) - return_body_json = {"imageUrls": image_urls, - "vottJson": vott_json} + "image_id_to_urls": image_id_to_urls, + "image_id_to_image_tags": image_id_to_image_tags, + "existing_classifications_list": existing_classifications_list} content = json.dumps(return_body_json) return func.HttpResponse( diff --git a/functions/pipeline/images/__init__.py b/functions/pipeline/images/__init__.py index 12121280..631ec20b 100644 --- a/functions/pipeline/images/__init__.py +++ b/functions/pipeline/images/__init__.py @@ -3,7 +3,6 @@ import azure.functions as func import json -from ..shared.vott_parser import create_starting_vott_json from ..shared.db_provider import get_postgres_provider from ..shared.db_access import ImageTagDataAccess, ImageTagState diff --git a/functions/pipeline/labels/__init__.py b/functions/pipeline/labels/__init__.py index 2f502201..21dfa20a 100644 --- a/functions/pipeline/labels/__init__.py +++ b/functions/pipeline/labels/__init__.py @@ -2,7 +2,6 @@ import jsonpickle import azure.functions as func import json -from ..shared.vott_parser import create_starting_vott_json from ..shared.db_provider import get_postgres_provider from ..shared.db_access import ImageTagDataAccess, ImageTagState diff --git a/functions/pipeline/shared/vott_parser/__init__.py b/functions/pipeline/shared/vott_parser/__init__.py deleted file mode 100644 index 3d03d5e1..00000000 --- a/functions/pipeline/shared/vott_parser/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .vott_parser import create_starting_vott_json, process_vott_json \ No newline at end of file diff --git a/functions/pipeline/upload/__init__.py b/functions/pipeline/upload/__init__.py index f229224b..8dc74f57 100644 --- a/functions/pipeline/upload/__init__.py +++ b/functions/pipeline/upload/__init__.py @@ -1,6 +1,5 @@ import json import logging -from ..shared.vott_parser import process_vott_json from ..shared.db_provider import get_postgres_provider from ..shared.db_access import ImageTag, ImageTagDataAccess @@ -17,8 +16,7 @@ def __create_ImageTag_list(image_id, tags_list): def main(req: func.HttpRequest) -> func.HttpResponse: try: # TODO: Create if check for userId and valid json checks? - vott_json = req.get_json() - upload_data = process_vott_json(vott_json) + upload_data = req.get_json() user_name = req.params.get('userName') if not user_name: @@ -55,6 +53,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: headers={ "content-type": "application/json"}, ) except Exception as e: + logging.error(str(e)) return func.HttpResponse( "exception:" + str(e), status_code=500 diff --git a/functions/pipeline/shared/vott_parser/vott_parser.py b/utils/vott_parser.py similarity index 99% rename from functions/pipeline/shared/vott_parser/vott_parser.py rename to utils/vott_parser.py index a2318e76..638e6f12 100644 --- a/functions/pipeline/shared/vott_parser/vott_parser.py +++ b/utils/vott_parser.py @@ -1,6 +1,5 @@ import json - def __build_tag_from_VottImageTag(image_tag): return { "x1": image_tag.x_min, From 111fa9474d43ec01507bd5d83fd3a1c891691190 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Tue, 11 Dec 2018 09:15:04 -0800 Subject: [PATCH 110/145] Restoring Vott json file creation on download (#75) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Restored Vott json file write on download. Fixed other issues --- cli/operations.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/cli/operations.py b/cli/operations.py index aaa5a80d..395492bf 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -64,11 +64,13 @@ def onboard_folder(config, folder_name): response = requests.post(functions_url, json=data, params=query) response.raise_for_status() - json_resp = response.json() - count = len(json_resp['imageUrls']) - print("Successfully uploaded " + str(count) + " images.") - for url in json_resp['imageUrls']: - print(url) + print("Successfully uploaded images.") + #TODO: Recent Onboarding refactoring doesn't return ImageURLs anymore + # json_resp = response.json() + # count = len(json_resp['imageUrls']) + # print("Successfully uploaded " + str(count) + " images.") + # for url in json_resp['imageUrls']: + # print(url) def onboard_container(config, account, key, container): @@ -124,6 +126,10 @@ def download(config, num_images, strategy=None): print("Received " + str(count) + " files.") + if count == 0: + print("No images could be retrieved with the current retrieval strategy!") + return + file_tree = pathlib.Path(os.path.expanduser( config.get("tagging_location")) ) @@ -179,21 +185,15 @@ def download_images(config, image_dir, json_resp): def write_vott_data(image_dir, json_resp): - data_file = pathlib.Path(image_dir / "data.json") - # vott_data = json_resp.get("vott", None) - vott_data = None + #VOTT expects json file at same level as directory + data_file = pathlib.Path(image_dir / "../data.json") + vott_data = json_resp.get("vott_json", None) if not vott_data: return - try: - vott_json = json.loads(vott_data) - except ValueError as e: - print("Corrupted VOTT data received.") - return - - with open(str(data_file), "wb") as file: - vott_json_string = json.dumps(vott_json) + with open(str(data_file), "w") as file: + vott_json_string = json.dumps(vott_data) file.writelines(vott_json_string) file.close() From 35d47af5be71aca568b6e63ac9c3d66ce9f8ab4c Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Tue, 11 Dec 2018 10:13:59 -0800 Subject: [PATCH 111/145] CLI config changes (#74) * Added more config sections * Changes to get unique class names before upload * Changes to how users are inserted. * Test updates * Changed logging --- cli/test_operations.py | 19 ++++++++++- functions/pipeline/onboarding/__init__.py | 4 +-- .../pipeline/shared/db_access/db_access_v2.py | 18 ++++++++-- functions/pipeline/upload/__init__.py | 5 ++- train/training.py | 8 +++-- utils/config.py | 34 ++++++++++++++----- utils/vott_parser.py | 12 ++++++- 7 files changed, 80 insertions(+), 20 deletions(-) diff --git a/cli/test_operations.py b/cli/test_operations.py index 257238a6..2ef4d6b3 100644 --- a/cli/test_operations.py +++ b/cli/test_operations.py @@ -15,6 +15,10 @@ TAGGING_SECTION, TAGGING_LOCATION_KEY, TAGGING_USER_KEY, + TRAINING_SECTION, + TRAINING_LOCATION_KEY, + TRAINING_IMAGE_DIR_KEY, + TAGGED_OUTPUT_KEY ) from .operations import ( _download_bounds, @@ -78,6 +82,12 @@ def test_missing_tagging_section(self): self._mock_sections([FUNCTIONS_SECTION, STORAGE_SECTION], {}) ) + def test_missing_training_section(self): + with self.assertRaises(MissingConfigException): + Config.read_config_with_parsed_config( + self._mock_sections([FUNCTIONS_SECTION, STORAGE_SECTION, TAGGING_SECTION], {}) + ) + def test_missing_functions_config_values(self): with self.assertRaises(MissingConfigException): Config.functions_config_section({}) @@ -92,7 +102,7 @@ def test_missing_tagging_config_values(self): def test_acceptable_config(self): mock_data = self._mock_sections( - [STORAGE_SECTION, FUNCTIONS_SECTION, TAGGING_SECTION], + [STORAGE_SECTION, FUNCTIONS_SECTION, TAGGING_SECTION,TRAINING_SECTION], { STORAGE_SECTION: { STORAGE_KEY: "test", @@ -107,6 +117,13 @@ def test_acceptable_config(self): TAGGING_LOCATION_KEY: "test", TAGGING_USER_KEY: "test" } + , + TRAINING_SECTION: { + TRAINING_LOCATION_KEY: "test", + TRAINING_IMAGE_DIR_KEY: "test", + TAGGED_OUTPUT_KEY:"test" + + } } ) diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index ca4106cd..61970ac4 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -30,7 +30,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: try: req_body = req.get_json() - logging.info(req.get_json()) + logging.debug(req.get_json()) raw_url_list = req_body["imageUrls"] except ValueError: logging.error("Error: Unable to decode POST body.") @@ -62,9 +62,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: ) try: - logging.info("Now connecting to database...") data_access = ImageTagDataAccess(get_postgres_provider()) - logging.info("Connected.") except Exception as e: logging.error("Error: Database connection failed. Exception: " + str(e)) return func.HttpResponse( diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index 8c2e519b..84f549cd 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -105,8 +105,19 @@ def create_user(self,user_name): conn = self._db_provider.get_connection() try: cursor = conn.cursor() - query = "INSERT INTO User_Info (UserName) VALUES (%s) ON CONFLICT (username) DO UPDATE SET username=EXCLUDED.username RETURNING UserId;" - cursor.execute(query,(user_name,)) + query = ("WITH existingUser AS ( " + "SELECT Userid,UserName FROM User_Info " + "WHERE username = %s), " + "data(user_name) AS (values (%s)), " + "newUser AS ( " + "INSERT INTO User_Info (UserName) " + "SELECT d.user_name FROM data d " + "WHERE NOT EXISTS (select 1 FROM User_Info u WHERE u.UserName = d.user_name) " + "RETURNING userid,username) " + "SELECT userid,username FROM newUser " + "UNION ALL " + "SELECT userid,username FROM existingUser") + cursor.execute(query,(user_name,user_name,)) user_id = cursor.fetchone()[0] conn.commit() finally: cursor.close() @@ -461,6 +472,7 @@ def get_classification_map(self, class_names: set, user_id: int) -> dict: class_names_value = ", ".join("('{0}')".format(class_name) for class_name in class_names) query = query.format(class_names_where,class_names_value) cursor.execute(query) + conn.commit() for row in cursor: logging.debug(row) class_to_id[row[1]] = int(row[0]) @@ -601,7 +613,7 @@ def main(): #img_labels = data_access.get_labels() - simulate_onboarding = True + simulate_onboarding = False if simulate_onboarding: list_of_image_infos = generate_test_image_infos(5) url_to_image_id_map = data_access.add_new_images(list_of_image_infos,user_id) diff --git a/functions/pipeline/upload/__init__.py b/functions/pipeline/upload/__init__.py index 8dc74f57..91a5fd97 100644 --- a/functions/pipeline/upload/__init__.py +++ b/functions/pipeline/upload/__init__.py @@ -39,7 +39,10 @@ def main(req: func.HttpRequest) -> func.HttpResponse: all_imagetags.extend(__create_ImageTag_list(image_id, ids_to_tags[image_id])) logging.info("Update all visited images with tags and set state to completed") - data_access.update_tagged_images(all_imagetags, user_id) + unique_class_names = upload_data["uniqueClassNames"] + class_map = data_access.get_classification_map(unique_class_names,user_id) + annotated_labels = data_access.convert_to_annotated_label(all_imagetags,class_map) + data_access.update_tagged_images_v2(annotated_labels,user_id) logging.info("Update visited but no tags identified images") data_access.update_completed_untagged_images(upload_data["imagesVisitedNoTag"], user_id) diff --git a/train/training.py b/train/training.py index 0a2ad725..a32faf32 100644 --- a/train/training.py +++ b/train/training.py @@ -18,10 +18,10 @@ def train(config, num_images): training_data = download_data_for_training(config, num_images) # Make sure directory is clean: - file_location = Config.initialize_tagging_location(config) + file_location = Config.initialize_training_location(config) # Grab tagged and totag images from the blob storage - download_images(training_data["imageURLs"], config.get('tagging_image_dir')) + download_images(training_data["imageURLs"], config.get('training_image_dir')) # create csv file from this data convert_labels_to_csv(training_data["taggedLabelData"],config.get('tagged_output')) @@ -76,7 +76,9 @@ def download_data_for_training(config, num_images): def convert_labels_to_csv(data, tagging_output_file_path): try: if not os.path.exists(tagging_output_file_path): - os.makedirs(os.path.dirname(tagging_output_file_path)) + dir_name = os.path.dirname(tagging_output_file_path) + if not os.path.exists(dir_name): + os.makedirs(dir_name) with open(tagging_output_file_path, 'w') as csvfile: filewriter = csv.writer(csvfile, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL) filewriter.writerow(['filename','class','xmin','xmax','ymin','ymax','height','width']) diff --git a/utils/config.py b/utils/config.py index 51eff74b..00af24d7 100644 --- a/utils/config.py +++ b/utils/config.py @@ -16,7 +16,10 @@ TAGGING_SECTION = 'TAGGING' TAGGING_LOCATION_KEY = 'TAGGING_LOCATION' TAGGING_USER_KEY = 'TAGGING_USER' -TAGGING_IMAGE_DIR_KEY='TAGGING_IMAGE_DIR' + +TRAINING_SECTION = 'TRAINING' +TRAINING_LOCATION_KEY = 'TRAINING_LOCATION' +TRAINING_IMAGE_DIR_KEY='TRAINING_IMAGE_DIR' TAGGED_OUTPUT_KEY='TAGGED_OUTPUT' class Config(): @@ -47,14 +50,23 @@ def storage_config_section(storage_config_section): def tagging_config_section(tagging_config_section): tagging_location_value = tagging_config_section.get(TAGGING_LOCATION_KEY) tagging_user_value = tagging_config_section.get(TAGGING_USER_KEY) - tagging_image_dir = tagging_config_section.get(TAGGING_IMAGE_DIR_KEY) - tagged_output = tagging_config_section.get(TAGGED_OUTPUT_KEY) if not tagging_location_value or not tagging_user_value: raise MissingConfigException() - return tagging_location_value, tagging_user_value, tagging_image_dir, tagged_output + return tagging_location_value, tagging_user_value + @staticmethod + def training_config_section(training_config_section): + training_image_dir = training_config_section.get(TRAINING_IMAGE_DIR_KEY) + tagged_output = training_config_section.get(TAGGED_OUTPUT_KEY) + training_location = training_config_section.get(TRAINING_LOCATION_KEY) + + if not training_image_dir or not tagged_output or not training_location: + raise MissingConfigException() + + return training_image_dir, tagged_output, training_location + @staticmethod def functions_config_section(functions_config_section): functions_key_value = functions_config_section.get(FUNCTIONS_KEY) @@ -78,6 +90,9 @@ def read_config_with_parsed_config(parser): if TAGGING_SECTION not in sections: raise MissingConfigException() + if TRAINING_SECTION not in sections: + raise MissingConfigException() + functions_key, functions_url = Config.functions_config_section( parser[FUNCTIONS_SECTION] ) @@ -86,7 +101,9 @@ def read_config_with_parsed_config(parser): parser[STORAGE_SECTION] ) - tagging_location, tagging_user, tagging_image_dir, tagged_output = Config.tagging_config_section(parser[TAGGING_SECTION]) + tagging_location, tagging_user = Config.tagging_config_section(parser[TAGGING_SECTION]) + + training_image_dir, tagged_output, training_location = Config.training_config_section(parser[TRAINING_SECTION]) return { "key": functions_key, @@ -96,7 +113,8 @@ def read_config_with_parsed_config(parser): "storage_container": storage_container, "tagging_location": tagging_location, "tagging_user": tagging_user, - "tagging_image_dir": tagging_image_dir, + "training_location": training_location, + "training_image_dir": training_image_dir, "tagged_output": tagged_output } @@ -111,9 +129,9 @@ def read_config(config_path): return Config.read_config_with_parsed_config(parser) @staticmethod - def initialize_tagging_location(config): + def initialize_training_location(config): file_tree = pathlib.Path(os.path.expanduser( - config.get("tagging_location")) + config.get("training_location")) ) if file_tree.exists(): diff --git a/utils/vott_parser.py b/utils/vott_parser.py index 638e6f12..bb7bfd89 100644 --- a/utils/vott_parser.py +++ b/utils/vott_parser.py @@ -105,6 +105,15 @@ def process_vott_json(json): # Unvisisted imageIds unvisited_ids = sorted(list(set(all_ids) - set(visited_ids))) + #TODO: A cleaner way to do this + all_class_name_lists = [] + unique_class_names = [] + for val in id_to_tags_dict.values(): + for v in val: + all_class_name_lists.append(v["classes"]) + for c in set(x for l in all_class_name_lists for x in l): + unique_class_names.append(c) + return { "totalNumImages" : len(all_ids), "numImagesVisted" : len(visited_ids), @@ -113,7 +122,8 @@ def process_vott_json(json): "imagesVisited" : visited_ids, "imagesNotVisited" : unvisited_ids, "imagesVisitedNoTag": visited_no_tag_ids, - "imageIdToTags": id_to_tags_dict + "imageIdToTags": id_to_tags_dict, + "uniqueClassNames": unique_class_names } From 270f384370618635a0204849cc9e3880da007097 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Tue, 11 Dec 2018 11:42:02 -0800 Subject: [PATCH 112/145] Update Deploy-Postgres-DB.sh (#76) Fixed arg issue --- devops/deployment/Deploy-Postgres-DB.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/deployment/Deploy-Postgres-DB.sh b/devops/deployment/Deploy-Postgres-DB.sh index 442dc959..1494b98f 100755 --- a/devops/deployment/Deploy-Postgres-DB.sh +++ b/devops/deployment/Deploy-Postgres-DB.sh @@ -80,6 +80,6 @@ if $SSL_POSTGRES; then echo az postgres server update \ --resource-group $ResourceGroup \ - --server-name $ServerName \ + --name $ServerName \ --ssl-enforcement Disabled -fi \ No newline at end of file +fi From 8c5dce57ab07cf2f40160d6de4b6c04a1ed91c66 Mon Sep 17 00:00:00 2001 From: Samiya Date: Tue, 11 Dec 2018 17:50:33 -0800 Subject: [PATCH 113/145] Update download api to use new annotated labels table (#77) * Move vott parser from functions pipeline to utils * Updating download api to use annotated labels * Minor fixes * Handle duplicate image ids in response * Add todos --- cli/operations.py | 32 ++++- functions/pipeline/download/__init__.py | 22 ++- .../pipeline/shared/db_access/db_access_v2.py | 128 ++++++------------ utils/vott_parser.py | 37 ++++- 4 files changed, 113 insertions(+), 106 deletions(-) diff --git a/cli/operations.py b/cli/operations.py index 395492bf..7d8e0e68 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -7,7 +7,7 @@ import os from azure.storage.blob import BlockBlobService, ContentSettings from utils.blob_utils import BlobStorage -from utils.vott_parser import process_vott_json, create_starting_vott_json +from utils.vott_parser import process_vott_json, create_starting_vott_json, build_id_to_VottImageTag DEFAULT_NUM_IMAGES = 40 LOWER_LIMIT = 0 @@ -122,10 +122,10 @@ def download(config, num_images, strategy=None): response.raise_for_status() json_resp = response.json() - count = len(json_resp['imageUrls']) + count = len(json_resp['images']) print("Received " + str(count) + " files.") - + if count == 0: print("No images could be retrieved with the current retrieval strategy!") return @@ -144,11 +144,10 @@ def download(config, num_images, strategy=None): parents=True, exist_ok=True ) - - vott_json = create_starting_vott_json(json_resp['image_id_to_urls'], json_resp['image_id_to_image_tags'], json_resp['existing_classifications_list']) + vott_json, image_urls = _build_vott_json_from_raw_data(json_resp["images"]) json_data = {'vott_json': vott_json, - 'imageUrls': json_resp['imageUrls']} + 'imageUrls': image_urls} local_images = download_images(config, data_dir, json_data) count = len(local_images) @@ -220,3 +219,24 @@ def upload(config): resp_json = response.json() print("Done!") + + +def _build_vott_json_from_raw_data(rawdata): + image_id_to_image_url = {} + image_id_to_image_tag = {} + existing_classifications_list = [] + for row in rawdata: + image_id = row[0] + image_id_to_image_url[image_id] = row[1] + + if image_id not in image_id_to_image_tag: + image_id_to_image_tag[image_id] = [] + image_id_to_image_tag[image_id].append(build_id_to_VottImageTag(row)) + + if row[3] and row[3] not in existing_classifications_list: + existing_classifications_list.append(row[3]) + + vott_json = create_starting_vott_json(image_id_to_image_url, image_id_to_image_tag, existing_classifications_list) + + return vott_json, list(image_id_to_image_url.values()) + diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py index b2cae137..ab98c6d3 100644 --- a/functions/pipeline/download/__init__.py +++ b/functions/pipeline/download/__init__.py @@ -10,7 +10,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') - image_count = int(req.params.get('imageCount')) + image_count = req.params.get('imageCount') user_name = req.params.get('userName') # setup response object @@ -32,21 +32,15 @@ def main(req: func.HttpRequest) -> func.HttpResponse: else: try: # DB configuration + image_count = int(image_count) data_access = ImageTagDataAccess(get_postgres_provider()) user_id = data_access.create_user(user_name) - image_id_to_urls = data_access.get_images_for_tagging(image_count, user_id) - image_urls = list(image_id_to_urls.values()) - - image_id_to_image_tags = {} - for image_id in image_id_to_urls.keys(): - image_id_to_image_tags[image_id] = data_access.get_image_tags(image_id) - - existing_classifications_list = data_access.get_existing_classifications() - - return_body_json = {"imageUrls": image_urls, - "image_id_to_urls": image_id_to_urls, - "image_id_to_image_tags": image_id_to_image_tags, - "existing_classifications_list": existing_classifications_list} + + image_count = int(image_count) + image_id_to_tag_data = data_access.checkout_images(image_count, user_id) + return_body_json = { + "images": image_id_to_tag_data + } content = json.dumps(return_body_json) return func.HttpResponse( diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index 84f549cd..796f90c6 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -74,14 +74,6 @@ def __init__(self, training_id, image_id, classification_id, x_min, x_max, y_min self.image_confidence = image_confidence -# Vott tags have image height & width data as well. -class VottImageTag(ImageTag): - def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names, image_height, image_width, image_location): - super().__init__(image_id, x_min, x_max, y_min, y_max, classification_names) - self.image_height = image_height - self.image_width = image_width - self.image_location = image_location - class ImageTagDataAccess(object): def __init__(self, db_provider): @@ -240,95 +232,60 @@ def get_image_info_for_image_ids(self, image_ids): finally: conn.close() return list(images_info) - - def get_image_tags_for_image_ids(self, image_ids): - if not image_ids: - return dict() - - image_id_to_vott_tags = {} - try: - conn = self._db_provider.get_connection() - try: - cursor = conn.cursor() - ids = '' - for id in image_ids: - ids += str(id) + ',' - ids = ids[:-1] - query = ("SELECT image_tags.imagetagid, image_info.imageid, x_min, x_max, y_min, y_max, " - "classification_info.classificationname, image_info.height, image_info.width, image_info.imagelocation " - "FROM image_tags " - "inner join tags_classification on image_tags.imagetagid = tags_classification.imagetagid " - "inner join classification_info on tags_classification.classificationid = classification_info.classificationid " - "inner join image_info on image_info.imageid = image_tags.imageid " - "WHERE image_tags.imageid IN ({0});") - cursor.execute(query.format(ids,)) - - logging.debug("Got image tags back for image_id={}".format(image_ids)) - tag_id_to_vott_tags = self.__build_id_to_VottImageTag(cursor) - for vott_tag in tag_id_to_vott_tags.values(): - if vott_tag.image_id not in image_id_to_vott_tags: - image_id_to_vott_tags[vott_tag.image_id] = [] - image_id_to_vott_tags[vott_tag.image_id].append(vott_tag) - finally: - cursor.close() - except Exception as e: - logging.error("An error occurred getting image tags for image ids = {0}: {1}".format(image_ids, e)) - raise - finally: - conn.close() - return image_id_to_vott_tags - def get_image_tags(self, image_id: int): - if type(image_id) is not int: - raise TypeError('image_id must be an integer') + def checkout_images(self, image_count, user_id): + if type(image_count) is not int: + raise TypeError('image_count must be an integer') + checked_out_images = [] try: conn = self._db_provider.get_connection() try: cursor = conn.cursor() - query = ("SELECT image_tags.imagetagid, image_info.imageid, x_min, x_max, y_min, y_max, " - "classification_info.classificationname, image_info.height, image_info.width, image_info.imagelocation " - "FROM image_tags " - "inner join tags_classification on image_tags.imagetagid = tags_classification.imagetagid " - "inner join classification_info on tags_classification.classificationid = classification_info.classificationid " - "inner join image_info on image_info.imageid = image_tags.imageid " - "WHERE image_tags.imageid = {0};") - cursor.execute(query.format(image_id,)) - - logging.debug("Got image tags back for image_id={}".format(image_id)) - tag_id_to_VottImageTag = self.__build_id_to_VottImageTag(cursor) - + query = ("with pl as ( " + "SELECT p.*, ci.classificationname " + "FROM prediction_labels p " + "join classification_info ci on ci.classificationid = p.classificationid " + "WHERE trainingid = (select MAX(trainingid) From training_info) " + ") " + "select " + "its.imageid, " + "i.imagelocation, " + "pl.classificationid, " + "pl.classificationname, " + "pl.x_min, " + "pl.x_max, " + "pl.y_min, " + "pl.y_max, " + "i.height, " + "i.width, " + "pl.boxconfidence, " + "pl.imageconfidence, " + "ts.tagstatename " + "from image_tagging_state its " + "left outer join pl on its.imageid = pl.imageid " + "join image_info i on i.imageid = its.imageid " + "join tag_state ts on ts.tagstateid = its.tagstateid " + "where " + "its.tagstateid in ({1},{2}) " + "limit {0}") + cursor.execute(query.format(image_count, ImageTagState.READY_TO_TAG, ImageTagState.TAG_IN_PROGRESS)) + + logging.debug("Got image tags back for image_count={0}".format(image_count)) + # TODO: Optimize below two lines to simplify unique image ids, and improve the + # json output being returned, unflatten it + checked_out_images = list(cursor) + images_ids_to_update = list({ row[0] for row in cursor }) + + self._update_images(images_ids_to_update, ImageTagState.TAG_IN_PROGRESS, user_id, conn) finally: cursor.close() except Exception as e: - logging.error("An error occurred getting image tags for image id = {0}: {1}".format(image_id, e)) + logging.error("An error occurred checking out {0} images: {1}".format(image_count, e)) raise finally: conn.close() - return list(tag_id_to_VottImageTag.values()) - - def __build_id_to_VottImageTag(self, tag_db_cursor): - tag_id_to_VottImageTag = {} - try : - for row in tag_db_cursor: - logging.debug(row) - tag_id = row[0] - if tag_id in tag_id_to_VottImageTag: - logging.debug("Existing ImageTag found, appending classification {0}".format(row[6])) - tag_id_to_VottImageTag[tag_id].classification_names.append(row[6].strip()) - else: - logging.debug("No existing ImageTag found, creating new ImageTag: " - "id={0} x_min={1} x_max={2} x_min={3} x_max={4} classification={5} " - "image_height={6} image_width={7}" - .format(row[1], float(row[2]), float(row[3]), float(row[4]), float(row[5]), - [row[6].strip()], row[7], row[8])) - tag_id_to_VottImageTag[tag_id] = VottImageTag(row[1], float(row[2]), float(row[3]), - float(row[4]), float(row[5]), [row[6].strip()], - row[7], row[8], row[9]) - except Exception as e: - logging.error("An error occurred building VottImageTag dict: {0}".format(e)) - raise - return tag_id_to_VottImageTag + return checked_out_images def get_existing_classifications(self): @@ -557,6 +514,7 @@ def add_prediction_labels(self, prediction_labels: list, training_id: int): # efficient with the nesting to avoid dupe bounding boxes per image def get_labels(self): id_to_imagelabels = {} + conn = None try: conn = self._db_provider.get_connection() try: diff --git a/utils/vott_parser.py b/utils/vott_parser.py index bb7bfd89..ae8a5d4d 100644 --- a/utils/vott_parser.py +++ b/utils/vott_parser.py @@ -1,5 +1,24 @@ import json + +# Entity class for Tags stored in DB +class ImageTag(object): + def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names): + self.image_id = image_id + self.x_min = x_min + self.x_max = x_max + self.y_min = y_min + self.y_max = y_max + self.classification_names = classification_names + +# Vott tags have image height & width data as well. +class VottImageTag(ImageTag): + def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names, image_height, image_width, image_location): + super().__init__(image_id, x_min, x_max, y_min, y_max, classification_names) + self.image_height = image_height + self.image_width = image_width + self.image_location = image_location + def __build_tag_from_VottImageTag(image_tag): return { "x1": image_tag.x_min, @@ -13,10 +32,26 @@ def __build_tag_from_VottImageTag(image_tag): } +def build_id_to_VottImageTag(row): + tag_id_to_VottImageTag = {} + try : + tag_id = row[0] + if tag_id in tag_id_to_VottImageTag: + tag_id_to_VottImageTag[tag_id].classification_names.append(row[6].strip()) + elif row[4] and row[5] and row[6] and row[7]: + tag_id_to_VottImageTag[tag_id] = VottImageTag(row[0], float(row[4]), float(row[5]), + float(row[6]), float(row[7]), [row[3].strip()], + row[8], row[9], row[1]) + except Exception as e: + print("An error occurred building VottImageTag dict: {0}".format(e)) + raise + return tag_id_to_VottImageTag + def __build_tag_list_from_VottImageTags(image_tag_list): tag_list = [] for image_tag in image_tag_list: - tag_list.append(__build_tag_from_VottImageTag(image_tag)) + if image_tag: + tag_list.append(__build_tag_from_VottImageTag(image_tag)) return tag_list From 45dffd8c250385cd0a04abedcd00d91f2fa02c8a Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Tue, 11 Dec 2018 18:18:09 -0800 Subject: [PATCH 114/145] Changing to single line due to Azure Pipelines issue (#78) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Changing to single line due to Aaure Pipelines issue --- devops/deployment/Deploy-Postgres-DB.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/devops/deployment/Deploy-Postgres-DB.sh b/devops/deployment/Deploy-Postgres-DB.sh index 1494b98f..2b42d24b 100755 --- a/devops/deployment/Deploy-Postgres-DB.sh +++ b/devops/deployment/Deploy-Postgres-DB.sh @@ -78,8 +78,5 @@ if $SSL_POSTGRES; then echo echo "WARNING: Disabling SSL enforcement on Postgres host." echo - az postgres server update \ - --resource-group $ResourceGroup \ - --name $ServerName \ - --ssl-enforcement Disabled + az postgres server update --resource-group $ResourceGroup --name $ServerName --ssl-enforcement Disabled fi From edb20019f38ae13204a200166281e2a6baafaee4 Mon Sep 17 00:00:00 2001 From: Samiya Date: Wed, 12 Dec 2018 10:21:37 -0800 Subject: [PATCH 115/145] Minor fixes on download api (#79) * Minor fixes on download api * Check out only ready to tag images --- cli/operations.py | 10 +++------- functions/pipeline/download/__init__.py | 5 ++++- functions/pipeline/shared/db_access/db_access_v2.py | 7 +++---- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/cli/operations.py b/cli/operations.py index 7d8e0e68..51a2eb4f 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -144,7 +144,7 @@ def download(config, num_images, strategy=None): parents=True, exist_ok=True ) - vott_json, image_urls = _build_vott_json_from_raw_data(json_resp["images"]) + vott_json, image_urls = _build_vott_json_from_raw_data(json_resp["images"], json_resp["classification_list"]) json_data = {'vott_json': vott_json, 'imageUrls': image_urls} @@ -221,10 +221,9 @@ def upload(config): print("Done!") -def _build_vott_json_from_raw_data(rawdata): +def _build_vott_json_from_raw_data(rawdata, classification_list): image_id_to_image_url = {} image_id_to_image_tag = {} - existing_classifications_list = [] for row in rawdata: image_id = row[0] image_id_to_image_url[image_id] = row[1] @@ -233,10 +232,7 @@ def _build_vott_json_from_raw_data(rawdata): image_id_to_image_tag[image_id] = [] image_id_to_image_tag[image_id].append(build_id_to_VottImageTag(row)) - if row[3] and row[3] not in existing_classifications_list: - existing_classifications_list.append(row[3]) - - vott_json = create_starting_vott_json(image_id_to_image_url, image_id_to_image_tag, existing_classifications_list) + vott_json = create_starting_vott_json(image_id_to_image_url, image_id_to_image_tag, classification_list) return vott_json, list(image_id_to_image_url.values()) diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py index ab98c6d3..d016d678 100644 --- a/functions/pipeline/download/__init__.py +++ b/functions/pipeline/download/__init__.py @@ -38,8 +38,11 @@ def main(req: func.HttpRequest) -> func.HttpResponse: image_count = int(image_count) image_id_to_tag_data = data_access.checkout_images(image_count, user_id) + existing_classifications_list = data_access.get_existing_classifications() + return_body_json = { - "images": image_id_to_tag_data + "images": image_id_to_tag_data, + "classification_list": existing_classifications_list } content = json.dumps(return_body_json) diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index 796f90c6..661ea2e8 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -267,16 +267,15 @@ def checkout_images(self, image_count, user_id): "join image_info i on i.imageid = its.imageid " "join tag_state ts on ts.tagstateid = its.tagstateid " "where " - "its.tagstateid in ({1},{2}) " + "its.tagstateid in ({1}) " "limit {0}") - cursor.execute(query.format(image_count, ImageTagState.READY_TO_TAG, ImageTagState.TAG_IN_PROGRESS)) + cursor.execute(query.format(image_count, ImageTagState.READY_TO_TAG)) logging.debug("Got image tags back for image_count={0}".format(image_count)) # TODO: Optimize below two lines to simplify unique image ids, and improve the # json output being returned, unflatten it checked_out_images = list(cursor) - images_ids_to_update = list({ row[0] for row in cursor }) - + images_ids_to_update = list(set(row[0] for row in checked_out_images )) self._update_images(images_ids_to_update, ImageTagState.TAG_IN_PROGRESS, user_id, conn) finally: cursor.close() From ee3d424846d2ecddbd1bdb865c3151c20415aa37 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Wed, 12 Dec 2018 16:46:29 -0800 Subject: [PATCH 116/145] Changing logging debug to logging info. (#81) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Fixed logging --- functions/pipeline/onboarding/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index 61970ac4..a910f31b 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -30,7 +30,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: try: req_body = req.get_json() - logging.debug(req.get_json()) + logging.info("Request json: {}".format(req_body)) raw_url_list = req_body["imageUrls"] except ValueError: logging.error("Error: Unable to decode POST body.") From ca896089d763a0e18bc32ac8bdb19dcd2993cd09 Mon Sep 17 00:00:00 2001 From: Samiya Date: Thu, 13 Dec 2018 09:08:59 -0800 Subject: [PATCH 117/145] Improved json format of data being passed from download api (#80) * Improved json output of download api and vott parsing * Check out incomplete tag images as well * Improve json deserialization * Improved query * Add necessary vott fields to load prediction labels in vott * Added unit tests * Remove unnecessary code --- azure-pipelines.yml | 2 +- cli/operations.py | 22 +----- functions/__init__.py | 0 functions/pipeline/download/__init__.py | 6 +- .../pipeline/shared/db_access/__init__.py | 2 +- .../pipeline/shared/db_access/db_access_v2.py | 75 +++++++++++++------ utils/mock_response.json | 24 ++++++ utils/test_vott_parser.py | 25 +++++++ utils/vott_parser.py | 59 +++++++++++---- 9 files changed, 156 insertions(+), 59 deletions(-) create mode 100644 functions/__init__.py create mode 100644 utils/mock_response.json create mode 100644 utils/test_vott_parser.py diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 36eb3f15..961f48b6 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -30,7 +30,7 @@ jobs: - script: | pip install pytest - pytest cli functions --doctest-modules --junitxml=junit/test-results.xml + pytest cli functions utils --doctest-modules --junitxml=junit/test-results.xml displayName: 'pytest' - task: PublishTestResults@2 diff --git a/cli/operations.py b/cli/operations.py index 51a2eb4f..2876750d 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -7,7 +7,8 @@ import os from azure.storage.blob import BlockBlobService, ContentSettings from utils.blob_utils import BlobStorage -from utils.vott_parser import process_vott_json, create_starting_vott_json, build_id_to_VottImageTag +from utils.vott_parser import process_vott_json, create_starting_vott_json, build_id_to_VottImageTag, create_vott_json_from_image_labels +from functions.pipeline.shared.db_access import ImageLabel, ImageTag DEFAULT_NUM_IMAGES = 40 LOWER_LIMIT = 0 @@ -144,7 +145,8 @@ def download(config, num_images, strategy=None): parents=True, exist_ok=True ) - vott_json, image_urls = _build_vott_json_from_raw_data(json_resp["images"], json_resp["classification_list"]) + checkedout_image_labels = [ImageLabel.fromJson(item) for item in json.loads(json_resp["images"])] + vott_json, image_urls = create_vott_json_from_image_labels(checkedout_image_labels, json_resp["classification_list"]) json_data = {'vott_json': vott_json, 'imageUrls': image_urls} @@ -220,19 +222,3 @@ def upload(config): resp_json = response.json() print("Done!") - -def _build_vott_json_from_raw_data(rawdata, classification_list): - image_id_to_image_url = {} - image_id_to_image_tag = {} - for row in rawdata: - image_id = row[0] - image_id_to_image_url[image_id] = row[1] - - if image_id not in image_id_to_image_tag: - image_id_to_image_tag[image_id] = [] - image_id_to_image_tag[image_id].append(build_id_to_VottImageTag(row)) - - vott_json = create_starting_vott_json(image_id_to_image_url, image_id_to_image_tag, classification_list) - - return vott_json, list(image_id_to_image_url.values()) - diff --git a/functions/__init__.py b/functions/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py index d016d678..fff21bf4 100644 --- a/functions/pipeline/download/__init__.py +++ b/functions/pipeline/download/__init__.py @@ -2,7 +2,7 @@ import azure.functions as func import json - +import jsonpickle from ..shared.db_provider import get_postgres_provider from ..shared.db_access import ImageTagDataAccess @@ -37,11 +37,11 @@ def main(req: func.HttpRequest) -> func.HttpResponse: user_id = data_access.create_user(user_name) image_count = int(image_count) - image_id_to_tag_data = data_access.checkout_images(image_count, user_id) + checked_out_images = data_access.checkout_images(image_count, user_id) existing_classifications_list = data_access.get_existing_classifications() return_body_json = { - "images": image_id_to_tag_data, + "images": jsonpickle.encode(checked_out_images, unpicklable=False), "classification_list": existing_classifications_list } diff --git a/functions/pipeline/shared/db_access/__init__.py b/functions/pipeline/shared/db_access/__init__.py index e8fe74d4..3b8b60cf 100644 --- a/functions/pipeline/shared/db_access/__init__.py +++ b/functions/pipeline/shared/db_access/__init__.py @@ -1 +1 @@ -from .db_access_v2 import ImageTagDataAccess, ImageTag, ImageInfo, ImageTagState \ No newline at end of file +from .db_access_v2 import ImageTagDataAccess, ImageTag, ImageInfo, ImageTagState, ImageLabel \ No newline at end of file diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index 661ea2e8..51fe969b 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -4,6 +4,7 @@ from enum import IntEnum, unique import getpass import itertools +import json from ..db_provider import DatabaseInfo, PostGresProvider @@ -34,6 +35,11 @@ def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names): self.y_min = y_min self.y_max = y_max self.classification_names = classification_names + + @staticmethod + def fromJson(dictionary): + image_tag = ImageTag(dictionary["image_id"], dictionary["x_min"], dictionary["x_max"], dictionary["y_min"], dictionary["y_max"], dictionary["classification_names"]) + return image_tag #This class doesn't have box and image confidence because they are human curated labels class AnnotatedLabel(object): @@ -54,6 +60,18 @@ def __init__(self,image_id, imagelocation,image_height: int, image_width: int, l self.image_width = image_width self.user_folder = user_folder self.labels = labels + + @staticmethod + def fromJson(dictionary): + tags = [] + if (isinstance(dictionary["labels"], dict)): + tags = [ImageTag.fromJson(dictionary["labels"])] + elif (isinstance(dictionary["labels"], list)): + tags = [ImageTag.fromJson(label) for label in dictionary["labels"]] + + image_label = ImageLabel(dictionary["image_id"], dictionary["imagelocation"], dictionary["image_height"], dictionary["image_width"], tags, dictionary.get("user_folder")) + return image_label + class Tag(object): def __init__(self,classificationname, x_min: float, x_max: float, y_min: float, y_max: float): @@ -237,45 +255,57 @@ def get_image_info_for_image_ids(self, image_ids): def checkout_images(self, image_count, user_id): if type(image_count) is not int: raise TypeError('image_count must be an integer') - checked_out_images = [] + image_id_to_image_labels = {} try: conn = self._db_provider.get_connection() try: cursor = conn.cursor() - query = ("with pl as ( " - "SELECT p.*, ci.classificationname " + query = ("with pl AS ( " + "SELECT p.*, ci.classificationname " "FROM prediction_labels p " "join classification_info ci on ci.classificationid = p.classificationid " "WHERE trainingid = (select MAX(trainingid) From training_info) " - ") " - "select " + "), " + "its AS ( " + "SELECT s.imageid, ts.tagstatename, i.imagelocation,i.height,i.width " + "FROM image_tagging_state s " + "join image_info i on i.imageid = s.imageid " + "join tag_state ts on ts.tagstateid = s.tagstateid " + "WHERE s.tagstateid in ({0},{1}) LIMIT {2} " + ") " + "select " "its.imageid, " - "i.imagelocation, " + "its.imagelocation, " "pl.classificationid, " "pl.classificationname, " "pl.x_min, " "pl.x_max, " "pl.y_min, " "pl.y_max, " - "i.height, " - "i.width, " + "its.height, " + "its.width, " "pl.boxconfidence, " "pl.imageconfidence, " - "ts.tagstatename " - "from image_tagging_state its " - "left outer join pl on its.imageid = pl.imageid " - "join image_info i on i.imageid = its.imageid " - "join tag_state ts on ts.tagstateid = its.tagstateid " - "where " - "its.tagstateid in ({1}) " - "limit {0}") - cursor.execute(query.format(image_count, ImageTagState.READY_TO_TAG)) + "its.tagstatename " + "FROM its " + "left outer join pl on its.imageid = pl.imageid") + cursor.execute(query.format(ImageTagState.READY_TO_TAG, ImageTagState.INCOMPLETE_TAG, image_count)) logging.debug("Got image tags back for image_count={0}".format(image_count)) - # TODO: Optimize below two lines to simplify unique image ids, and improve the - # json output being returned, unflatten it - checked_out_images = list(cursor) - images_ids_to_update = list(set(row[0] for row in checked_out_images )) + + for row in cursor: + image_tag = {} + # Handle the incomplete case + if row[4] and row[5] and row[6] and row[7]: + image_tag = ImageTag(row[0], float(row[4]), float(row[5]), float(row[6]), float(row[7]), row[3]) + if row[0] not in image_id_to_image_labels: + image_label = ImageLabel(row[0], row[1], row[8], row[9], [image_tag]) + image_id_to_image_labels[row[0]] = image_label + else: + image_id_to_image_labels[row[0]].labels.append(image_tag) + + logging.debug("Checked out images: " + str(image_id_to_image_labels)) + images_ids_to_update = list(image_id_to_image_labels.keys()) self._update_images(images_ids_to_update, ImageTagState.TAG_IN_PROGRESS, user_id, conn) finally: cursor.close() @@ -284,7 +314,7 @@ def checkout_images(self, image_count, user_id): raise finally: conn.close() - return checked_out_images + return list(image_id_to_image_labels.values()) def get_existing_classifications(self): @@ -546,7 +576,6 @@ def get_labels(self): class ArgumentException(Exception): pass - def main(): ################################################################# # This main method is an example of how to use some of diff --git a/utils/mock_response.json b/utils/mock_response.json new file mode 100644 index 00000000..dcc0d669 --- /dev/null +++ b/utils/mock_response.json @@ -0,0 +1,24 @@ +[{"image_height": 483, + "image_width": 724, + "image_id": 199, + "imagelocation": "https://mock-storage.blob.core.windows.net/perm-images/199.JPG", + "labels": { + "classification_names": "knot", + "image_id": 199, + "x_min": 3.0, + "x_max": 9.0, + "y_min": 4.0, + "y_max": 7.0 + }}, + {"image_height": 483, + "image_width": 724, + "image_id": 211, + "imagelocation": "https://mock-storage.blob.core.windows.net/perm-images/211.JPG", + "labels": { + "classification_names": "defect", + "image_id": 211, + "x_min": 3.0, + "x_max": 9.0, + "y_min": 4.0, + "y_max": 7.0 + }}] \ No newline at end of file diff --git a/utils/test_vott_parser.py b/utils/test_vott_parser.py new file mode 100644 index 00000000..80cd203e --- /dev/null +++ b/utils/test_vott_parser.py @@ -0,0 +1,25 @@ +import unittest +import json +import pathlib +import os +from unittest.mock import Mock +from .vott_parser import process_vott_json, create_starting_vott_json, build_id_to_VottImageTag, create_vott_json_from_image_labels +from functions.pipeline.shared.db_access import ImageLabel + +class TestVOTTParser(unittest.TestCase): + def test_create_vott_json(self): + dirname, _ = os.path.split(os.path.abspath(__file__)) + with open(dirname + '/mock_response.json') as f: + data = json.load(f) + image_labels = [ImageLabel.fromJson(item) for item in data] + existing_classification_list = ['road', 'superdefect', 'test', 'water', 'superknot', 'knot', 'car', 'cloud', 'mountain', 'defect'] + vott_json, image_urls = create_vott_json_from_image_labels(image_labels, existing_classification_list) + self.assertEqual(len(image_urls), 2) + self.assertIsNotNone(vott_json["frames"]["199.JPG"]) + self.assertTrue("inputTags" in vott_json) + + +if __name__ == '__main__': + unittest.main() + + diff --git a/utils/vott_parser.py b/utils/vott_parser.py index ae8a5d4d..77687786 100644 --- a/utils/vott_parser.py +++ b/utils/vott_parser.py @@ -1,15 +1,7 @@ import json - - -# Entity class for Tags stored in DB -class ImageTag(object): - def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names): - self.image_id = image_id - self.x_min = x_min - self.x_max = x_max - self.y_min = y_min - self.y_max = y_max - self.classification_names = classification_names +from functions.pipeline.shared.db_access import ImageTag +import string +import random # Vott tags have image height & width data as well. class VottImageTag(ImageTag): @@ -27,8 +19,17 @@ def __build_tag_from_VottImageTag(image_tag): "y2": image_tag.y_max, "width": image_tag.image_width, "height": image_tag.image_height, - "tags": image_tag.classification_names, - "location": image_tag.image_location + "tags": [image_tag.classification_names], + "UID": __generate_uid(), + "box": { + "x1": image_tag.x_min, + "x2": image_tag.x_max, + "y1": image_tag.y_min, + "y2": image_tag.y_max, + }, + "type": "Rectangle", + "id": image_tag.image_id, + "name": 2 } @@ -64,6 +65,35 @@ def __build_frames_data(image_id_to_urls, image_id_to_image_tags): return frames +def create_vott_json_from_image_labels(image_labels, existing_classifications_list): + frames = {} + image_urls = [] + + for label in image_labels: + image_file_name = __get_filename_from_fullpath(label.imagelocation) + image_urls.append(label.imagelocation) + image_tags = [] + for tag in label.labels: + if tag and tag.x_min and tag.x_max and tag.y_min and tag.y_max: + vott_image_tag = VottImageTag(label.image_id, tag.x_min, tag.x_max, tag.y_min, tag.y_max, tag.classification_names, label.image_height, label.image_width, label.imagelocation) + image_tags.append(__build_tag_from_VottImageTag(vott_image_tag)) + + frames[image_file_name] = image_tags + + # "inputTags" + class_length = len(existing_classifications_list) + classification_str = "" + for i in range(class_length): + classification_str += existing_classifications_list[i] + if i != class_length-1: classification_str+="," + + return { + "frames": frames, + "inputTags": classification_str, + "scd": False # Required for VoTT and image processing? unknown if it's also used for video. + }, image_urls + + # For download function def create_starting_vott_json(image_id_to_urls, image_id_to_image_tags, existing_classifications_list): # "frames" @@ -100,6 +130,9 @@ def __create_tag_data_list(json_tag_list): return processed_tags +def __generate_uid(size=8, chars=string.ascii_lowercase + string.digits): + return ''.join(random.choice(chars) for _ in range(size)) + def __process_json_tag(json_tag): return { "x1": json_tag['x1'], From 0b40a069d83a7920663de3ded79b869fcaf51877 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Fri, 14 Dec 2018 10:57:55 -0800 Subject: [PATCH 118/145] Initial add of files needed to run training (#82) * Changes to get training running on DSVM * Added brief readmen --- train_vnext/README.md | 22 +++ train_vnext/active_learning_train.sh | 66 ++++++++ train_vnext/create_predictions.py | 186 ++++++++++++++++++++++ train_vnext/create_tf_record.py | 154 ++++++++++++++++++ train_vnext/map_validation.py | 225 +++++++++++++++++++++++++++ 5 files changed, 653 insertions(+) create mode 100644 train_vnext/README.md create mode 100644 train_vnext/active_learning_train.sh create mode 100644 train_vnext/create_predictions.py create mode 100644 train_vnext/create_tf_record.py create mode 100644 train_vnext/map_validation.py diff --git a/train_vnext/README.md b/train_vnext/README.md new file mode 100644 index 00000000..52974e9f --- /dev/null +++ b/train_vnext/README.md @@ -0,0 +1,22 @@ +# Training V2 + +This scripts in this directory are **__in progress__** and experimental. + +If one must run these scripts there are a few things one will need to do versus the regular training instructions. + +**Update the config.ini KEY 'python_file_directory' to point to this directory** + + For instance + +``` +python_file_directory=/home/abrig/active-learning-detect/train_vnext +``` + +**On the Training Machine (Azure DSVM) make sure your $PYTHONPATH includes:** + +``` +/opt/caffe/python:/opt/caffe2/build: +``` + + + diff --git a/train_vnext/active_learning_train.sh b/train_vnext/active_learning_train.sh new file mode 100644 index 00000000..9b4ce963 --- /dev/null +++ b/train_vnext/active_learning_train.sh @@ -0,0 +1,66 @@ +#!/bin/bash +#TODO: We would like to fail on first error but it kills the SSH connection +#set -e +# Source environmental variables +set -a +sed -i 's/\r//g' $1 +. $1 +set +a +# Updating vars in config file +envsubst < $1 > cur_config.ini + +# Update images from blob storage +echo "Updating Blob Folder" +# TODO: download at images to config_file["image_dir"] + +# Create TFRecord from images + csv file on blob storage +echo "Creating TF Record" +python ${python_file_directory}/create_tf_record.py cur_config.ini + +# Download tf model if it doesn't exist +if [ ! -d "$download_location/${model_name}" ]; then + mkdir -p $download_location + curl $tf_url --create-dirs -o ${download_location}/${model_name}.tar.gz + tar -xzf ${download_location}/${model_name}.tar.gz -C $download_location +fi +if [ ! -z "$optional_pipeline_url" ]; then + curl $optional_pipeline_url -o $pipeline_file +elif [ ! -f $pipeline_file ]; then + cp ${download_location}/${model_name}/pipeline.config $pipeline_file +fi + +echo "Making pipeline file from env vars" +temp_pipeline=${pipeline_file%.*}_temp.${pipeline_file##*.} +sed "s/${old_label_path//\//\\/}/${label_map_path//\//\\/}/g" $pipeline_file > $temp_pipeline +sed -i "s/${old_train_path//\//\\/}/${tf_train_record//\//\\/}/g" $temp_pipeline +sed -i "s/${old_val_path//\//\\/}/${tf_val_record//\//\\/}/g" $temp_pipeline +sed -i "s/${old_checkpoint_path//\//\\/}/${fine_tune_checkpoint//\//\\/}/g" $temp_pipeline +sed -i "s/$num_steps_marker[[:space:]]*[[:digit:]]*/$num_steps_marker $train_iterations/g" $temp_pipeline +sed -i "s/$num_examples_marker[[:space:]]*[[:digit:]]*/$num_examples_marker $eval_iterations/g" $temp_pipeline +sed -i "s/$num_classes_marker[[:space:]]*[[:digit:]]*/$num_classes_marker $num_classes/g" $temp_pipeline + +echo "" +echo "Pipeline file written to $temp_pipeline" +echo "" + +# Train model on TFRecord +echo "Training model" +rm -rf $train_dir +python ${tf_location_legacy}/train.py --train_dir=$train_dir --pipeline_config_path=$temp_pipeline --logtostderr + +# Export inference graph of model +echo "Exporting inference graph" +rm -rf $inference_output_dir +python ${tf_location}/export_inference_graph.py --input_type "image_tensor" --pipeline_config_path "$temp_pipeline" --trained_checkpoint_prefix "${train_dir}/model.ckpt-$train_iterations" --output_directory "$inference_output_dir" +# TODO: Validation on Model, keep track of MAP etc. +# Use inference graph to create predictions on untagged images +echo "Creating new predictions" +python ${python_file_directory}/create_predictions.py cur_config.ini +echo "Calculating performance" +python ${python_file_directory}/map_validation.py cur_config.ini +# Rename predictions and inference graph based on timestamp and upload + +# echo "Uploading new data" +# az storage blob upload --container-name $label_container_name --file ${inference_output_dir}/frozen_inference_graph.pb --name model_$(date +%s).pb --account-name $AZURE_STORAGE_ACCOUNT --account-key $AZURE_STORAGE_KEY +# az storage blob upload --container-name $label_container_name --file $untagged_output --name totag_$(date +%s).csv --account-name $AZURE_STORAGE_ACCOUNT --account-key $AZURE_STORAGE_KEY +# az storage blob upload --container-name $label_container_name --file $validation_output --name performance_$(date +%s).csv --account-name $AZURE_STORAGE_ACCOUNT --account-key $AZURE_STORAGE_KEY diff --git a/train_vnext/create_predictions.py b/train_vnext/create_predictions.py new file mode 100644 index 00000000..bb0f7dcf --- /dev/null +++ b/train_vnext/create_predictions.py @@ -0,0 +1,186 @@ +from functools import reduce +from pathlib import Path +from typing import List, Tuple, Dict, AbstractSet +import json +import cv2 +import csv +from collections import defaultdict +import numpy as np +import logging + +NUM_CHANNELS=3 +FOLDER_LOCATION=8 + +PREDICTIONS_SCHEMA = \ + ["filename", "class", "xmin","xmax","ymin","ymax","height","width","folder", "box_confidence", "image_confidence"] +PREDICTIONS_SCHEMA_NO_FOLDER =\ + ["filename", "class", "xmin","xmax","ymin","ymax","height","width","box_confidence", "image_confidence"] + +#name,prediction[CLASS_IDX],prediction[XMIN_IDX],prediction[XMAX_IDX],prediction[YMIN_IDX],prediction[YMAX_IDX],height,width,folder,prediction[BOX_CONFID_IDX], confidence +BOX_CONFID_IDX = 0 +CLASS_IDX = 1 +XMIN_IDX = 3 +XMAX_IDX = 5 +YMIN_IDX = 2 +YMAX_IDX = 4 + + +def calculate_confidence(predictions): + return min([float(prediction[0]) for prediction in predictions]) + +def make_csv_output(all_predictions: List[List[List[int]]], all_names: List[str], all_sizes: List[Tuple[int]], + untagged_output: str, tagged_output: str, file_set: AbstractSet, user_folders: bool = True): + ''' + Convert list of Detector class predictions as well as list of image sizes + into a dict matching the VOTT json format. + ''' + with open(tagged_output, 'w', newline='') as tagged_file, open(untagged_output, 'w', newline='') as untagged_file: + tagged_writer = csv.writer(tagged_file) + untagged_writer = csv.writer(untagged_file) + if user_folders: + tagged_writer.writerow(PREDICTIONS_SCHEMA) + untagged_writer.writerow(PREDICTIONS_SCHEMA) + else: + tagged_writer.writerow(PREDICTIONS_SCHEMA_NO_FOLDER) + untagged_writer.writerow(PREDICTIONS_SCHEMA_NO_FOLDER) + if user_folders: + for (folder, name), predictions, (height, width) in zip(all_names, all_predictions, all_sizes): + if not predictions: + predictions = [[0,"NULL",0,0,0,0]] + confidence = calculate_confidence(predictions) + for prediction in predictions: + (tagged_writer if name in file_set[folder] else untagged_writer).writerow([ + name, + prediction[CLASS_IDX],prediction[XMIN_IDX],prediction[XMAX_IDX], + prediction[YMIN_IDX],prediction[YMAX_IDX],height,width, + folder, + prediction[BOX_CONFID_IDX], confidence]) + else: + for name, predictions, (height,width) in zip(all_names, all_predictions, all_sizes): + if not predictions: + predictions = [[0,"NULL",0,0,0,0]] + confidence = calculate_confidence(predictions) + for prediction in predictions: + (tagged_writer if name in file_set else untagged_writer).writerow([ + name, + prediction[CLASS_IDX], prediction[XMIN_IDX], prediction[XMAX_IDX], + prediction[YMIN_IDX], prediction[YMAX_IDX], height, width, + prediction[BOX_CONFID_IDX], confidence]) + +def get_suggestions(detector, basedir: str, untagged_output: str, + tagged_output: str, cur_tagged: str, cur_tagging: str, min_confidence: float =.2, + image_size: Tuple=(1000,750), filetype: str="*.jpg", minibatchsize: int=50, + user_folders: bool=True): + '''Gets suggestions from a given detector and uses them to generate VOTT tags + + Function inputs an instance of the Detector class along with a directory, + and optionally a confidence interval, image size, and tag information (name and color). + It returns a list of subfolders in that directory sorted by how confident the + given Detector was was in predicting bouding boxes on files within that subfolder. + It also generates VOTT JSON tags corresponding to the predicted bounding boxes. + The optional confidence interval and image size correspond to the matching optional + arguments to the Detector class + ''' + basedir = Path(basedir) + CV2_COLOR_LOAD_FLAG = 1 + all_predictions = [] + if user_folders: + # TODO: Cross reference with ToTag + # download latest tagging and tagged + if cur_tagged is not None: + with open(cur_tagged, 'r') as file: + reader = csv.reader(file) + next(reader, None) + all_tagged = list(reader) + if cur_tagging is not None: + with open(cur_tagging, 'r') as file: + reader = csv.reader(file) + next(reader, None) + all_tagged.extend(list(reader)) + already_tagged = defaultdict(set) + for row in all_tagged: + already_tagged[row[FOLDER_LOCATION]].add(row[0]) + subdirs = [subfile for subfile in basedir.iterdir() if subfile.is_dir()] + all_names = [] + all_image_files = [] + all_sizes = [] + for subdir in subdirs: + cur_image_names = list(subdir.rglob(filetype)) + all_image_files += [str(image_name) for image_name in cur_image_names] + foldername = subdir.stem + all_names += [(foldername, filename.name) for filename in cur_image_names] + # Reversed because numpy is row-major + all_sizes = [cv2.imread(image, CV2_COLOR_LOAD_FLAG).shape[:2] for image in all_image_files] + all_images = np.zeros((len(all_image_files), *reversed(image_size), NUM_CHANNELS), dtype=np.uint8) + for curindex, image in enumerate(all_image_files): + all_images[curindex] = cv2.resize(cv2.imread(image, CV2_COLOR_LOAD_FLAG), image_size) + all_predictions = detector.predict(all_images, min_confidence=min_confidence) + else: + with open(cur_tagged, 'r') as file: + reader = csv.reader(file) + next(reader, None) + already_tagged = {row[0] for row in reader} + logging.info("\nFound {} rows in tagged data".format(len(already_tagged))) + with open(cur_tagging, 'r') as file: + reader = csv.reader(file) + next(reader, None) + already_tagged |= {row[0] for row in reader} + logging.info("\nIncreased row count to {} for based on 'in progress' data".format(len(already_tagged))) + all_image_files = list(basedir.rglob(filetype)) + logging.info("\nFound '{}' images of EXACT filetype '{}'".format(len(all_image_files),filetype)) + all_names = [filename.name for filename in all_image_files] + all_sizes = [cv2.imread(str(image), CV2_COLOR_LOAD_FLAG).shape[:2] for image in all_image_files] + all_images = np.zeros((len(all_image_files), *reversed(image_size), NUM_CHANNELS), dtype=np.uint8) + for curindex, image in enumerate(all_image_files): + all_images[curindex] = cv2.resize(cv2.imread(str(image), CV2_COLOR_LOAD_FLAG), image_size) + all_predictions = detector.predict(all_images, batch_size=2, min_confidence=min_confidence) + make_csv_output(all_predictions, all_names, all_sizes, untagged_output, tagged_output, already_tagged, user_folders) + +if __name__ == "__main__": + import sys + import os + train_dir = str(Path.cwd().parent / "train") + if train_dir not in sys.path: + sys.path.append(train_dir) + from tf_detector import TFDetector + import re + + #Set up logging + console = logging.StreamHandler() + log = logging.getLogger() + log.setLevel(os.environ.get("LOGLEVEL",'DEBUG')) #Set in config + log.addHandler(console) + + # Allow us to import utils + config_dir = str(Path.cwd().parent / "utils") + if config_dir not in sys.path: + sys.path.append(config_dir) + from config import Config + if len(sys.argv)<2: + raise ValueError("Need to specify config file") + config_file = Config.parse_file(sys.argv[1]) + + image_dir = config_file["image_dir"] + untagged_output = config_file["untagged_output"] + tagged_output = config_file["tagged_predictions"] + classification_names = config_file["classes"].split(",") + inference_graph_path = str(Path(config_file["inference_output_dir"])/"frozen_inference_graph.pb") + supported_file_type = config_file["filetype"] + + #TODO: Make sure $PYTHONPATH has this in it --> /opt/caffe/python:/opt/caffe2/build: + + #TODO: make sure tagged.csv exists + cur_tagged = None + cur_tagged = "../train/tagged.csv" #HACK: We expect this file to be in this script directory + + # These are the "tagging in progress" labels. Meaning they will have null labels and class names + cur_tagging = None + cur_tagging = "../train/tagging.csv" #HACK: We expect this file to be in this script directory + + logging.info("\n****Initializing TF Detector...****") + cur_detector = TFDetector(classification_names, inference_graph_path) + logging.info("\n****Initializing TF Detector DONE****") + + logging.info("\n****Creating Suggestions****") + get_suggestions(cur_detector, image_dir, untagged_output, tagged_output, cur_tagged, cur_tagging, filetype=supported_file_type, min_confidence=float(config_file["min_confidence"]), user_folders=config_file["user_folders"]=="True") + logging.info("\n****Creating Suggestions DONE****") diff --git a/train_vnext/create_tf_record.py b/train_vnext/create_tf_record.py new file mode 100644 index 00000000..ef7fabfb --- /dev/null +++ b/train_vnext/create_tf_record.py @@ -0,0 +1,154 @@ +from collections import defaultdict +import tensorflow as tf +import numpy as np +import csv +import hashlib +from pathlib import Path +import re +import sys +import os +import logging + +FOLDER_LOCATION = 8 +HEIGHT_LOCATION = 6 +WIDTH_LOCATION = 7 + +def int64_feature(value): + return tf.train.Feature(int64_list=tf.train.Int64List(value=value)) + +def bytes_feature(value): + return tf.train.Feature(bytes_list=tf.train.BytesList(value=value)) + +def float_feature(value): + return tf.train.Feature(float_list=tf.train.FloatList(value=value)) + +def create_tf_example(predictions, raw_img, tag_map): + filename = predictions[0][0] + height = int(predictions[0][HEIGHT_LOCATION]) + width = int(predictions[0][WIDTH_LOCATION]) + key = hashlib.sha256(raw_img).hexdigest() + xmin = [] + ymin = [] + xmax = [] + ymax = [] + classes = [] + classes_text = [] + truncated = [] + poses = [] + difficult_obj = [] + for prediction in predictions: + if prediction[1]!="NULL": + ymin.append(float(prediction[4])) + xmin.append(float(prediction[2])) + ymax.append(float(prediction[5])) + xmax.append(float(prediction[3])) + tag_name = prediction[1] + classes_text.append(tag_name.encode('utf8')) + classes.append(tag_map[tag_name]) + truncated.append(0) + poses.append("Unspecified".encode('utf8')) + difficult_obj.append(0) + + example = tf.train.Example(features=tf.train.Features(feature={ + 'image/height': int64_feature([height]), + 'image/width': int64_feature([width]), + 'image/filename': bytes_feature([ + filename.encode('utf8')]), + 'image/source_id': bytes_feature([ + filename.encode('utf8')]), + 'image/key/sha256': bytes_feature([key.encode('utf8')]), + 'image/encoded': bytes_feature([raw_img]), + 'image/format': bytes_feature(['jpeg'.encode('utf8')]), + 'image/object/bbox/xmin': float_feature(xmin), + 'image/object/bbox/xmax': float_feature(xmax), + 'image/object/bbox/ymin': float_feature(ymin), + 'image/object/bbox/ymax': float_feature(ymax), + 'image/object/class/text': bytes_feature(classes_text), + 'image/object/class/label': int64_feature(classes), + 'image/object/difficult': int64_feature(difficult_obj), + 'image/object/truncated': int64_feature(truncated), + 'image/object/view': bytes_feature(poses), + })) + return example + +def create_tf_record(pred_file, record_file, image_loc, user_folders, split_names=["train","val"], + split_percent=[.7,.3], tag_names = ["stamp"], test_file=None): + + record_file = Path(record_file) + with open(pred_file, 'r') as file: + reader = csv.reader(file) + next(reader, None) + all_preds = list(reader) + + all_files = defaultdict(list) + if test_file is not None: + with open(test_file, 'r') as file: + reader = csv.reader(file) + next(reader, None) + all_test = set((row[0] for row in reader)) + for row in all_preds: + if row[0] not in all_test: + all_files[row[0]].append(row) + else: + for row in all_preds: + all_files[row[0]].append(row) + + rand_list = list(all_files) + np.random.shuffle(rand_list) + split_percent = np.cumsum(split_percent) + split_percent = split_percent[:-1] + split_percent *= len(rand_list) + split_percent = split_percent.round().astype(np.int) + split_preds = np.split(rand_list,split_percent) + + tag_map = {name: index for index, name in enumerate(tag_names, 1)} + + for name, filenames in zip(split_names, split_preds): + tf_record_file_path = "{}_{}".format(record_file.with_suffix(''), name) + record_file.suffix + logging.info("Creating TF record {}".format(tf_record_file_path)) + writer = tf.python_io.TFRecordWriter(tf_record_file_path) + for filename in filenames: + predictions = all_files[filename] + if user_folders: + file_loc = str(Path(image_loc)/predictions[0][FOLDER_LOCATION]/filename) + else: + file_loc = str(Path(image_loc)/filename) + logging.debug("Using image at {}".format(file_loc)) + with open(file_loc, "rb") as img_file: + raw_img = img_file.read() + tf_example = create_tf_example(predictions, raw_img, tag_map) + writer.write(tf_example.SerializeToString()) + + writer.close() + +if __name__ == "__main__": + import sys + import os + # Allow us to import utils + config_dir = str(Path.cwd().parent / "utils") + if config_dir not in sys.path: + sys.path.append(config_dir) + from config import Config + if len(sys.argv)<2: + raise ValueError("Need to specify config file") + config_file = Config.parse_file(sys.argv[1]) + + log = logging.getLogger() + log.setLevel(os.environ.get("LOGLEVEL", "INFO")) # or get the log level from the config file + + tagged_csv = config_file["tagged_output"] + tf_record_output = config_file["tf_record_location"] + all_downloaded_images = config_file["image_dir"] + use_folders = False #config_file["user_folders"] + list_of_class_names = config_file["classes"].split(",") + + if not os.path.isfile(tagged_csv): + print("Annotated labels file doesn't exist. Run set up to download all dependent training data") + + test_file_path = None + # if os.path.isfile(config_file["test_output"]): + # print("Test file exists") + # test_file_path = config_file["test_output"] + + create_tf_record(tagged_csv,tf_record_output,all_downloaded_images, + use_folders=="True", tag_names=list_of_class_names, test_file=test_file_path) diff --git a/train_vnext/map_validation.py b/train_vnext/map_validation.py new file mode 100644 index 00000000..d358e402 --- /dev/null +++ b/train_vnext/map_validation.py @@ -0,0 +1,225 @@ +import numpy as np +import cv2 +import csv +from collections import defaultdict +from functools import partial +from pathlib import Path +from pandas._libs.hashtable import unique_label_indices +HEIGHT, WIDTH = 1000, 1000 +FILENAME_LOCATION=0 +FOLDER_LOCATION=8 +CLASS_LOCATION=1 +PREDS_START=2 +PREDS_END=5 +BOX_CONFIDENCE_LOCATION=-2 + +def get_map_for_class(zipped_data_arr, min_ious=np.linspace(.50, 0.95, 10, endpoint=True), + avg_recalls = np.linspace(0.00, 1.00, 101, endpoint=True), nms_iou=.7): + # Used linspace over arange for min_ious/avg_recalls due to issues with endpoints + all_confs = [] + all_correct_preds = [] + num_total_detections = 0 + num_total_gtruths = 0 + for ground_arr, detector_arr in zipped_data_arr: + num_gtruths = len(ground_arr) + if not detector_arr: + num_total_gtruths+=num_gtruths + continue + detector_arr = np.asarray(detector_arr, dtype=np.float64) + # Sort by descending confidence, use mergesort to match COCO evaluation + detector_arr = detector_arr[detector_arr[:,-1].argsort(kind='mergesort')[::-1]] + det_x_min, det_x_max, det_y_min, det_y_max, confs = detector_arr.transpose() + if nms_iou is not None: + # Code for NMS + all_indices_to_keep = [] + cur_indices_to_keep = np.arange(len(detector_arr)) + # Repeat until no detections left below overlap threshold + while cur_indices_to_keep.size>1: + # Add the most confident element + all_indices_to_keep.append(cur_indices_to_keep[0]) + cur_x_min = det_x_min[cur_indices_to_keep] + cur_x_max = det_x_max[cur_indices_to_keep] + cur_y_min = det_y_min[cur_indices_to_keep] + cur_y_max = det_y_max[cur_indices_to_keep] + intersect_widths = (np.minimum(cur_x_max[0], cur_x_max[1:]) - np.maximum(cur_x_min[0], cur_x_min[1:])).clip(min=0) + intersect_heights = (np.minimum(cur_y_max[0], cur_y_max[1:]) - np.maximum(cur_y_min[0], cur_y_min[1:])).clip(min=0) + intersect_areas = intersect_widths*intersect_heights + # Inclusion exclusion principle! + union_areas = ((cur_x_max[0]-cur_x_min[0])*(cur_y_max[0]-cur_y_min[0]) + (cur_x_max[1:]-cur_x_min[1:])*(cur_y_max[1:]-cur_y_min[1:])) - intersect_areas + # Just in case a ground truth has zero area + cur_ious = np.divide(intersect_areas, union_areas, out=union_areas, where=union_areas!=0) + # Keep appending [0] to a list + # Just say cur_indices = np where cur_ious < nms_iou + cur_indices_to_keep = cur_indices_to_keep[1:] + cur_indices_to_keep = np.intersect1d(cur_indices_to_keep, cur_indices_to_keep[np.nonzero(cur_ious < nms_iou)[0]], assume_unique=True) + if cur_indices_to_keep.size==1: + all_indices_to_keep.append(cur_indices_to_keep[0]) + detector_arr = detector_arr[np.asarray(all_indices_to_keep)] + det_x_min, det_x_max, det_y_min, det_y_max, confs = detector_arr.transpose() + num_detections = len(detector_arr) + if not ground_arr: + num_total_detections+=num_detections + all_confs.append(confs) + continue + ground_arr = np.asarray(ground_arr, dtype=np.float64) + ground_x_min, ground_x_max, ground_y_min, ground_y_max = ground_arr.transpose() + # Clip negative since negative implies no overlap + intersect_widths = (np.minimum(det_x_max[:, np.newaxis], ground_x_max) - np.maximum(det_x_min[:, np.newaxis], ground_x_min)).clip(min=0) + intersect_heights = (np.minimum(det_y_max[:, np.newaxis], ground_y_max) - np.maximum(det_y_min[:, np.newaxis], ground_y_min)).clip(min=0) + intersect_areas = intersect_widths*intersect_heights + # Inclusion exclusion principle! + union_areas = ((det_x_max-det_x_min)*(det_y_max-det_y_min))[:, np.newaxis] + ((ground_x_max-ground_x_min)*(ground_y_max-ground_y_min)) - intersect_areas + # Just in case a ground truth has zero area + iou = np.divide(intersect_areas, union_areas, out=union_areas, where=union_areas!=0) + # Defined best ground truth as one with highest IOU. This is an array of size num_detections, where + # best_gtruths[i] is the index of the ground truth to which prediction i is most similar (highest IOU) + best_gtruths = np.argmax(iou, axis=1) + # valid_preds is a generator where each element is a numpy int array. Each numpy array corresponds to + # a min_iou in the min_ious array, and has indices corresponding to the predictions whose + # prediction-ground truth pairs have IOU greater than that min_iou. + valid_preds = map(np.nonzero, iou[np.arange(num_detections), best_gtruths]>min_ious[:, np.newaxis]) + # + ## Useful for standard precision/recall metrics + # num_true_positives = np.count_nonzero(np.bincount(best_gtruths[valid_preds])) + # num_false_positives = num_detections - detected_gtruths + # num_false_negatives = num_gtruths - detected_gtruths + # + # best_gtruths[valid_preds] uses the previously calculated valid_preds array to return an array + # containing the ground truths indices for each prediction whenever the ground truth-prediction + # IOU was greater than min_iou. Then unique_label_indices is used to find the leftmost occuring + # ground truth index for each ground truth index, which corresponds to finding the true positives + # (since we only consider the highest confidence prediction for each ground truth to be a true + # positive, rest are false positives) + # Note that pandas unique_label_indices is equivalent to np.unique(labels, return_index=True)[1] but + # is considerably faster due to using a hashtable instead of sorting + # Once the indices of the true positive predictions are found in the smaller array containing only + # predictions with IOU > min_iou, they are converted back into indices for the original array + # using valid_pred. + correct_preds = [valid_pred[0][unique_label_indices(best_gtruths[valid_pred[0]])]+num_total_detections for valid_pred in valid_preds] + all_correct_preds.append(correct_preds) + all_confs.append(confs) + num_total_detections += num_detections + num_total_gtruths += num_gtruths + # Edge case of no predictions for a class + if not all_confs: + return 0 + # Concatenates all predictions and confidences together to find class MAP + all_confs = np.concatenate(all_confs) + all_correct_preds = [np.concatenate(cur_pred) for cur_pred in zip(*all_correct_preds)] + # Sets only correct prediction indices to true, rest to false. + true_positives = np.zeros((len(min_ious), num_total_detections), dtype=bool) + for iou_index, positive_locs in enumerate(all_correct_preds): + true_positives[iou_index][positive_locs]=True + # Mergesort is chosen to be consistent with coco/matlab results + sort_order = all_confs.argsort(kind='mergesort')[::-1] + true_positives = true_positives[:,sort_order] + # Keeps track of number of true positives until each given point + all_true_positives = np.cumsum(true_positives, axis=1) + # PASCAL VOC 2012 + if avg_recalls is None: + # Zero pad both sides to calculate area under curve + precision = np.zeros((len(min_ious), num_total_detections+2), dtype=np.float64) + # Pad one side with zeros and the other with ones for area under curve + recall = np.zeros((len(min_ious), num_total_detections+2), dtype=np.float64) + recall[:,-1] = np.ones(len(min_ious), dtype=np.float64) + # In python >=3 this is equivalent to np.true_divide + precision[:,1:-1] = all_true_positives / np.arange(1, num_total_detections+1) + # Makes each element in precision list max of all elements to right (ignores endpoints) + precision[:,1:-1] = np.maximum.accumulate(precision[:,-2:0:-1], axis=1)[:,::-1] + recall[:,1:-1] = all_true_positives / num_total_gtruths + # Calculate area under P-R curve for each IOU + # Should only be one IOU at .5 for PASCAL + all_areas = [] + for cur_recall, cur_precision in zip(recall, precision): + # Find indices where value of recall changes + change_points = np.nonzero(cur_recall[1:]!=cur_recall[:-1])[0] + # Calculate sum of dw * dh as area and append to all areas + all_areas.append(np.sum((cur_recall[change_points+1] - cur_recall[change_points]) * cur_precision[change_points+1])) + return np.mean(all_areas) + # PASCAL VOC 2007 + else: + # The extra zero is to deal with a recall larger than is achieved by model + precision = np.zeros((len(min_ious), num_total_detections+1), dtype=np.float64) + # In python >=3 this is equivalent to np.true_divide + precision[:,:-1] = all_true_positives / np.arange(1, num_total_detections+1) + # Makes each element in precision list max of all elements to right (extra zero at right doesn't matter) + precision = np.maximum.accumulate(precision[:,::-1], axis=1)[:,::-1] + recall = all_true_positives / num_total_gtruths + # For each recall, finds leftmost index (i.e. largest precision) greater than it + indices_to_average = np.apply_along_axis(np.searchsorted, 1, recall, avg_recalls) + # Finds matching largest prediction for each recall and turns it into an array + precs_to_average = precision[np.arange(len(precision))[:,np.newaxis], indices_to_average] + # Returns average precision over each recall and over each IOU. Can specify an axis + # if separate average precision is wanted for each IOU (e.g. to do more precise statistics) + return np.mean(precs_to_average) + +def detectortest(predictions, ground_truths, output, user_folders): + '''Inputs test_detector that follows the Detector ABC, images which is + a list of image filenames, image_size which is the resized image size + necessary for inputting and ground_truths which is the correct labels + for the images. Optionally takes in min_fscore. + Outputs a boolean based on whether or not the F1-Score + of test_detector was greater than min_fscore''' + # First defaultdict corresponds to class name, inner one corresponds to filename, first list in tuple + # corresponds to ground truths for that class+file and second list corresponds to predictions + all_boxes = defaultdict(lambda: defaultdict(lambda: ([],[]))) + files_in_ground_truth = set() + with open(ground_truths, 'r') as truths_file: + reader = csv.reader(truths_file) + next(reader, None) + if user_folders: + for row in reader: + all_boxes[row[CLASS_LOCATION]][(row[FOLDER_LOCATION], row[FILENAME_LOCATION])][0].append(row[PREDS_START:PREDS_END+1]) + files_in_ground_truth.add((row[FOLDER_LOCATION], row[FILENAME_LOCATION])) + else: + for row in reader: + all_boxes[row[CLASS_LOCATION]][row[FILENAME_LOCATION]][0].append(row[PREDS_START:PREDS_END+1]) + files_in_ground_truth.add(row[FILENAME_LOCATION]) + with open(predictions, 'r') as preds_file: + reader = csv.reader(preds_file) + next(reader, None) + if user_folders: + for row in reader: + if (row[FOLDER_LOCATION], row[FILENAME_LOCATION]) in files_in_ground_truth: + all_boxes[row[CLASS_LOCATION]][(row[FOLDER_LOCATION], row[FILENAME_LOCATION])][1].append(row[PREDS_START:PREDS_END+1]+row[BOX_CONFIDENCE_LOCATION:BOX_CONFIDENCE_LOCATION+1]) + else: + for row in reader: + if row[FILENAME_LOCATION] in files_in_ground_truth: + all_boxes[row[CLASS_LOCATION]][row[FILENAME_LOCATION]][1].append(row[PREDS_START:PREDS_END+1]+row[BOX_CONFIDENCE_LOCATION:BOX_CONFIDENCE_LOCATION+1]) + all_class_maps = {} + for classname, all_file_preds in all_boxes.items(): + class_map = get_map_for_class(all_file_preds.values(), avg_recalls=None, min_ious=np.asarray([.5])) + all_class_maps[classname] = class_map + # Calculates average over all classes. This is the mAP for the test set. + avg_map = sum(all_class_maps.values())/len(all_class_maps) if all_class_maps else 0 + print('Class Name: Average, AP: {}'.format(avg_map)) + print('\n'.join('Class Name: {}, AP: {}'.format(*classdata) for classdata in all_class_maps.items())) + with open(output, 'w') as out_file: + csv_writer=csv.writer(out_file) + csv_writer.writerow(['Class Name','AP']) + csv_writer.writerow(['Average', avg_map]) + for classdata in all_class_maps.items(): + csv_writer.writerow(classdata) +if __name__ == "__main__": + import re + import sys + import os + # Allow us to import utils + config_dir = str(Path.cwd().parent / "utils") + if config_dir not in sys.path: + sys.path.append(config_dir) + from config import Config + if len(sys.argv)<2: + raise ValueError("Need to specify config file") + config_file = Config.parse_file(sys.argv[1]) + + test_file = config_file["test_output"] #Can be null + pre_training_annotations = config_file["tagged_output"] + post_training_annotations = config_file["tagged_predictions"] + validation_output_path = config_file["validation_output"] + + if os.path.isfile(test_file): + detectortest(post_training_annotations, test_file, validation_output_path, config_file["user_folders"]=="True") + else: + # TODO: If we keep track of val/train we can calc prec/f-score for that too + detectortest(post_training_annotations, pre_training_annotations, validation_output_path, config_file["user_folders"]=="True") From e793f0b8220d97fa8275cbf4df98d472551999b0 Mon Sep 17 00:00:00 2001 From: Samiya Date: Fri, 14 Dec 2018 11:20:30 -0800 Subject: [PATCH 119/145] Post training upload prediction labels (#83) * Code to upload post training prediction labels and get class mapping * Remove unnecessary logging * Pass in training id as query param * CR feedback * Refactored models out of db_access_v2 --- functions/pipeline/classification/__init__.py | 45 ++++++++++ .../pipeline/classification/function.json | 20 +++++ functions/pipeline/classification/host.json | 3 + functions/pipeline/labels/__init__.py | 43 ++++++--- functions/pipeline/labels/function.json | 3 +- .../pipeline/shared/db_access/__init__.py | 3 +- .../pipeline/shared/db_access/db_access_v2.py | 88 +------------------ functions/pipeline/shared/db_access/models.py | 84 ++++++++++++++++++ train/training.py | 53 ++++++++++- 9 files changed, 240 insertions(+), 102 deletions(-) create mode 100644 functions/pipeline/classification/__init__.py create mode 100644 functions/pipeline/classification/function.json create mode 100644 functions/pipeline/classification/host.json create mode 100644 functions/pipeline/shared/db_access/models.py diff --git a/functions/pipeline/classification/__init__.py b/functions/pipeline/classification/__init__.py new file mode 100644 index 00000000..288c47f1 --- /dev/null +++ b/functions/pipeline/classification/__init__.py @@ -0,0 +1,45 @@ +import logging +import azure.functions as func +import json +from ..shared.db_provider import get_postgres_provider +from ..shared.db_access import ImageTagDataAccess, ImageTagState, PredictionLabel + + +def main(req: func.HttpRequest) -> func.HttpResponse: + logging.info('Python HTTP trigger function processed a request.') + # setup response object + headers = { + "content-type": "application/json" + } + user_name = req.params.get('userName') + classes_list = req.params.get("className") + if not classes_list: + return func.HttpResponse( + status_code=401, + headers=headers, + body=json.dumps({"error": "invalid classes list given or omitted"}) + ) + elif not user_name: + return func.HttpResponse( + status_code=401, + headers=headers, + body=json.dumps({"error": "invalid userName given or omitted"}) + ) + try: + # DB configuration + data_access = ImageTagDataAccess(get_postgres_provider()) + user_id = data_access.create_user(user_name) + + class_mapping = data_access.get_classification_map(set(classes_list.split(',')), user_id) + logging.debug("Got classes mapping: " + str(class_mapping)) + + return func.HttpResponse( + status_code=200, + headers=headers, + body=json.dumps(class_mapping) + ) + except Exception as e: + return func.HttpResponse( + "exception:" + str(e), + status_code=500 + ) \ No newline at end of file diff --git a/functions/pipeline/classification/function.json b/functions/pipeline/classification/function.json new file mode 100644 index 00000000..f6425972 --- /dev/null +++ b/functions/pipeline/classification/function.json @@ -0,0 +1,20 @@ +{ + "scriptFile": "__init__.py", + "bindings": [ + { + "authLevel": "anonymous", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "get" + ] + }, + { + "type": "http", + "direction": "out", + "name": "$return" + } + ] + } + \ No newline at end of file diff --git a/functions/pipeline/classification/host.json b/functions/pipeline/classification/host.json new file mode 100644 index 00000000..1c8bb37a --- /dev/null +++ b/functions/pipeline/classification/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" + } \ No newline at end of file diff --git a/functions/pipeline/labels/__init__.py b/functions/pipeline/labels/__init__.py index 21dfa20a..a55eb59c 100644 --- a/functions/pipeline/labels/__init__.py +++ b/functions/pipeline/labels/__init__.py @@ -1,9 +1,10 @@ import logging import jsonpickle +from collections import namedtuple import azure.functions as func import json from ..shared.db_provider import get_postgres_provider -from ..shared.db_access import ImageTagDataAccess, ImageTagState +from ..shared.db_access import ImageTagDataAccess, ImageTagState, PredictionLabel def main(req: func.HttpRequest) -> func.HttpResponse: @@ -30,19 +31,37 @@ def main(req: func.HttpRequest) -> func.HttpResponse: # TODO: Support POST http calls by merging with the existing "Upload" API. # Ideally GET http calls rerurn all human annotated labels. # POST calls save all human annotated labels - logging.debug("User '{0}' requested labels".format(user_name)) + logging.debug("User '{0}' invoked labels api".format(user_name)) - # Note: Currently we return all human annotated labels since TAGGING.CSV requires all rows - # No use case to return predicted labels at the moment. - labels = data_access.get_labels() + logging.info("Method = " + str(req.method)) + if req.method == "GET": + # Note: Currently we return all human annotated labels since TAGGING.CSV requires all rows + # No use case to return predicted labels at the moment. + labels = data_access.get_labels() - #Encode the complex object nesting - content = jsonpickle.encode(labels,unpicklable=False) - return func.HttpResponse( - status_code=200, - headers=headers, - body=content - ) + #Encode the complex object nesting + content = jsonpickle.encode(labels,unpicklable=False) + return func.HttpResponse( + status_code=200, + headers=headers, + body=content + ) + elif req.method == "POST": + payload = json.loads(req.get_body()) + training_id = req.params.get("trainingId") + if not training_id: + return func.HttpResponse( + status_code=401, + headers=headers, + body=json.dumps({"error": "invalid training_id given or omitted"}) + ) + training_id = int(training_id) + payload_json = [namedtuple('PredictionLabel', item.keys())(*item.values()) for item in payload] + data_access.add_prediction_labels(payload_json, training_id) + return func.HttpResponse( + status_code=200, + headers=headers + ) except Exception as e: return func.HttpResponse( "exception:" + str(e), diff --git a/functions/pipeline/labels/function.json b/functions/pipeline/labels/function.json index f6425972..a33d0f5d 100644 --- a/functions/pipeline/labels/function.json +++ b/functions/pipeline/labels/function.json @@ -7,7 +7,8 @@ "direction": "in", "name": "req", "methods": [ - "get" + "get", + "post" ] }, { diff --git a/functions/pipeline/shared/db_access/__init__.py b/functions/pipeline/shared/db_access/__init__.py index 3b8b60cf..7e3666d2 100644 --- a/functions/pipeline/shared/db_access/__init__.py +++ b/functions/pipeline/shared/db_access/__init__.py @@ -1 +1,2 @@ -from .db_access_v2 import ImageTagDataAccess, ImageTag, ImageInfo, ImageTagState, ImageLabel \ No newline at end of file +from .models import ImageTag, ImageInfo, ImageTagState, ImageLabel, PredictionLabel +from .db_access_v2 import ImageTagDataAccess \ No newline at end of file diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index 51fe969b..bfc2da4f 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -1,97 +1,11 @@ import string import logging import random -from enum import IntEnum, unique import getpass import itertools import json from ..db_provider import DatabaseInfo, PostGresProvider - - -@unique -class ImageTagState(IntEnum): - NOT_READY = 0 - READY_TO_TAG = 1 - TAG_IN_PROGRESS = 2 - COMPLETED_TAG = 3 - INCOMPLETE_TAG = 4 - ABANDONED = 5 - -# An entity class for a VOTT image -class ImageInfo(object): - def __init__(self, image_name, image_location, height, width): - self.image_name = image_name - self.image_location = image_location - self.height = height - self.width = width - - -# Entity class for Tags stored in DB -class ImageTag(object): - def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names): - self.image_id = image_id - self.x_min = x_min - self.x_max = x_max - self.y_min = y_min - self.y_max = y_max - self.classification_names = classification_names - - @staticmethod - def fromJson(dictionary): - image_tag = ImageTag(dictionary["image_id"], dictionary["x_min"], dictionary["x_max"], dictionary["y_min"], dictionary["y_max"], dictionary["classification_names"]) - return image_tag - -#This class doesn't have box and image confidence because they are human curated labels -class AnnotatedLabel(object): - def __init__(self, image_id, classification_id, x_min, x_max, y_min, y_max): - self.image_id = image_id - self.x_min = x_min - self.x_max = x_max - self.y_min = y_min - self.y_max = y_max - self.classification_id = classification_id - -# TODO: Think about moving all this schemas to a separate file -class ImageLabel(object): - def __init__(self,image_id, imagelocation,image_height: int, image_width: int, labels: list, user_folder=None): - self.image_id = image_id - self.imagelocation = imagelocation - self.image_height = image_height - self.image_width = image_width - self.user_folder = user_folder - self.labels = labels - - @staticmethod - def fromJson(dictionary): - tags = [] - if (isinstance(dictionary["labels"], dict)): - tags = [ImageTag.fromJson(dictionary["labels"])] - elif (isinstance(dictionary["labels"], list)): - tags = [ImageTag.fromJson(label) for label in dictionary["labels"]] - - image_label = ImageLabel(dictionary["image_id"], dictionary["imagelocation"], dictionary["image_height"], dictionary["image_width"], tags, dictionary.get("user_folder")) - return image_label - - -class Tag(object): - def __init__(self,classificationname, x_min: float, x_max: float, y_min: float, y_max: float): - self.x_min = x_min - self.x_max = x_max - self.y_min = y_min - self.y_max = y_min - self.classificationname = classificationname - -class PredictionLabel(AnnotatedLabel): - def __init__(self, training_id, image_id, classification_id, x_min, x_max, y_min, y_max, - image_height, image_width, box_confidence=0, image_confidence= 0): - super().__init__(image_id, classification_id, x_min, x_max, y_min, y_max) - self.training_id = training_id - self.image_height = image_height - self.image_width = image_width - self.box_confidence = box_confidence - self.image_confidence = image_confidence - - +from .models import ImageTag, ImageLabel, ImageTagState, AnnotatedLabel, Tag, ImageInfo, PredictionLabel class ImageTagDataAccess(object): def __init__(self, db_provider): diff --git a/functions/pipeline/shared/db_access/models.py b/functions/pipeline/shared/db_access/models.py new file mode 100644 index 00000000..209ce058 --- /dev/null +++ b/functions/pipeline/shared/db_access/models.py @@ -0,0 +1,84 @@ +from enum import IntEnum, unique + +@unique +class ImageTagState(IntEnum): + NOT_READY = 0 + READY_TO_TAG = 1 + TAG_IN_PROGRESS = 2 + COMPLETED_TAG = 3 + INCOMPLETE_TAG = 4 + ABANDONED = 5 + +# An entity class for a VOTT image +class ImageInfo(object): + def __init__(self, image_name, image_location, height, width): + self.image_name = image_name + self.image_location = image_location + self.height = height + self.width = width + + +# Entity class for Tags stored in DB +class ImageTag(object): + def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names): + self.image_id = image_id + self.x_min = x_min + self.x_max = x_max + self.y_min = y_min + self.y_max = y_max + self.classification_names = classification_names + + @staticmethod + def fromJson(dictionary): + image_tag = ImageTag(dictionary["image_id"], dictionary["x_min"], dictionary["x_max"], dictionary["y_min"], dictionary["y_max"], dictionary["classification_names"]) + return image_tag + +#This class doesn't have box and image confidence because they are human curated labels +class AnnotatedLabel(object): + def __init__(self, image_id, classification_id, x_min, x_max, y_min, y_max): + self.image_id = image_id + self.x_min = x_min + self.x_max = x_max + self.y_min = y_min + self.y_max = y_max + self.classification_id = classification_id + + +class ImageLabel(object): + def __init__(self,image_id, imagelocation,image_height: int, image_width: int, labels: list, user_folder=None): + self.image_id = image_id + self.imagelocation = imagelocation + self.image_height = image_height + self.image_width = image_width + self.user_folder = user_folder + self.labels = labels + + @staticmethod + def fromJson(dictionary): + tags = [] + if (isinstance(dictionary["labels"], dict)): + tags = [ImageTag.fromJson(dictionary["labels"])] + elif (isinstance(dictionary["labels"], list)): + tags = [ImageTag.fromJson(label) for label in dictionary["labels"]] + + image_label = ImageLabel(dictionary["image_id"], dictionary["imagelocation"], dictionary["image_height"], dictionary["image_width"], tags, dictionary.get("user_folder")) + return image_label + + +class Tag(object): + def __init__(self,classificationname, x_min: float, x_max: float, y_min: float, y_max: float): + self.x_min = x_min + self.x_max = x_max + self.y_min = y_min + self.y_max = y_min + self.classificationname = classificationname + +class PredictionLabel(AnnotatedLabel): + def __init__(self, training_id, image_id, classification_id, x_min, x_max, y_min, y_max, + image_height, image_width, box_confidence=0, image_confidence= 0): + super().__init__(image_id, classification_id, x_min, x_max, y_min, y_max) + self.training_id = training_id + self.image_height = image_height + self.image_width = image_width + self.box_confidence = box_confidence + self.image_confidence = image_confidence diff --git a/train/training.py b/train/training.py index a32faf32..17942727 100644 --- a/train/training.py +++ b/train/training.py @@ -8,7 +8,8 @@ import urllib.request import sys import time -from functions.pipeline.shared.db_access import ImageTagState +import jsonpickle +from functions.pipeline.shared.db_access import ImageTagState, PredictionLabel CONFIG_PATH = os.environ.get('ALCONFIG', None) @@ -93,6 +94,56 @@ def convert_labels_to_csv(data, tagging_output_file_path): print("An error occurred attempting to write to file at {0}:\n\n{1}".format(tagging_output_file_path,e)) raise +def upload_data_post_training(prediction_output_file, training_id): + function_url = config.get("url") + "/api/classification" + query = { + "userName": config.get('tagging_user') + } + + # First, we need to get a mapping of class names to class ids + classes = "" + with open(prediction_output_file) as f: + content = f.readlines() + for line in content: + class_name = line.strip().split(',')[1] + if class_name not in classes: + classes = classes + class_name + "," + + query["className"] = classes[:-1] + response = requests.get(function_url, params=query) + classification_name_to_class_id = response.json() + + # Now that we have a mapping, we create prediction labels in db + query = { + "userName": config.get('tagging_user'), + "trainingId": training_id + } + function_url = config.get("url") + "/api/labels" + payload_json = process_post_training_csv(prediction_output_file, training_id, classification_name_to_class_id) + requests.post(function_url, params=query, json=payload_json) + +def process_post_training_csv(csv_path, training_id, classification_name_to_class_id): + payload_json = [] + with open(csv_path) as f: + reader = csv.reader(f) + next(reader, None) #Skip header + for row in reader: + class_name = row[1] + if class_name in classification_name_to_class_id: + prediction_label = PredictionLabel(training_id, + int(row[0].split('.')[0]), + classification_name_to_class_id[class_name], + float(row[2]), + float(row[3]), + float(row[4]), + float(row[5]), + int(row[6]), + int(row[7]), + float(row[8]), + float(row[9])) + payload_json.append(prediction_label) + return jsonpickle.encode(payload_json, unpicklable=False) + def get_image_name_from_url(image_url): start_idx = image_url.rfind('/')+1 return image_url[start_idx:] From b8f18f3d27344c34ea1d9a1a9c0a93f89b43092b Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Fri, 14 Dec 2018 13:31:02 -0800 Subject: [PATCH 120/145] Moved training.py. Added config validation script (#84) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Moved training.py. Added validition script * moved --- {train => train_vnext}/training.py | 0 train_vnext/validate_config.py | 44 ++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) rename {train => train_vnext}/training.py (100%) create mode 100644 train_vnext/validate_config.py diff --git a/train/training.py b/train_vnext/training.py similarity index 100% rename from train/training.py rename to train_vnext/training.py diff --git a/train_vnext/validate_config.py b/train_vnext/validate_config.py new file mode 100644 index 00000000..4d591a7d --- /dev/null +++ b/train_vnext/validate_config.py @@ -0,0 +1,44 @@ +import os +import sys +from pathlib import Path +path = os.path.join(os.path.dirname(__file__), os.pardir) +sys.path.append(path) +from utils.config import Config + +class IllegalArgumentError(ValueError): + pass + +def validate_value(config: dict, key_name: str): + return_val = config[key_name] + if not return_val: + raise IllegalArgumentError("Need value for {} in legacy config file".format(key_name)) + return return_val + +def get_legacy_config(config_path: str) -> dict: + legacy_config_file = {} + try: + legacy_config_file = Config.parse_file(config_path) + except Exception as e: + print("An error occurred attempting to read to file at {0}:\n\n{1}".format(config_path,e)) + raise + + result = {} + keys_we_care_about = ["data_dir","tagged_output","image_dir","filetype","classes"] + + for key_name in keys_we_care_about: + os.environ[key_name] = validate_value(legacy_config_file,key_name) + result[key_name] = os.path.expandvars(os.environ[key_name]) + + if legacy_config_file["user_folders"] == True: + raise IllegalArgumentError("Currently we do not support user folders. Change setting in {}".format(config_path)) + #TODO: Validate that the images we have match the filetype + #TODO: Make sure the classifications exist in the DB + return result + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser() + parser.add_argument('-f', '--file-path', type=str) + args = parser.parse_args() + print(get_legacy_config(args.file_path)) + From 1e637750218136f31b06140a216303ca8f689c6b Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Fri, 14 Dec 2018 14:37:24 -0800 Subject: [PATCH 121/145] Config file validation changes for training (#85) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Moved training.py. Added validition script * moved * Updates * Updates * More changes --- config.ini | 1 + train_vnext/create_predictions.py | 11 +++++------ train_vnext/validate_config.py | 32 +++++++++++++++++++++++++------ 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/config.ini b/config.ini index 3c45ee01..fef0588b 100644 --- a/config.ini +++ b/config.ini @@ -65,3 +65,4 @@ tf_val_record=${tf_record_location%.*}_val.${tf_record_location##*.} tf_url=http://download.tensorflow.org/models/object_detection/${model_name}.tar.gz pipeline_file=${download_location}/${model_name}/pipeline.config fine_tune_checkpoint=${download_location}/${model_name}/model.ckpt +tagging_output=${data_dir}/tagging.csv \ No newline at end of file diff --git a/train_vnext/create_predictions.py b/train_vnext/create_predictions.py index bb0f7dcf..7b2344b4 100644 --- a/train_vnext/create_predictions.py +++ b/train_vnext/create_predictions.py @@ -166,16 +166,15 @@ def get_suggestions(detector, basedir: str, untagged_output: str, classification_names = config_file["classes"].split(",") inference_graph_path = str(Path(config_file["inference_output_dir"])/"frozen_inference_graph.pb") supported_file_type = config_file["filetype"] - + #TODO: Make sure $PYTHONPATH has this in it --> /opt/caffe/python:/opt/caffe2/build: #TODO: make sure tagged.csv exists - cur_tagged = None - cur_tagged = "../train/tagged.csv" #HACK: We expect this file to be in this script directory + cur_tagged = config_file["tagged_output"] # These are the "tagging in progress" labels. Meaning they will have null labels and class names - cur_tagging = None - cur_tagging = "../train/tagging.csv" #HACK: We expect this file to be in this script directory + # This file needs to exist even if it's empty + cur_tagging = config_file["tagging_output"] # This is a new config key we are adding for training V2 logging.info("\n****Initializing TF Detector...****") cur_detector = TFDetector(classification_names, inference_graph_path) @@ -183,4 +182,4 @@ def get_suggestions(detector, basedir: str, untagged_output: str, logging.info("\n****Creating Suggestions****") get_suggestions(cur_detector, image_dir, untagged_output, tagged_output, cur_tagged, cur_tagging, filetype=supported_file_type, min_confidence=float(config_file["min_confidence"]), user_folders=config_file["user_folders"]=="True") - logging.info("\n****Creating Suggestions DONE****") + logging.info("\n****Creating Suggestions DONE****") \ No newline at end of file diff --git a/train_vnext/validate_config.py b/train_vnext/validate_config.py index 4d591a7d..dc720d54 100644 --- a/train_vnext/validate_config.py +++ b/train_vnext/validate_config.py @@ -22,17 +22,37 @@ def get_legacy_config(config_path: str) -> dict: print("An error occurred attempting to read to file at {0}:\n\n{1}".format(config_path,e)) raise - result = {} - keys_we_care_about = ["data_dir","tagged_output","image_dir","filetype","classes"] + if legacy_config_file["user_folders"] == True: + raise IllegalArgumentError("Currently we do not support user folders. Change setting in {}".format(config_path)) + + current_dir_path = os.path.dirname(os.path.abspath(__file__)) + configured_path = legacy_config_file["python_file_directory"] + if os.path.abspath(configured_path) != current_dir_path: + msg = "Update 'python_file_directory' in {}".format(config_path) + raise IllegalArgumentError(msg) + + #TODO: Validate that the images we have match the filetype + #TODO: Make sure the classifications exist in the DB + + keys_we_care_about = [ + "data_dir", + "tagged_output", + "tagging_output", + "image_dir", + "train_dir", + "filetype", + "classes", + "validation_output", + "untagged_output", + "inference_output_dir", + "python_file_directory" + ] + result = {} for key_name in keys_we_care_about: os.environ[key_name] = validate_value(legacy_config_file,key_name) result[key_name] = os.path.expandvars(os.environ[key_name]) - if legacy_config_file["user_folders"] == True: - raise IllegalArgumentError("Currently we do not support user folders. Change setting in {}".format(config_path)) - #TODO: Validate that the images we have match the filetype - #TODO: Make sure the classifications exist in the DB return result if __name__ == "__main__": From e5bf6765afe2d237a4cbb5948ab91d13cae8c6c5 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Fri, 14 Dec 2018 15:51:57 -0800 Subject: [PATCH 122/145] Removed references to old tables. Added/modified new table (#86) * Removed references to old tables. Added/modified new table * Additional replacements --- dashboard/dashboard.ipynb | 6 +- db/TableSchemasV2.sql | 113 ------------------ db/tables/010_training_info.sql | 1 + db/tables/100_class_performance.sql | 6 + db/tables/100_image_tags.sql | 13 -- db/tables/100_tags_classification.sql | 8 -- .../pipeline/shared/db_access/db_access_v2.py | 39 ------ 7 files changed, 10 insertions(+), 176 deletions(-) delete mode 100644 db/TableSchemasV2.sql create mode 100644 db/tables/100_class_performance.sql delete mode 100644 db/tables/100_image_tags.sql delete mode 100644 db/tables/100_tags_classification.sql diff --git a/dashboard/dashboard.ipynb b/dashboard/dashboard.ipynb index 12a4b801..2b054768 100644 --- a/dashboard/dashboard.ipynb +++ b/dashboard/dashboard.ipynb @@ -160,7 +160,7 @@ "cursor = conn.cursor()\n", "usernames = []\n", "tagcounts = []\n", - "cursor.execute(\"SELECT e.username, count(*) as TagCount FROM image_info a join image_tags b on a.imageid = b.imageid join tags_classification c on b.imagetagid = c.imagetagid join classification_info d on c.classificationid = d.classificationid join user_info e on b.createdbyuser = e.userid group by e.username order by TagCount desc\")\n", + "cursor.execute(\"SELECT e.username, count(*) as TagCount FROM image_info a join Annotated_Labels b on a.imageid = b.imageid join user_info e on b.createdbyuser = e.userid group by e.username order by TagCount desc\")\n", "for (username, tagcount) in cursor: \n", " usernames.append(username)\n", " tagcounts.append(tagcount)\n", @@ -197,7 +197,7 @@ "source": [ "class_data = {}\n", "cursor = conn.cursor()\n", - "cursor.execute(\"SELECT e.username, d.classificationname, count(*) as TagCount FROM image_info a join image_tags b on a.imageid = b.imageid join tags_classification c on b.imagetagid = c.imagetagid join classification_info d on c.classificationid = d.classificationid join user_info e on b.createdbyuser = e.userid group by e.username, d.classificationname order by TagCount desc\")\n", + "cursor.execute(\"SELECT e.username, d.classificationname, count(*) as TagCount FROM image_info a join Annotated_Labels b on a.imageid = b.imageid join Annotated_Labels c on b.imagetagid = c.imagetagid join classification_info d on c.classificationid = d.classificationid join user_info e on b.createdbyuser = e.userid group by e.username, d.classificationname order by TagCount desc\")\n", "for (username, classname, tagcount) in cursor:\n", " if username not in class_data:\n", " class_data[username] = {}\n", @@ -244,7 +244,7 @@ ], "source": [ "cursor = conn.cursor()\n", - "cursor.execute('SELECT b.classificationname, count(*) AS ClassificationCount FROM tags_classification a join classification_info b on a.classificationid = b.classificationid group by classificationname order by ClassificationCount desc')\n", + "cursor.execute('SELECT b.classificationname, count(*) AS ClassificationCount FROM Annotated_Labels a join classification_info b on a.classificationid = b.classificationid group by classificationname order by ClassificationCount desc')\n", "classnames = []\n", "counts = []\n", "for (classname, count) in cursor:\n", diff --git a/db/TableSchemasV2.sql b/db/TableSchemasV2.sql deleted file mode 100644 index 6bc032f8..00000000 --- a/db/TableSchemasV2.sql +++ /dev/null @@ -1,113 +0,0 @@ --- Set up table and autoincrementing primary key -CREATE TABLE Image_Info ( - ImageId SERIAL PRIMARY KEY, - OriginalImageName text NOT NULL, - ImageLocation text, - Height integer NOT NULL, - Width integer NOT NULL, - ModifiedDtim timestamp NOT NULL default current_timestamp, - CreatedDtim timestamp NOT NULL default current_timestamp -); - --- Set up table -CREATE TABLE TagState ( - TagStateId integer NOT NULL, - TagStateName text NOT NULL -); - --- Set up table -CREATE TABLE Image_Tags ( - ImageTagId integer NOT NULL, - ImageId integer REFERENCES Image_Info(ImageId) ON DELETE RESTRICT, - Class text NOT NULL, --Needed? - Confidence double precision NOT NULL, --Needed? - X_Min integer NOT NULL, - X_Max integer NOT NULL, - Y_Min integer NOT NULL, - Y_Max integer NOT NULL, - PRIMARY KEY (ImageTagId,ImageId) -); - --- Set up table and autoincrementing primary key -CREATE TABLE Image_Tagging_State ( - ImageId integer REFERENCES Image_Info(ImageId), - TagStateId integer NOT NULL, - ModifiedDtim timestamp NOT NULL default current_timestamp, - CreatedDtim timestamp NOT NULL default current_timestamp -); - -CREATE TABLE Image_Tagging_State_Audit ( - RowId serial primary key, - ImageId integer NOT NULL, - TagStateId integer NOT NULL, - ModifiedDtim timestamp NOT NULL, - ArchiveDtim timestamp NOT NULL, - ActionFlag integer NOT NULL -); - ---On insert of new image info rows we automatically create an entry in the state table -CREATE OR REPLACE FUNCTION log_image_info_insert() - RETURNS trigger AS - $BODY$ - BEGIN - INSERT INTO Image_Tagging_State(ImageId,TagStateId,ModifiedDtim,CreatedDtim) - VALUES(NEW.ImageId,0,current_timestamp,current_timestamp); - - RETURN NEW; - END; - $BODY$ - LANGUAGE plpgsql; - -DROP TRIGGER IF EXISTS image_info_insert ON Image_Info; -CREATE TRIGGER image_info_insert - AFTER INSERT ON Image_Info - FOR EACH ROW - EXECUTE PROCEDURE log_image_info_insert(); - - --- ActionFlag: 1 = insert, 2 = update, 3 = delete -CREATE OR REPLACE FUNCTION log_image_tagging_state_insert() - RETURNS trigger AS - $BODY$ - BEGIN - INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedDtim,ArchiveDtim,ActionFlag) - VALUES(NEW.ImageId,NEW.TagStateId,NEW.ModifiedDtim,current_timestamp,1); - - RETURN NEW; - END; - $BODY$ - LANGUAGE plpgsql; - -DROP TRIGGER IF EXISTS image_tagging_state_insert ON Image_Tagging_State; -CREATE TRIGGER image_tagging_state_insert - AFTER INSERT ON Image_Tagging_State - FOR EACH ROW - EXECUTE PROCEDURE log_image_tagging_state_insert(); - - -CREATE OR REPLACE FUNCTION log_image_tagging_state_changes() - RETURNS trigger AS - $BODY$ - BEGIN - IF NEW.TagStateId <> OLD.TagStateId THEN - INSERT INTO Image_Tagging_State_Audit(ImageId,TagStateId,ModifiedDtim,ArchiveDtim,ActionFlag) - VALUES(NEW.ImageId,NEW.TagStateId,NEW.ModifiedDtim,current_timestamp,2); - END IF; - - RETURN NEW; - END; - $BODY$ - LANGUAGE plpgsql; - -DROP TRIGGER IF EXISTS image_tagging_state_changes ON Image_Tagging_State; -CREATE TRIGGER image_tagging_state_changes - BEFORE UPDATE ON Image_Tagging_State - FOR EACH ROW - EXECUTE PROCEDURE log_image_tagging_state_changes(); - - - - - - - diff --git a/db/tables/010_training_info.sql b/db/tables/010_training_info.sql index e4c8f444..3b565818 100644 --- a/db/tables/010_training_info.sql +++ b/db/tables/010_training_info.sql @@ -2,6 +2,7 @@ CREATE TABLE Training_Info ( TrainingId SERIAL PRIMARY KEY, TrainingDescription text, ModelLocation text NOT NULL, + ClassPerfAvg decimal(6,5) NOT NULL, --Consider additional metadata like a path to zip file --containing the pipeline.config, model, etc. CreatedByUser integer REFERENCES User_Info(UserId), diff --git a/db/tables/100_class_performance.sql b/db/tables/100_class_performance.sql new file mode 100644 index 00000000..a063868e --- /dev/null +++ b/db/tables/100_class_performance.sql @@ -0,0 +1,6 @@ +CREATE TABLE Class_Performance ( + TrainingId integer REFERENCES Training_Info(TrainingId), + ClassificationId integer REFERENCES Classification_Info(ClassificationId), + AvgPerf decimal(6,5) NOT NULL, + PRIMARY KEY (TrainingId,ClassificationId) +); \ No newline at end of file diff --git a/db/tables/100_image_tags.sql b/db/tables/100_image_tags.sql deleted file mode 100644 index b5bf4584..00000000 --- a/db/tables/100_image_tags.sql +++ /dev/null @@ -1,13 +0,0 @@ --- TO DELETE -CREATE TABLE Image_Tags ( - ImageTagId SERIAL UNIQUE, - ImageId integer REFERENCES Image_Info(ImageId) ON DELETE RESTRICT, - X_Min decimal(6,2) NOT NULL, - X_Max decimal(6,2) NOT NULL, - Y_Min decimal(6,2) NOT NULL, - Y_Max decimal(6,2) NOT NULL, - CreatedByUser integer REFERENCES User_Info(UserId), - CreatedDtim timestamp NOT NULL default current_timestamp, - --VOTT_Data json NOT NULL - PRIMARY KEY (ImageId,X_Min,X_Max,Y_Min,Y_Max) --Should we include the bounded box as well? -); \ No newline at end of file diff --git a/db/tables/100_tags_classification.sql b/db/tables/100_tags_classification.sql deleted file mode 100644 index 9894f5b0..00000000 --- a/db/tables/100_tags_classification.sql +++ /dev/null @@ -1,8 +0,0 @@ ---TO DELETE -CREATE TABLE Tags_Classification ( - ImageTagId integer REFERENCES Image_Tags(ImageTagId), - ClassificationId integer REFERENCES Classification_Info(ClassificationId), - ModifiedDtim timestamp NOT NULL default current_timestamp, - CreatedDtim timestamp NOT NULL default current_timestamp, - PRIMARY KEY (ImageTagId,ClassificationId) -); \ No newline at end of file diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index bfc2da4f..9f7e6971 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -165,7 +165,6 @@ def get_image_info_for_image_ids(self, image_ids): conn.close() return list(images_info) - def checkout_images(self, image_count, user_id): if type(image_count) is not int: raise TypeError('image_count must be an integer') @@ -230,7 +229,6 @@ def checkout_images(self, image_count, user_id): conn.close() return list(image_id_to_image_labels.values()) - def get_existing_classifications(self): try: conn = self._db_provider.get_connection() @@ -313,43 +311,6 @@ def update_image_urls(self,image_id_to_url_map, user_id): raise finally: conn.close() - #TODO: Do safer query string formatting - def update_tagged_images(self,list_of_image_tags, user_id): - if(not list_of_image_tags): - return - - if type(user_id) is not int: - raise TypeError('user id must be an integer') - - groups_by_image_id = itertools.groupby(list_of_image_tags, key=lambda it:it.image_id) - try: - conn = self._db_provider.get_connection() - try: - cursor = conn.cursor() - for img_id, list_of_tags in groups_by_image_id: - for img_tag in list(list_of_tags): - query = ("with iti AS ( " - "INSERT INTO image_tags (ImageId, X_Min,X_Max,Y_Min,Y_Max,CreatedByUser) " - "VALUES ({0},{1},{2},{3},{4},{5}) " - "RETURNING ImageTagId), " - "ci AS ( " - "INSERT INTO classification_info (ClassificationName) " - "VALUES {6} " - "ON CONFLICT (ClassificationName) DO UPDATE SET ClassificationName=EXCLUDED.ClassificationName " - "RETURNING (SELECT iti.ImageTagId FROM iti), ClassificationId) " - "INSERT INTO tags_classification (ImageTagId,ClassificationId) " - "SELECT imagetagid,classificationid from ci;") - classifications = ", ".join("('{0}')".format(name) for name in img_tag.classification_names) - cursor.execute(query.format(img_tag.image_id,img_tag.x_min,img_tag.x_max,img_tag.y_min,img_tag.y_max,user_id,classifications)) - self._update_images([img_id],ImageTagState.COMPLETED_TAG,user_id,conn) - conn.commit() - logging.debug("Updated {0} image tags".format(len(list_of_image_tags))) - finally: cursor.close() - except Exception as e: - logging.error("An errors occured updating tagged image: {0}".format(e)) - raise - finally: conn.close() - def get_classification_map(self, class_names: set, user_id: int) -> dict: class_to_id = {} try: From aff10e29dc91fe1066a0ca5468584b5fec52e8d2 Mon Sep 17 00:00:00 2001 From: Samiya Date: Fri, 14 Dec 2018 16:36:33 -0800 Subject: [PATCH 123/145] Tagging csv (#87) * Remove param from training.py * Writing tagging.csv file * Use legacy config file in training.py * Remove unused training config section * Update unit tests * Minor fixes --- cli/README.md | 1 - cli/test_operations.py | 21 +---- functions/pipeline/images/__init__.py | 9 +- .../pipeline/shared/db_access/db_access_v2.py | 3 +- train_vnext/__init__.py | 0 train_vnext/training.py | 86 +++++++++++-------- train_vnext/validate_config.py | 14 +++ utils/config.py | 40 +-------- 8 files changed, 73 insertions(+), 101 deletions(-) create mode 100644 train_vnext/__init__.py diff --git a/cli/README.md b/cli/README.md index d6e3e735..63d1f2a9 100644 --- a/cli/README.md +++ b/cli/README.md @@ -26,7 +26,6 @@ STORAGE_CONTAINER=vott TAGGING_LOCATION=~/taggingdata TAGGING_USER="bhargav" TAGGING_IMAGE_DIR=${TAGGING:TAGGING_LOCATION}/AllImages -TAGGED_OUTPUT=${TAGGING:TAGGING_LOCATION}/tagged.csv ``` `FUNCTIONS_KEY` is the Azure Functions Key that allows your CLI to authenticate with the management function diff --git a/cli/test_operations.py b/cli/test_operations.py index 2ef4d6b3..42f08940 100644 --- a/cli/test_operations.py +++ b/cli/test_operations.py @@ -14,11 +14,7 @@ STORAGE_CONTAINER, TAGGING_SECTION, TAGGING_LOCATION_KEY, - TAGGING_USER_KEY, - TRAINING_SECTION, - TRAINING_LOCATION_KEY, - TRAINING_IMAGE_DIR_KEY, - TAGGED_OUTPUT_KEY + TAGGING_USER_KEY ) from .operations import ( _download_bounds, @@ -82,12 +78,6 @@ def test_missing_tagging_section(self): self._mock_sections([FUNCTIONS_SECTION, STORAGE_SECTION], {}) ) - def test_missing_training_section(self): - with self.assertRaises(MissingConfigException): - Config.read_config_with_parsed_config( - self._mock_sections([FUNCTIONS_SECTION, STORAGE_SECTION, TAGGING_SECTION], {}) - ) - def test_missing_functions_config_values(self): with self.assertRaises(MissingConfigException): Config.functions_config_section({}) @@ -102,7 +92,7 @@ def test_missing_tagging_config_values(self): def test_acceptable_config(self): mock_data = self._mock_sections( - [STORAGE_SECTION, FUNCTIONS_SECTION, TAGGING_SECTION,TRAINING_SECTION], + [STORAGE_SECTION, FUNCTIONS_SECTION, TAGGING_SECTION], { STORAGE_SECTION: { STORAGE_KEY: "test", @@ -117,13 +107,6 @@ def test_acceptable_config(self): TAGGING_LOCATION_KEY: "test", TAGGING_USER_KEY: "test" } - , - TRAINING_SECTION: { - TRAINING_LOCATION_KEY: "test", - TRAINING_IMAGE_DIR_KEY: "test", - TAGGED_OUTPUT_KEY:"test" - - } } ) diff --git a/functions/pipeline/images/__init__.py b/functions/pipeline/images/__init__.py index 631ec20b..e63d93aa 100644 --- a/functions/pipeline/images/__init__.py +++ b/functions/pipeline/images/__init__.py @@ -25,12 +25,6 @@ def main(req: func.HttpRequest) -> func.HttpResponse: headers=headers, body=json.dumps({"error": "invalid userName given or omitted"}) ) - elif not image_count and tag_status: - return func.HttpResponse( - status_code=400, - headers=headers, - body=json.dumps({"error": "image count needs to be specified if tag status is specified"}) - ) elif not tag_status and not image_ids: return func.HttpResponse( status_code=400, @@ -54,7 +48,8 @@ def main(req: func.HttpRequest) -> func.HttpResponse: if image_ids: image_infos = data_access.get_image_info_for_image_ids(image_ids.split(',')) elif tag_status: - image_count = int(image_count) + if image_count: + image_count = int(image_count) images_by_tag_status = data_access.get_images_by_tag_status(tag_status.split(','), image_count) logging.debug("Received {0} images in tag status {1}".format(len(images_by_tag_status),tag_status)) image_infos = data_access.get_image_info_for_image_ids(list(images_by_tag_status.keys())) diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index 9f7e6971..f515f446 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -143,7 +143,7 @@ def get_image_info_for_image_ids(self, image_ids): for id in image_ids: ids += str(id) + ',' ids = ids[:-1] - query = ("select imageid, originalimagename, imagelocation, height, width, createdbyuser from image_info where imageid IN ({0});") + query = ("select a.imageid, a.originalimagename, a.imagelocation, a.height, a.width, a.createdbyuser, b.TagStateId from image_info a LEFT JOIN Image_Tagging_State b ON a.imageid = b.imageid where a.imageid IN ({0});") cursor.execute(query.format(ids)) logging.debug("Got image info back for image_id={}".format(image_ids)) @@ -155,6 +155,7 @@ def get_image_info_for_image_ids(self, image_ids): info['name'] = row[1] info['location'] = row[2] info['id'] = row[0] + info['tagstate'] = row[6] images_info.append(info) finally: cursor.close() diff --git a/train_vnext/__init__.py b/train_vnext/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/train_vnext/training.py b/train_vnext/training.py index 17942727..6a762753 100644 --- a/train_vnext/training.py +++ b/train_vnext/training.py @@ -3,8 +3,9 @@ import csv import requests from azure.storage.blob import BlockBlobService, ContentSettings -from utils.config import Config from utils.blob_utils import BlobStorage +from utils.config import Config +from .validate_config import get_legacy_config, initialize_training_location import urllib.request import sys import time @@ -13,19 +14,20 @@ CONFIG_PATH = os.environ.get('ALCONFIG', None) -def train(config, num_images): +def train(legacy_config, user_name, function_url): # First, downloxad data necessary for training - training_data = download_data_for_training(config, num_images) + training_data = download_data_for_training(user_name, function_url) # Make sure directory is clean: - file_location = Config.initialize_training_location(config) + file_location = initialize_training_location(legacy_config) # Grab tagged and totag images from the blob storage - download_images(training_data["imageURLs"], config.get('training_image_dir')) + download_images(training_data["imageURLs"], legacy_config.get('image_dir')) # create csv file from this data - convert_labels_to_csv(training_data["taggedLabelData"],config.get('tagged_output')) + convert_tagged_labels_to_csv(training_data["taggedLabelData"],legacy_config.get('tagged_output')) + convert_tagging_labels_to_csv(training_data["taggingLabelData"], legacy_config.get('tagging_output')) def download_images(imageURLs, file_location): @@ -48,18 +50,17 @@ def download_images(imageURLs, file_location): print("Downloaded images into " + file_location) -def download_data_for_training(config, num_images): +def download_data_for_training(user_name, function_url): print("Downloading data for training, this may take a few moments...") - # Download n images that are ready to tag + # Download all images to begin training query = { - "userName": config.get('tagging_user'), - "imageCount": num_images, + "userName": user_name, "tagStatus": [ int(ImageTagState.READY_TO_TAG), int(ImageTagState.TAG_IN_PROGRESS), int(ImageTagState.COMPLETED_TAG), int(ImageTagState.INCOMPLETE_TAG)] } - url = config.get('url') + '/api/images' + url = function_url + '/api/images' response = requests.get(url, params=query) all_images_json = response.json() image_urls_to_download = [info['location'] for info in all_images_json] @@ -67,20 +68,36 @@ def download_data_for_training(config, num_images): # Download upto 200 images that have been tagged, for training query['tagStatus'] = ImageTagState.COMPLETED_TAG query['imageCount'] = 200 - url = config.get('url') + '/api/labels' + url = function_url + '/api/labels' response = requests.get(url, params=query) tagged_label_data = response.json() + tagging_image_data = set([item['name'] for item in all_images_json if item['tagstate'] == ImageTagState.TAG_IN_PROGRESS]) return { "imageURLs": image_urls_to_download, - "taggedLabelData": tagged_label_data } + "taggedLabelData": tagged_label_data, + "taggingLabelData": tagging_image_data } -def convert_labels_to_csv(data, tagging_output_file_path): +def convert_tagging_labels_to_csv(filenames, tagging_output_file_path): try: if not os.path.exists(tagging_output_file_path): dir_name = os.path.dirname(tagging_output_file_path) if not os.path.exists(dir_name): os.makedirs(dir_name) with open(tagging_output_file_path, 'w') as csvfile: + for img in filenames: + csvfile.write(img + '\n') + print("Created tagging csv file: " + tagging_output_file_path) + except Exception as e: + print("An error occurred attempting to write to file at {0}:\n\n{1}".format(tagging_output_file_path,e)) + raise + +def convert_tagged_labels_to_csv(data, tagged_output_file_path): + try: + if not os.path.exists(tagged_output_file_path): + dir_name = os.path.dirname(tagged_output_file_path) + if not os.path.exists(dir_name): + os.makedirs(dir_name) + with open(tagged_output_file_path, 'w') as csvfile: filewriter = csv.writer(csvfile, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL) filewriter.writerow(['filename','class','xmin','xmax','ymin','ymax','height','width']) for img in data: @@ -90,14 +107,15 @@ def convert_labels_to_csv(data, tagging_output_file_path): for label in img["labels"]: data = [imagelocation, label["classificationname"], label['x_min'], label['x_max'], label['y_min'], label['y_max'], image_height, image_width] filewriter.writerow(data) + print("Created tagged csv file: " + tagged_output_file_path) except Exception as e: - print("An error occurred attempting to write to file at {0}:\n\n{1}".format(tagging_output_file_path,e)) + print("An error occurred attempting to write to file at {0}:\n\n{1}".format(tagged_output_file_path,e)) raise -def upload_data_post_training(prediction_output_file, training_id): - function_url = config.get("url") + "/api/classification" +def upload_data_post_training(prediction_output_file, training_id, user_name,function_url): + function_url = function_url + "/api/classification" query = { - "userName": config.get('tagging_user') + "userName": user_name } # First, we need to get a mapping of class names to class ids @@ -115,10 +133,10 @@ def upload_data_post_training(prediction_output_file, training_id): # Now that we have a mapping, we create prediction labels in db query = { - "userName": config.get('tagging_user'), + "userName": user_name, "trainingId": training_id } - function_url = config.get("url") + "/api/labels" + function_url = function_url + "/api/labels" payload_json = process_post_training_csv(prediction_output_file, training_id, classification_name_to_class_id) requests.post(function_url, params=query, json=payload_json) @@ -131,16 +149,16 @@ def process_post_training_csv(csv_path, training_id, classification_name_to_clas class_name = row[1] if class_name in classification_name_to_class_id: prediction_label = PredictionLabel(training_id, - int(row[0].split('.')[0]), - classification_name_to_class_id[class_name], - float(row[2]), - float(row[3]), - float(row[4]), - float(row[5]), - int(row[6]), - int(row[7]), - float(row[8]), - float(row[9])) + int(row[0].split('.')[0]), + classification_name_to_class_id[class_name], + float(row[2]), + float(row[3]), + float(row[4]), + float(row[5]), + int(row[6]), + int(row[7]), + float(row[8]), + float(row[9])) payload_json.append(prediction_label) return jsonpickle.encode(payload_json, unpicklable=False) @@ -148,10 +166,10 @@ def get_image_name_from_url(image_url): start_idx = image_url.rfind('/')+1 return image_url[start_idx:] - if __name__ == "__main__": parser = argparse.ArgumentParser() - parser.add_argument('-n', '--num-images', type=int) - config = Config.read_config(CONFIG_PATH) + parser.add_argument('-c', '--config-file', required=True) args = parser.parse_args() - train(config, args.num_images) + legacy_config = get_legacy_config(args.config_file) + config = Config.read_config(CONFIG_PATH) + train(legacy_config, config.get("tagging_user"), config.get("url")) diff --git a/train_vnext/validate_config.py b/train_vnext/validate_config.py index dc720d54..6cc5a2c1 100644 --- a/train_vnext/validate_config.py +++ b/train_vnext/validate_config.py @@ -1,6 +1,8 @@ import os import sys from pathlib import Path +import pathlib +import shutil path = os.path.join(os.path.dirname(__file__), os.pardir) sys.path.append(path) from utils.config import Config @@ -8,6 +10,18 @@ class IllegalArgumentError(ValueError): pass +def initialize_training_location(config): + file_tree = pathlib.Path(os.path.expanduser( + config.get("train_dir")) + ) + + if file_tree.exists(): + print("Removing existing tag data directory: " + str(file_tree)) + + shutil.rmtree(str(file_tree), ignore_errors=True) + + return pathlib.Path(file_tree) + def validate_value(config: dict, key_name: str): return_val = config[key_name] if not return_val: diff --git a/utils/config.py b/utils/config.py index 00af24d7..5c8b39a4 100644 --- a/utils/config.py +++ b/utils/config.py @@ -1,8 +1,6 @@ import configparser -import pathlib import os -import shutil FUNCTIONS_SECTION = 'FUNCTIONS' FUNCTIONS_KEY = 'FUNCTIONS_KEY' @@ -17,11 +15,6 @@ TAGGING_LOCATION_KEY = 'TAGGING_LOCATION' TAGGING_USER_KEY = 'TAGGING_USER' -TRAINING_SECTION = 'TRAINING' -TRAINING_LOCATION_KEY = 'TRAINING_LOCATION' -TRAINING_IMAGE_DIR_KEY='TRAINING_IMAGE_DIR' -TAGGED_OUTPUT_KEY='TAGGED_OUTPUT' - class Config(): @staticmethod def parse_file(file_name): @@ -55,17 +48,6 @@ def tagging_config_section(tagging_config_section): raise MissingConfigException() return tagging_location_value, tagging_user_value - - @staticmethod - def training_config_section(training_config_section): - training_image_dir = training_config_section.get(TRAINING_IMAGE_DIR_KEY) - tagged_output = training_config_section.get(TAGGED_OUTPUT_KEY) - training_location = training_config_section.get(TRAINING_LOCATION_KEY) - - if not training_image_dir or not tagged_output or not training_location: - raise MissingConfigException() - - return training_image_dir, tagged_output, training_location @staticmethod def functions_config_section(functions_config_section): @@ -90,9 +72,6 @@ def read_config_with_parsed_config(parser): if TAGGING_SECTION not in sections: raise MissingConfigException() - if TRAINING_SECTION not in sections: - raise MissingConfigException() - functions_key, functions_url = Config.functions_config_section( parser[FUNCTIONS_SECTION] ) @@ -103,8 +82,6 @@ def read_config_with_parsed_config(parser): tagging_location, tagging_user = Config.tagging_config_section(parser[TAGGING_SECTION]) - training_image_dir, tagged_output, training_location = Config.training_config_section(parser[TRAINING_SECTION]) - return { "key": functions_key, "url": functions_url, @@ -112,10 +89,7 @@ def read_config_with_parsed_config(parser): "storage_key": storage_key, "storage_container": storage_container, "tagging_location": tagging_location, - "tagging_user": tagging_user, - "training_location": training_location, - "training_image_dir": training_image_dir, - "tagged_output": tagged_output + "tagging_user": tagging_user } @staticmethod @@ -128,18 +102,6 @@ def read_config(config_path): parser.read(config_path) return Config.read_config_with_parsed_config(parser) - @staticmethod - def initialize_training_location(config): - file_tree = pathlib.Path(os.path.expanduser( - config.get("training_location")) - ) - - if file_tree.exists(): - print("Removing existing tag data directory: " + str(file_tree)) - - shutil.rmtree(str(file_tree), ignore_errors=True) - - return pathlib.Path(file_tree) class MissingConfigException(Exception): pass \ No newline at end of file From 4d98a38c3031feead6f8e9a0454bc434c2f9fcb2 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Fri, 14 Dec 2018 23:48:59 -0800 Subject: [PATCH 124/145] Added code to explicity remove postgres db if exists (#88) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Updates * Added code to explicity remove postgres db if exists --- devops/deployment/Deploy-Infrastructure.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/devops/deployment/Deploy-Infrastructure.sh b/devops/deployment/Deploy-Infrastructure.sh index b911847a..06ede888 100755 --- a/devops/deployment/Deploy-Infrastructure.sh +++ b/devops/deployment/Deploy-Infrastructure.sh @@ -61,6 +61,13 @@ if [[ $query_result =~ $DATABASE_SERVER_NAME ]] && ! $DEPLOY_POSTGRES_SERVER; then echo && echo "Skipping deployment of PostgreSQL server $DATABASE_SERVER_NAME" && echo else + #First see if the postgres server exists. + ps_query_result=$(az postgres server list -g $RESOURCE_GROUP --query "[?name=='$DATABASE_SERVER_NAME'].name") + if [[ $ps_query_result =~ $DATABASE_SERVER_NAME ]]; + then + echo "Postgres server $DATABASE_SERVER_NAME already exists. Removing..." + az postgres server delete -g $RESOURCE_GROUP -n $DATABASE_SERVER_NAME -y + fi echo "Entering deployment of PostgreSQL server $DATABASE_SERVER_NAME" . ./Deploy-Postgres-DB.sh $RESOURCE_GROUP $DATABASE_SERVER_NAME "$DATABASE_USERNAME" $DATABASE_PASSWORD if [ "$?" -ne 0 ]; then From f62fe197570e67f7015b81f45709110fe6ead4a7 Mon Sep 17 00:00:00 2001 From: Jim Spring Date: Sun, 16 Dec 2018 13:58:38 -0800 Subject: [PATCH 125/145] add some logging (#89) --- functions/pipeline/onboarding/__init__.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/functions/pipeline/onboarding/__init__.py b/functions/pipeline/onboarding/__init__.py index a910f31b..15f52849 100644 --- a/functions/pipeline/onboarding/__init__.py +++ b/functions/pipeline/onboarding/__init__.py @@ -29,11 +29,13 @@ def main(req: func.HttpRequest) -> func.HttpResponse: ) try: - req_body = req.get_json() - logging.info("Request json: {}".format(req_body)) - raw_url_list = req_body["imageUrls"] - except ValueError: - logging.error("Error: Unable to decode POST body.") + bodyJson = req.get_json() + logging.info("Request json: {}".format(bodyJson)) + if "imageUrls" not in bodyJson: + raise ValueError("invalid request body") + raw_url_list = bodyJson["imageUrls"] + except ValueError as ve: + logging.error("Error: Unable to decode POST body. Error: " + repr(ve)) return func.HttpResponse( status_code=400, headers=DEFAULT_RETURN_HEADER, From 210b8e216cbbeeb6e9c72ff02feed1c846ba47a2 Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Sun, 16 Dec 2018 14:56:30 -0800 Subject: [PATCH 126/145] Various fixes and changes to support end to end training (#90) Fixed where incorrect number of images was being printed Added unique index to model location column Added pip install command to DSVM setup Updated HTTP response codes on various functions based on HTTP verb Made blob and blob metadata creation in a single transaction Added data access method for saving a training session Fixed issue in upload api when no tagged images are sent Improved download image performance in training.py via caching Added stub API for Training --- cli/operations.py | 8 +-- db/tables/010_training_info.sql | 2 +- devops/dsvm/setup-tensorflow.sh | 3 ++ functions/pipeline/labels/__init__.py | 2 +- .../pipeline/onboardcontainer/__init__.py | 2 +- .../onboardqueueproccessor/__init__.py | 22 ++++----- .../pipeline/shared/db_access/db_access_v2.py | 41 +++++++++++++++- functions/pipeline/shared/db_access/models.py | 12 ++++- functions/pipeline/train/__init__.py | 49 +++++++++++++++++++ functions/pipeline/train/function.json | 21 ++++++++ functions/pipeline/train/host.json | 3 ++ functions/pipeline/upload/__init__.py | 13 +++-- train_vnext/training.py | 38 +++++++------- train_vnext/validate_config.py | 2 +- 14 files changed, 172 insertions(+), 46 deletions(-) create mode 100644 functions/pipeline/train/__init__.py create mode 100644 functions/pipeline/train/function.json create mode 100644 functions/pipeline/train/host.json diff --git a/cli/operations.py b/cli/operations.py index 2876750d..7f9abde0 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -123,7 +123,8 @@ def download(config, num_images, strategy=None): response.raise_for_status() json_resp = response.json() - count = len(json_resp['images']) + images_json = json.loads(json_resp["images"]) + count = len(images_json) print("Received " + str(count) + " files.") @@ -145,7 +146,7 @@ def download(config, num_images, strategy=None): parents=True, exist_ok=True ) - checkedout_image_labels = [ImageLabel.fromJson(item) for item in json.loads(json_resp["images"])] + checkedout_image_labels = [ImageLabel.fromJson(item) for item in images_json] vott_json, image_urls = create_vott_json_from_image_labels(checkedout_image_labels, json_resp["classification_list"]) json_data = {'vott_json': vott_json, @@ -220,5 +221,4 @@ def upload(config): response.raise_for_status() resp_json = response.json() - print("Done!") - + print("Done!") \ No newline at end of file diff --git a/db/tables/010_training_info.sql b/db/tables/010_training_info.sql index 3b565818..bd0503ce 100644 --- a/db/tables/010_training_info.sql +++ b/db/tables/010_training_info.sql @@ -1,7 +1,7 @@ CREATE TABLE Training_Info ( TrainingId SERIAL PRIMARY KEY, TrainingDescription text, - ModelLocation text NOT NULL, + ModelLocation text NOT NULL UNIQUE, ClassPerfAvg decimal(6,5) NOT NULL, --Consider additional metadata like a path to zip file --containing the pipeline.config, model, etc. diff --git a/devops/dsvm/setup-tensorflow.sh b/devops/dsvm/setup-tensorflow.sh index f7536554..e1425f6d 100644 --- a/devops/dsvm/setup-tensorflow.sh +++ b/devops/dsvm/setup-tensorflow.sh @@ -42,6 +42,9 @@ python object_detection/builders/model_builder_test.py echo -e '\n*******\tClone Active Learning\t*******\n' git clone https://github.com/CatalystCode/active-learning-detect +echo -e '\n*******\tInstalling Python Packages\t*******\n' +cd repos/models/research/active-learning-detect +pip install -r requirements.txt #Update the config.ini file at repos/models/research/active-learning-detect echo -e 'Objection dectection install validation complete' \ No newline at end of file diff --git a/functions/pipeline/labels/__init__.py b/functions/pipeline/labels/__init__.py index a55eb59c..bc10d575 100644 --- a/functions/pipeline/labels/__init__.py +++ b/functions/pipeline/labels/__init__.py @@ -59,7 +59,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: payload_json = [namedtuple('PredictionLabel', item.keys())(*item.values()) for item in payload] data_access.add_prediction_labels(payload_json, training_id) return func.HttpResponse( - status_code=200, + status_code=201, headers=headers ) except Exception as e: diff --git a/functions/pipeline/onboardcontainer/__init__.py b/functions/pipeline/onboardcontainer/__init__.py index 498e7e2c..1a00aef0 100644 --- a/functions/pipeline/onboardcontainer/__init__.py +++ b/functions/pipeline/onboardcontainer/__init__.py @@ -99,7 +99,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.info("Blob object not supported. Object URL={}".format(blob_url.as_uri)) return func.HttpResponse( - status_code=200, + status_code=202, headers=DEFAULT_RETURN_HEADER, body=json.dumps(blob_list) ) diff --git a/functions/pipeline/onboardqueueproccessor/__init__.py b/functions/pipeline/onboardqueueproccessor/__init__.py index 4e3d6c22..cd9db6e9 100644 --- a/functions/pipeline/onboardqueueproccessor/__init__.py +++ b/functions/pipeline/onboardqueueproccessor/__init__.py @@ -71,24 +71,22 @@ def main(msg: func.QueueMessage) -> None: image_bytes = response.read() - blob_create_response = blob_service.create_blob_from_bytes(copy_destination, new_blob_name, image_bytes) + # Per Azure notes https://docs.microsoft.com/en-us/azure/storage/blobs/storage-properties-metadata: + # The name of your metadata must conform to the naming conventions for C# identifiers. Dashes do not work. + # Azure blob is also setting the keys to full lowercase. + blob_metadata = { + "userFilePath": original_file_directory, + "originalFilename": original_filename, + "uploadUser": user_name + } + + blob_create_response = blob_service.create_blob_from_bytes(copy_destination, new_blob_name, image_bytes, metadata=blob_metadata) update_urls_dictionary = {image_id: blob_service.make_blob_url(copy_destination, new_blob_name)} # Otherwise, dictionary contains permanent image URLs for each image ID that was successfully copied. if not blob_create_response: logging.error("ERROR: Image copy/delete operation failed. Check state of images in storage.") else: - # Per Azure notes https://docs.microsoft.com/en-us/azure/storage/blobs/storage-properties-metadata: - # The name of your metadata must conform to the naming conventions for C# identifiers. Dashes do not work. - # Azure blob is also setting the keys to full lowercase. - blob_service.set_blob_metadata(container_name=copy_destination, - blob_name=new_blob_name, - metadata={ - "userFilePath": original_file_directory, - "originalFilename": original_filename, - "uploadUser": user_name - }) - logging.debug("Now updating permanent URLs in the DB...") data_access.update_image_urls(update_urls_dictionary, user_id) diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index f515f446..29e166cc 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -5,7 +5,7 @@ import itertools import json from ..db_provider import DatabaseInfo, PostGresProvider -from .models import ImageTag, ImageLabel, ImageTagState, AnnotatedLabel, Tag, ImageInfo, PredictionLabel +from .models import ImageTag, ImageLabel, ImageTagState, AnnotatedLabel, Tag, ImageInfo, PredictionLabel, TrainingSession class ImageTagDataAccess(object): def __init__(self, db_provider): @@ -314,6 +314,8 @@ def update_image_urls(self,image_id_to_url_map, user_id): def get_classification_map(self, class_names: set, user_id: int) -> dict: class_to_id = {} + if not class_names: + raise ValueError("Classification names must be present") try: conn = self._db_provider.get_connection() try: @@ -407,13 +409,48 @@ def add_prediction_labels(self, prediction_labels: list, training_id: int): #TODO: Update some sort of training status table? #self._update_training_status(training_id,conn) conn.commit() - # logging.debug('Inserted {0} predictions for training session {1}'.format(labels_length, training_id)) finally: cursor.close() + logging.debug('Inserted {0} predictions for training id {1}'.format(labels_length, training_id)) except Exception as e: logging.error("An errors occured updating tagged image: {0}".format(e)) raise finally: conn.close() + def add_training_session(self, training: TrainingSession, user_id: int): + training_id = -1 + try: + conn = self._db_provider.get_connection() + try: + cursor = conn.cursor() + query = ("WITH t AS ( " + "INSERT INTO Training_Info (TrainingDescription, ModelLocation, ClassPerfAvg, CreatedByUser) " + "VALUES ({},{},{},{}) RETURNING TrainingId), " + "p AS (INSERT INTO Class_Performance (TrainingId,ClassificationId,AvgPerf) " + "VALUES ") + query.format(training.description,training.model_url,training.avg_perf,user_id) + + # Append multiple TrainingId, ClassificationId and Performance values to above query + # Comma is more rows, closing parenthesis is on the last row + num_of_classes = len(training.class_perf) + for index, (classId, avgperf) in enumerate(training.class_perf): + query += "((SELECT t.TrainingId FROM t), {}, {}) ".format(classId,avgperf) + if index != num_of_classes - 1: + query += ", " + elif index == num_of_classes - 1: + query += ") " + # Finally appending a query to return the new training id + query += "SELECT t.TrainingId FROM t" + cursor.execute() + training_id = cursor.fetchone()[0] + conn.commit() + finally: cursor.close() + logging.debug('Created training session with id {} for user id {}'.format(training_id,user_id)) + except Exception as e: + logging.error('An error occured saving the training session: {}'.format(e)) + raise + finally: conn.close() + return training_id + # In practice we won't be getting multiple class names per bounding box however # VOTT supports this. If multple class names per boounding box is common we can get more # efficient with the nesting to avoid dupe bounding boxes per image diff --git a/functions/pipeline/shared/db_access/models.py b/functions/pipeline/shared/db_access/models.py index 209ce058..f28d2436 100644 --- a/functions/pipeline/shared/db_access/models.py +++ b/functions/pipeline/shared/db_access/models.py @@ -30,8 +30,9 @@ def __init__(self, image_id, x_min, x_max, y_min, y_max, classification_names): @staticmethod def fromJson(dictionary): - image_tag = ImageTag(dictionary["image_id"], dictionary["x_min"], dictionary["x_max"], dictionary["y_min"], dictionary["y_max"], dictionary["classification_names"]) - return image_tag + if dictionary.items(): + image_tag = ImageTag(dictionary["image_id"], dictionary["x_min"], dictionary["x_max"], dictionary["y_min"], dictionary["y_max"], dictionary["classification_names"]) + return image_tag #This class doesn't have box and image confidence because they are human curated labels class AnnotatedLabel(object): @@ -82,3 +83,10 @@ def __init__(self, training_id, image_id, classification_id, x_min, x_max, y_min self.image_width = image_width self.box_confidence = box_confidence self.image_confidence = image_confidence + +class TrainingSession(object): + def __init__(self, description, model_url, avg_perf: float, class_perf: dict): + self.description = description + self.model_url = model_url + self.avg_perf = avg_perf + self.class_perf = class_perf diff --git a/functions/pipeline/train/__init__.py b/functions/pipeline/train/__init__.py new file mode 100644 index 00000000..ab21d831 --- /dev/null +++ b/functions/pipeline/train/__init__.py @@ -0,0 +1,49 @@ +import logging +import jsonpickle +from collections import namedtuple +import azure.functions as func +import json +from ..shared.db_provider import get_postgres_provider +from ..shared.db_access import ImageTagDataAccess, ImageTagState, PredictionLabel + + +def main(req: func.HttpRequest) -> func.HttpResponse: + logging.info('Python HTTP trigger function processed a request.') + + user_name = req.params.get('userName') + + # setup response object + headers = { + "content-type": "application/json" + } + if not user_name: + return func.HttpResponse( + status_code=401, + headers=headers, + body=json.dumps({"error": "invalid userName given or omitted"}) + ) + else: + try: + # DB configuration + data_access = ImageTagDataAccess(get_postgres_provider()) + user_id = data_access.create_user(user_name) + + logging.debug("User '{0}' invoked train api".format(user_name)) + + logging.info("Method = " + str(req.method)) + if req.method == "GET" or req.method == "POST": + return func.HttpResponse( + status_code=200, + headers=headers, + body=jsonpickle.encode("Not implemented",unpicklable=False) + ) + # elif req.method == "POST": + # return func.HttpResponse( + # status_code=201, + # headers=headers + # ) + except Exception as e: + return func.HttpResponse( + "exception:" + str(e), + status_code=500 + ) \ No newline at end of file diff --git a/functions/pipeline/train/function.json b/functions/pipeline/train/function.json new file mode 100644 index 00000000..a33d0f5d --- /dev/null +++ b/functions/pipeline/train/function.json @@ -0,0 +1,21 @@ +{ + "scriptFile": "__init__.py", + "bindings": [ + { + "authLevel": "anonymous", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "get", + "post" + ] + }, + { + "type": "http", + "direction": "out", + "name": "$return" + } + ] + } + \ No newline at end of file diff --git a/functions/pipeline/train/host.json b/functions/pipeline/train/host.json new file mode 100644 index 00000000..1c8bb37a --- /dev/null +++ b/functions/pipeline/train/host.json @@ -0,0 +1,3 @@ +{ + "version": "2.0" + } \ No newline at end of file diff --git a/functions/pipeline/upload/__init__.py b/functions/pipeline/upload/__init__.py index 91a5fd97..9dffa5ec 100644 --- a/functions/pipeline/upload/__init__.py +++ b/functions/pipeline/upload/__init__.py @@ -38,11 +38,14 @@ def main(req: func.HttpRequest) -> func.HttpResponse: if ids_to_tags[image_id]: all_imagetags.extend(__create_ImageTag_list(image_id, ids_to_tags[image_id])) - logging.info("Update all visited images with tags and set state to completed") unique_class_names = upload_data["uniqueClassNames"] - class_map = data_access.get_classification_map(unique_class_names,user_id) - annotated_labels = data_access.convert_to_annotated_label(all_imagetags,class_map) - data_access.update_tagged_images_v2(annotated_labels,user_id) + if all_imagetags and unique_class_names: + logging.info("Update all visited images with tags and set state to completed") + class_map = data_access.get_classification_map(unique_class_names,user_id) + annotated_labels = data_access.convert_to_annotated_label(all_imagetags,class_map) + data_access.update_tagged_images_v2(annotated_labels,user_id) + else: + logging.info("No tagged image ids or classifications received") logging.info("Update visited but no tags identified images") data_access.update_completed_untagged_images(upload_data["imagesVisitedNoTag"], user_id) @@ -52,7 +55,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: return func.HttpResponse( body=json.dumps(upload_data), - status_code=200, + status_code=201, headers={ "content-type": "application/json"}, ) except Exception as e: diff --git a/train_vnext/training.py b/train_vnext/training.py index 6a762753..acbd2440 100644 --- a/train_vnext/training.py +++ b/train_vnext/training.py @@ -30,24 +30,28 @@ def train(legacy_config, user_name, function_url): convert_tagging_labels_to_csv(training_data["taggingLabelData"], legacy_config.get('tagging_output')) -def download_images(imageURLs, file_location): - file_location = os.path.expanduser(file_location) - print("Downloading images to " + file_location + ", this may take a few seconds...") - # Download tagged images into tagged folder - if not os.path.exists(file_location): - os.makedirs(file_location) +def download_images(image_urls, folder_location): + folder_location = os.path.expanduser(folder_location) + print("Syncing images to " + folder_location) + + if not os.path.exists(folder_location): + print("Directory doesn't exist so downloading all images may take a few minutes...") + os.makedirs(folder_location) + + existing_files = {os.path.relpath(os.path.join(directory, cur_file), folder_location) for (directory, _, filenames) + in os.walk(folder_location) for cur_file in filenames} + try: - for image in imageURLs: - filename = get_image_name_from_url(image) - location = image - # extension = location.split('.')[-1] - with urllib.request.urlopen(location) as response, open(file_location + '/' + str(filename), 'wb') as out_file: - data = response.read() # a `bytes` object - out_file.write(data) + for image_url in image_urls: + file_name = get_image_name_from_url(image_url) + if file_name not in existing_files: + with urllib.request.urlopen(image_url) as response, open(folder_location + '/' + str(file_name), 'wb') as out_file: + data = response.read() # a `bytes` object + out_file.write(data) except Exception as e: - print("An error occurred attempting to download image at {0}:\n\n{1}".format(image,e)) + print("An error occurred attempting to download image at {0}:\n\n{1}".format(image_url,e)) raise - print("Downloaded images into " + file_location) + print("Synced images into " + folder_location) def download_data_for_training(user_name, function_url): @@ -72,7 +76,7 @@ def download_data_for_training(user_name, function_url): response = requests.get(url, params=query) tagged_label_data = response.json() - tagging_image_data = set([item['name'] for item in all_images_json if item['tagstate'] == ImageTagState.TAG_IN_PROGRESS]) + tagging_image_data = set([get_image_name_from_url(item['location']) for item in all_images_json if item['tagstate'] == ImageTagState.TAG_IN_PROGRESS]) return { "imageURLs": image_urls_to_download, "taggedLabelData": tagged_label_data, "taggingLabelData": tagging_image_data } @@ -172,4 +176,4 @@ def get_image_name_from_url(image_url): args = parser.parse_args() legacy_config = get_legacy_config(args.config_file) config = Config.read_config(CONFIG_PATH) - train(legacy_config, config.get("tagging_user"), config.get("url")) + train(legacy_config, config.get("tagging_user"), config.get("url")) \ No newline at end of file diff --git a/train_vnext/validate_config.py b/train_vnext/validate_config.py index 6cc5a2c1..baee7cdf 100644 --- a/train_vnext/validate_config.py +++ b/train_vnext/validate_config.py @@ -42,7 +42,7 @@ def get_legacy_config(config_path: str) -> dict: current_dir_path = os.path.dirname(os.path.abspath(__file__)) configured_path = legacy_config_file["python_file_directory"] if os.path.abspath(configured_path) != current_dir_path: - msg = "Update 'python_file_directory' in {}".format(config_path) + msg = "Expected 'python_file_directory' to be {}".format(current_dir_path) raise IllegalArgumentError(msg) #TODO: Validate that the images we have match the filetype From ab2dab3209daa79fea50fa4cbe528816b382e87c Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Sun, 16 Dec 2018 17:19:42 -0800 Subject: [PATCH 127/145] Fixed issue that was causing model training errors (#91) * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Removed comment * Change * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Added a new version of the data access layer. Added simple unit tests. * Added comments * Fixed issue * Changed query formatting in some areas * Removing unused files * Removed __init__.py that was causing pytest issues. Updated yaml. * Added packages * Fixed format issue * Fixing more linting issues * Removing 3.5 from matrix * Changes to enforce Tagging_User as a key in the CLI config * Updated requirements.txt. Fixed pylint issues. Updated test gen script * Added 2 new tables. Renamed tables to support ordered deploy * Added support for user creating and auditing in DB, DAL, and deployment. * Adding support to check if db already exists. * Added comment * Fixed issue in db resoruces install file. Updated table schema * Updated deployment to be more idempotent. Updated table schemas * Fixed issue * Changed query formatting in some areas * Changes to enforce Tagging_User as a key in the CLI config * Updates * Fixed bug in model conversion. Added PASCAL VOC file creation * Comment --- functions/pipeline/shared/db_access/models.py | 2 +- train_vnext/active_learning_train.sh | 8 ++------ train_vnext/training.py | 9 +++++++++ train_vnext/validate_config.py | 3 ++- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/functions/pipeline/shared/db_access/models.py b/functions/pipeline/shared/db_access/models.py index f28d2436..2622c252 100644 --- a/functions/pipeline/shared/db_access/models.py +++ b/functions/pipeline/shared/db_access/models.py @@ -71,7 +71,7 @@ def __init__(self,classificationname, x_min: float, x_max: float, y_min: float, self.x_min = x_min self.x_max = x_max self.y_min = y_min - self.y_max = y_min + self.y_max = y_max self.classificationname = classificationname class PredictionLabel(AnnotatedLabel): diff --git a/train_vnext/active_learning_train.sh b/train_vnext/active_learning_train.sh index 9b4ce963..7c334223 100644 --- a/train_vnext/active_learning_train.sh +++ b/train_vnext/active_learning_train.sh @@ -1,6 +1,6 @@ #!/bin/bash -#TODO: We would like to fail on first error but it kills the SSH connection -#set -e +#TODO: We would like to fail on first error but it kills the SSH connection. Use "sh filename.sh" from bash +set -e # Source environmental variables set -a sed -i 's/\r//g' $1 @@ -9,10 +9,6 @@ set +a # Updating vars in config file envsubst < $1 > cur_config.ini -# Update images from blob storage -echo "Updating Blob Folder" -# TODO: download at images to config_file["image_dir"] - # Create TFRecord from images + csv file on blob storage echo "Creating TF Record" python ${python_file_directory}/create_tf_record.py cur_config.ini diff --git a/train_vnext/training.py b/train_vnext/training.py index acbd2440..9340bbb3 100644 --- a/train_vnext/training.py +++ b/train_vnext/training.py @@ -29,6 +29,9 @@ def train(legacy_config, user_name, function_url): convert_tagged_labels_to_csv(training_data["taggedLabelData"],legacy_config.get('tagged_output')) convert_tagging_labels_to_csv(training_data["taggingLabelData"], legacy_config.get('tagging_output')) + #create label map + create_pascal_label_map(legacy_config.get('label_map_path'),legacy_config.get('classes').split(",")) + def download_images(image_urls, folder_location): folder_location = os.path.expanduser(folder_location) @@ -170,6 +173,12 @@ def get_image_name_from_url(image_url): start_idx = image_url.rfind('/')+1 return image_url[start_idx:] +def create_pascal_label_map(label_map_path: str, class_names: list): + with open(label_map_path, "w") as map_file: + for index, name in enumerate(class_names, 1): + map_file.write("item {{\n id: {}\n name: '{}'\n}}".format(index, name)) + print("Created Pascal VOC format file: " + label_map_path) + if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('-c', '--config-file', required=True) diff --git a/train_vnext/validate_config.py b/train_vnext/validate_config.py index baee7cdf..64f655aa 100644 --- a/train_vnext/validate_config.py +++ b/train_vnext/validate_config.py @@ -59,7 +59,8 @@ def get_legacy_config(config_path: str) -> dict: "validation_output", "untagged_output", "inference_output_dir", - "python_file_directory" + "python_file_directory", + "label_map_path" ] result = {} From a941ea65745320a73887f9fa6faf9769d363f541 Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Mon, 17 Dec 2018 15:01:16 -0800 Subject: [PATCH 128/145] Minor QoL changes. (#92) * ignoring .DS_Store * Adding required fields to local.settings.json for running functions locally --- .gitignore | 2 ++ functions/pipeline/local.settings.json | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1aaec666..4533ea7d 100644 --- a/.gitignore +++ b/.gitignore @@ -125,3 +125,5 @@ tag/*.csv # Function extension /bin and /obj folders Functions/pipeline/bin Functions/pipeline/obj + +.DS_Store diff --git a/functions/pipeline/local.settings.json b/functions/pipeline/local.settings.json index 9267e456..0c027522 100644 --- a/functions/pipeline/local.settings.json +++ b/functions/pipeline/local.settings.json @@ -3,6 +3,14 @@ "Values": { "FUNCTIONS_WORKER_RUNTIME": "python", "AzureWebJobsStorage": "{AzureWebJobsStorage}", - "STORAGE_CONNECTION_STRING": "replace this when running local func" + "STORAGE_CONNECTION_STRING": "", + "STORAGE_ACCOUNT_NAME": "", + "STORAGE_ACCOUNT_KEY": "", + "SOURCE_CONTAINER_NAME": "", + "DESTINATION_CONTAINER_NAME": "", + "DB_HOST": "", + "DB_NAME": "", + "DB_PASS": "", + "DB_USER": "" } } From 261f0fe5db51ec5b8f6d309ec3253bb3e56fbc8c Mon Sep 17 00:00:00 2001 From: Samiya Date: Tue, 18 Dec 2018 10:55:51 -0800 Subject: [PATCH 129/145] Post training upload performance and prediction data (#93) * Uploading prediction labels and performance to db * Minor changes * CR feedback * Update tagged.csv data to absolute * Refactoring * Added comments --- .../pipeline/shared/db_access/__init__.py | 2 +- .../pipeline/shared/db_access/db_access_v2.py | 8 +- functions/pipeline/shared/db_access/models.py | 13 ++ functions/pipeline/train/__init__.py | 18 ++- train_vnext/training.py | 134 +++++++++++++++--- 5 files changed, 140 insertions(+), 35 deletions(-) diff --git a/functions/pipeline/shared/db_access/__init__.py b/functions/pipeline/shared/db_access/__init__.py index 7e3666d2..ff344272 100644 --- a/functions/pipeline/shared/db_access/__init__.py +++ b/functions/pipeline/shared/db_access/__init__.py @@ -1,2 +1,2 @@ -from .models import ImageTag, ImageInfo, ImageTagState, ImageLabel, PredictionLabel +from .models import ImageTag, ImageInfo, ImageTagState, ImageLabel, PredictionLabel, TrainingSession, Tag from .db_access_v2 import ImageTagDataAccess \ No newline at end of file diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index 29e166cc..fad273fe 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -424,7 +424,7 @@ def add_training_session(self, training: TrainingSession, user_id: int): cursor = conn.cursor() query = ("WITH t AS ( " "INSERT INTO Training_Info (TrainingDescription, ModelLocation, ClassPerfAvg, CreatedByUser) " - "VALUES ({},{},{},{}) RETURNING TrainingId), " + "VALUES ('{}','{}',{},{}) RETURNING TrainingId), " "p AS (INSERT INTO Class_Performance (TrainingId,ClassificationId,AvgPerf) " "VALUES ") query.format(training.description,training.model_url,training.avg_perf,user_id) @@ -432,15 +432,15 @@ def add_training_session(self, training: TrainingSession, user_id: int): # Append multiple TrainingId, ClassificationId and Performance values to above query # Comma is more rows, closing parenthesis is on the last row num_of_classes = len(training.class_perf) - for index, (classId, avgperf) in enumerate(training.class_perf): - query += "((SELECT t.TrainingId FROM t), {}, {}) ".format(classId,avgperf) + for index, classId in enumerate(training.class_perf): + query += "((SELECT t.TrainingId FROM t), {}, {}) ".format(classId,training.class_perf[classId]) if index != num_of_classes - 1: query += ", " elif index == num_of_classes - 1: query += ") " # Finally appending a query to return the new training id query += "SELECT t.TrainingId FROM t" - cursor.execute() + cursor.execute(query) training_id = cursor.fetchone()[0] conn.commit() finally: cursor.close() diff --git a/functions/pipeline/shared/db_access/models.py b/functions/pipeline/shared/db_access/models.py index 2622c252..941b6228 100644 --- a/functions/pipeline/shared/db_access/models.py +++ b/functions/pipeline/shared/db_access/models.py @@ -74,6 +74,13 @@ def __init__(self,classificationname, x_min: float, x_max: float, y_min: float, self.y_max = y_max self.classificationname = classificationname + def convert_to_relative(self, width, height): + self.x_min = self.x_min/width + self.x_max = self.x_max/width + self.y_min = self.y_min/height + self.y_max = self.y_max/height + + class PredictionLabel(AnnotatedLabel): def __init__(self, training_id, image_id, classification_id, x_min, x_max, y_min, y_max, image_height, image_width, box_confidence=0, image_confidence= 0): @@ -84,6 +91,12 @@ def __init__(self, training_id, image_id, classification_id, x_min, x_max, y_min self.box_confidence = box_confidence self.image_confidence = image_confidence + def convert_to_absolute(self): + self.x_min = self.x_min*self.image_width + self.x_max = self.x_max*self.image_width + self.y_min = self.y_min*self.image_height + self.y_max = self.y_max*self.image_height + class TrainingSession(object): def __init__(self, description, model_url, avg_perf: float, class_perf: dict): self.description = description diff --git a/functions/pipeline/train/__init__.py b/functions/pipeline/train/__init__.py index ab21d831..18776d0c 100644 --- a/functions/pipeline/train/__init__.py +++ b/functions/pipeline/train/__init__.py @@ -4,7 +4,7 @@ import azure.functions as func import json from ..shared.db_provider import get_postgres_provider -from ..shared.db_access import ImageTagDataAccess, ImageTagState, PredictionLabel +from ..shared.db_access import ImageTagDataAccess, ImageTagState, PredictionLabel, TrainingSession def main(req: func.HttpRequest) -> func.HttpResponse: @@ -31,17 +31,21 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.debug("User '{0}' invoked train api".format(user_name)) logging.info("Method = " + str(req.method)) - if req.method == "GET" or req.method == "POST": + if req.method == "GET": return func.HttpResponse( status_code=200, headers=headers, body=jsonpickle.encode("Not implemented",unpicklable=False) ) - # elif req.method == "POST": - # return func.HttpResponse( - # status_code=201, - # headers=headers - # ) + elif req.method == "POST": + payload = json.loads(req.get_body()) + payload_json = namedtuple('TrainingSession', payload.keys())(*payload.values()) + training_id = data_access.add_training_session(payload_json, user_id) + return func.HttpResponse( + status_code=201, + headers=headers, + body=str(training_id) + ) except Exception as e: return func.HttpResponse( "exception:" + str(e), diff --git a/train_vnext/training.py b/train_vnext/training.py index 9340bbb3..fdd487ed 100644 --- a/train_vnext/training.py +++ b/train_vnext/training.py @@ -2,6 +2,7 @@ import os import csv import requests +import datetime from azure.storage.blob import BlockBlobService, ContentSettings from utils.blob_utils import BlobStorage from utils.config import Config @@ -10,7 +11,8 @@ import sys import time import jsonpickle -from functions.pipeline.shared.db_access import ImageTagState, PredictionLabel +import json +from functions.pipeline.shared.db_access import ImageTagState, PredictionLabel, TrainingSession, Tag CONFIG_PATH = os.environ.get('ALCONFIG', None) @@ -112,33 +114,25 @@ def convert_tagged_labels_to_csv(data, tagged_output_file_path): image_height = img["image_height"] image_width = img["image_width"] for label in img["labels"]: - data = [imagelocation, label["classificationname"], label['x_min'], label['x_max'], label['y_min'], label['y_max'], image_height, image_width] + # Create new tag and convert it to relative coordinates + tag = Tag(label["classificationname"], float(label['x_min']), float(label['x_max']), float(label['y_min']), float(label['y_max'])) + # Save it in relative coordinates for training scripts + tag.convert_to_relative(int(image_width), int(image_height)) + data = [imagelocation, + tag.classificationname, + tag.x_min, + tag.x_max, + tag.y_min, + tag.y_max, + image_height, + image_width] filewriter.writerow(data) print("Created tagged csv file: " + tagged_output_file_path) except Exception as e: print("An error occurred attempting to write to file at {0}:\n\n{1}".format(tagged_output_file_path,e)) raise -def upload_data_post_training(prediction_output_file, training_id, user_name,function_url): - function_url = function_url + "/api/classification" - query = { - "userName": user_name - } - - # First, we need to get a mapping of class names to class ids - classes = "" - with open(prediction_output_file) as f: - content = f.readlines() - for line in content: - class_name = line.strip().split(',')[1] - if class_name not in classes: - classes = classes + class_name + "," - - query["className"] = classes[:-1] - response = requests.get(function_url, params=query) - classification_name_to_class_id = response.json() - - # Now that we have a mapping, we create prediction labels in db +def upload_data_post_training(prediction_output_file, classification_name_to_class_id, training_id, user_name,function_url): query = { "userName": user_name, "trainingId": training_id @@ -146,6 +140,7 @@ def upload_data_post_training(prediction_output_file, training_id, user_name,fun function_url = function_url + "/api/labels" payload_json = process_post_training_csv(prediction_output_file, training_id, classification_name_to_class_id) requests.post(function_url, params=query, json=payload_json) + print("Uploaded prediction labels to db.") def process_post_training_csv(csv_path, training_id, classification_name_to_class_id): payload_json = [] @@ -155,6 +150,7 @@ def process_post_training_csv(csv_path, training_id, classification_name_to_clas for row in reader: class_name = row[1] if class_name in classification_name_to_class_id: + # Convert the bounding boxes to be with respect to image dimensions prediction_label = PredictionLabel(training_id, int(row[0].split('.')[0]), classification_name_to_class_id[class_name], @@ -166,9 +162,88 @@ def process_post_training_csv(csv_path, training_id, classification_name_to_clas int(row[7]), float(row[8]), float(row[9])) + # Save in the database in absolute terms to have parity + prediction_label.convert_to_absolute() payload_json.append(prediction_label) return jsonpickle.encode(payload_json, unpicklable=False) +def save_training_session(config, model_location, perf_location, prediction_labels_location): + # First, upload the model to blob storage + cur_date_time = "{date:%Y_%m_%d_%H_%M_%S}".format(date=datetime.datetime.utcnow()) + file_name = "frozen_inference_graph_" + cur_date_time + ".pb" + model_location = upload_model_to_blob_storage(config, model_location, file_name, config.get("tagging_user")) + + # Get the mapping for class name to class id + overall_average, classification_name_to_class_id, avg_dictionary = process_classifications(perf_location, config.get("tagging_user"), config.get("url")) + + # Create a new training session in db and get its id + training_id = construct_new_training_session(perf_location, classification_name_to_class_id, overall_average, cur_date_time, model_location, avg_dictionary, config.get("tagging_user"), config.get("url")) + + # Upload prediction labels to the db + upload_data_post_training(prediction_labels_location, classification_name_to_class_id, training_id, config.get("tagging_user"), config.get("url")) + +def upload_model_to_blob_storage(config, model_location, file_name, user_name): + blob_storage = BlobStorage.get_azure_storage_client(config) + blob_metadata = { + "userFilePath": model_location, + "uploadUser": user_name + } + uri = 'https://' + config.get("storage_account") + '.blob.core.windows.net/' + config.get("storage_container") + '/' + file_name + blob_storage.create_blob_from_path( + config.get("storage_container"), + file_name, + model_location, + metadata=blob_metadata + ) + print("Model uploaded at " + str(uri)) + return uri + +def construct_new_training_session(perf_location, classification_name_to_class_id, overall_average, training_description, model_location, avg_dictionary, user_name, function_url): + training_session = TrainingSession(training_description, model_location, overall_average, avg_dictionary) + query = { + "userName": user_name + } + function_url = function_url + "/api/train" + payload = jsonpickle.encode(training_session, unpicklable=False) + response = requests.post(function_url, params=query, json=payload) + training_id = int(response.json()) + print("Created a new training session with id: " + str(training_id)) + return training_id + +def process_classifications(perf_location, user_name,function_url): + # First build query string to get classification map + classes = "" + query = { + "userName": user_name + } + function_url = function_url + "/api/classification" + overall_average = 0.0 + with open(perf_location) as f: + content = csv.reader(f, delimiter=',') + next(content, None) #Skip header + for line in content: + class_name = line[0].strip() + if class_name == "Average": + overall_average = line[1] + elif class_name not in classes and class_name != "NULL": + classes = classes + class_name + "," + + query["className"] = classes[:-1] + print("Getting classification map for classes " + query["className"]) + response = requests.get(function_url, params=query) + classification_name_to_class_id = response.json() + + # Now that we have classification map, build the dictionary that maps class id : average + avg_dictionary = {} + with open(perf_location) as csvfile: + reader = csv.reader(csvfile, delimiter=',') + next(reader, None) #Skip header + for row in reader: + if row[0] != "NULL" and row[0] in classification_name_to_class_id: + avg_dictionary[classification_name_to_class_id[row[0]]] = row[1] + + return overall_average, classification_name_to_class_id, avg_dictionary + def get_image_name_from_url(image_url): start_idx = image_url.rfind('/')+1 return image_url[start_idx:] @@ -182,7 +257,20 @@ def create_pascal_label_map(label_map_path: str, class_names: list): if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('-c', '--config-file', required=True) + parser.add_argument( + 'operation', + choices=['start', 'save'] + ) args = parser.parse_args() + operation = args.operation legacy_config = get_legacy_config(args.config_file) config = Config.read_config(CONFIG_PATH) - train(legacy_config, config.get("tagging_user"), config.get("url")) \ No newline at end of file + + if operation == "start": + train(legacy_config, config.get("tagging_user"), config.get("url")) + elif operation == "save": + # Upload the model saved at ${inference_output_dir}/frozen_inference_graph.pb + save_training_session(config, + legacy_config.get("inference_output_dir") + "/frozen_inference_graph.pb", + legacy_config.get("validation_output"), + legacy_config.get("untagged_output")) \ No newline at end of file From c32e33091e36518c363ac5eb8cd7bd86956885c3 Mon Sep 17 00:00:00 2001 From: Samiya Date: Tue, 18 Dec 2018 15:05:54 -0800 Subject: [PATCH 130/145] Update download to use images api (#95) * Update download api to use images api * Fix condition * Rename --- cli/operations.py | 5 +- functions/pipeline/download/__init__.py | 58 ----------------------- functions/pipeline/download/function.json | 19 -------- functions/pipeline/download/host.json | 3 -- functions/pipeline/images/__init__.py | 34 +++++++++---- 5 files changed, 28 insertions(+), 91 deletions(-) delete mode 100644 functions/pipeline/download/__init__.py delete mode 100644 functions/pipeline/download/function.json delete mode 100644 functions/pipeline/download/host.json diff --git a/cli/operations.py b/cli/operations.py index 7f9abde0..a11e0339 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -111,12 +111,13 @@ def _download_bounds(num_images): def download(config, num_images, strategy=None): # TODO: better/more proper URI handling. - functions_url = config.get("url") + "/api/download" + functions_url = config.get("url") + "/api/images" user_name = config.get("tagging_user") images_to_download = _download_bounds(num_images) query = { "imageCount": images_to_download, - "userName": user_name + "userName": user_name, + "checkOut": "true" } response = requests.get(functions_url, params=query) diff --git a/functions/pipeline/download/__init__.py b/functions/pipeline/download/__init__.py deleted file mode 100644 index fff21bf4..00000000 --- a/functions/pipeline/download/__init__.py +++ /dev/null @@ -1,58 +0,0 @@ -import logging - -import azure.functions as func -import json -import jsonpickle -from ..shared.db_provider import get_postgres_provider -from ..shared.db_access import ImageTagDataAccess - - -def main(req: func.HttpRequest) -> func.HttpResponse: - logging.info('Python HTTP trigger function processed a request.') - - image_count = req.params.get('imageCount') - user_name = req.params.get('userName') - - # setup response object - headers = { - "content-type": "application/json" - } - if not user_name: - return func.HttpResponse( - status_code=401, - headers=headers, - body=json.dumps({"error": "invalid userName given or omitted"}) - ) - elif not image_count: - return func.HttpResponse( - status_code=400, - headers=headers, - body=json.dumps({"error": "image count not specified"}) - ) - else: - try: - # DB configuration - image_count = int(image_count) - data_access = ImageTagDataAccess(get_postgres_provider()) - user_id = data_access.create_user(user_name) - - image_count = int(image_count) - checked_out_images = data_access.checkout_images(image_count, user_id) - existing_classifications_list = data_access.get_existing_classifications() - - return_body_json = { - "images": jsonpickle.encode(checked_out_images, unpicklable=False), - "classification_list": existing_classifications_list - } - - content = json.dumps(return_body_json) - return func.HttpResponse( - status_code=200, - headers=headers, - body=content - ) - except Exception as e: - return func.HttpResponse( - "exception:" + str(e), - status_code=500 - ) diff --git a/functions/pipeline/download/function.json b/functions/pipeline/download/function.json deleted file mode 100644 index f24e4f1d..00000000 --- a/functions/pipeline/download/function.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "scriptFile": "__init__.py", - "bindings": [ - { - "authLevel": "anonymous", - "type": "httpTrigger", - "direction": "in", - "name": "req", - "methods": [ - "get" - ] - }, - { - "type": "http", - "direction": "out", - "name": "$return" - } - ] -} diff --git a/functions/pipeline/download/host.json b/functions/pipeline/download/host.json deleted file mode 100644 index 81e35b7b..00000000 --- a/functions/pipeline/download/host.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "2.0" -} \ No newline at end of file diff --git a/functions/pipeline/images/__init__.py b/functions/pipeline/images/__init__.py index e63d93aa..e5a9922b 100644 --- a/functions/pipeline/images/__init__.py +++ b/functions/pipeline/images/__init__.py @@ -2,7 +2,7 @@ import azure.functions as func import json - +import jsonpickle from ..shared.db_provider import get_postgres_provider from ..shared.db_access import ImageTagDataAccess, ImageTagState @@ -14,6 +14,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: user_name = req.params.get('userName') tag_status = req.params.get('tagStatus') image_ids = req.params.get('imageId') + checkout = req.params.get('checkOut') # setup response object headers = { @@ -25,11 +26,17 @@ def main(req: func.HttpRequest) -> func.HttpResponse: headers=headers, body=json.dumps({"error": "invalid userName given or omitted"}) ) - elif not tag_status and not image_ids: + elif not tag_status and not image_ids and not checkout: + return func.HttpResponse( + status_code=400, + headers=headers, + body=json.dumps({"error": "either of tag status or images ids needs to be specified if not checking out images for download"}) + ) + elif checkout and checkout.lower() == "true" and not image_count: return func.HttpResponse( status_code=400, headers=headers, - body=json.dumps({"error": "either of tag status or images ids needs to be specified"}) + body=json.dumps({"error": "image count needs to be specified when checking out images"}) ) else: try: @@ -37,12 +44,21 @@ def main(req: func.HttpRequest) -> func.HttpResponse: data_access = ImageTagDataAccess(get_postgres_provider()) user_id = data_access.create_user(user_name) - #TODO: Merge with the existing "Download" API - # If client adds the querystring param api/images&vott=true - # Then we should do "check out" behavior and return a VOTT json in the - # return payload. This is already implemented in the "Download" API - # Consequently this "Images" API is all about images and optionally - # "check out" behavior. This supports both tagging and training needs + # This offers download api functionality to check out n images. + # We ignore the rest of query params when checkOut is set to true. + if checkout and checkout.lower() == "true": + image_count = int(image_count) + checked_out_images = data_access.checkout_images(image_count, user_id) + existing_classifications_list = data_access.get_existing_classifications() + return_body_json = { + "images": jsonpickle.encode(checked_out_images, unpicklable=False), + "classification_list": existing_classifications_list + } + return func.HttpResponse( + status_code=200, + headers=headers, + body=json.dumps(return_body_json) + ) # Get images info if image_ids: From 5caf85ebda61f8980ad23f92ba44cc6ac86ed55a Mon Sep 17 00:00:00 2001 From: Samiya Date: Tue, 18 Dec 2018 15:07:28 -0800 Subject: [PATCH 131/145] Fix failure in response handling of onboarding operation (#96) --- cli/operations.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/cli/operations.py b/cli/operations.py index a11e0339..ea4a9c20 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -63,15 +63,15 @@ def onboard_folder(config, folder_name): } response = requests.post(functions_url, json=data, params=query) + response_json = response.json() response.raise_for_status() - print("Successfully uploaded images.") - #TODO: Recent Onboarding refactoring doesn't return ImageURLs anymore - # json_resp = response.json() - # count = len(json_resp['imageUrls']) - # print("Successfully uploaded " + str(count) + " images.") - # for url in json_resp['imageUrls']: - # print(url) + if 'Success' in response_json: + print("Successfully onboarded {0} images.".format(len(images))) + if 'copy_failed' in response_json: + print("Failed to copy following images to permanent storage: " + str(response_json['copy_failed'])) + if 'delete_failed' in response_json: + print("Failed to delete following images from permanent storage: " + str(response_json['delete_failed'])) def onboard_container(config, account, key, container): From 8c09e351933e0e4180b991136a3fe7716b5c261d Mon Sep 17 00:00:00 2001 From: Michael Tarng <20913254+mtarng@users.noreply.github.com> Date: Tue, 18 Dec 2018 15:08:07 -0800 Subject: [PATCH 132/145] Signing image download url for images endpoint (#98) --- functions/pipeline/images/__init__.py | 6 +++ .../pipeline/onboardcontainer/__init__.py | 25 +++-------- .../pipeline/shared/storage_utils/__init__.py | 43 +++++++++++++++++++ 3 files changed, 54 insertions(+), 20 deletions(-) create mode 100644 functions/pipeline/shared/storage_utils/__init__.py diff --git a/functions/pipeline/images/__init__.py b/functions/pipeline/images/__init__.py index e5a9922b..bfd04153 100644 --- a/functions/pipeline/images/__init__.py +++ b/functions/pipeline/images/__init__.py @@ -5,6 +5,7 @@ import jsonpickle from ..shared.db_provider import get_postgres_provider from ..shared.db_access import ImageTagDataAccess, ImageTagState +from ..shared.storage_utils import get_signed_url_for_permstore_blob def main(req: func.HttpRequest) -> func.HttpResponse: @@ -70,6 +71,11 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.debug("Received {0} images in tag status {1}".format(len(images_by_tag_status),tag_status)) image_infos = data_access.get_image_info_for_image_ids(list(images_by_tag_status.keys())) + # For each image_info in image_infos, update image_info.location a signed url. + for image_info in image_infos: + signed_url_location = get_signed_url_for_permstore_blob(image_info['location']) + image_info['location'] = signed_url_location + content = json.dumps(image_infos) return func.HttpResponse( status_code=200, diff --git a/functions/pipeline/onboardcontainer/__init__.py b/functions/pipeline/onboardcontainer/__init__.py index 1a00aef0..887e1184 100644 --- a/functions/pipeline/onboardcontainer/__init__.py +++ b/functions/pipeline/onboardcontainer/__init__.py @@ -5,6 +5,7 @@ from urlpath import URL from datetime import datetime, timedelta from ..shared.constants import ImageFileType +from ..shared.storage_utils import get_filepath_from_url from azure.storage.blob import BlockBlobService, BlobPermissions from azure.storage.queue import QueueService, QueueMessageFormat @@ -45,8 +46,9 @@ def main(req: func.HttpRequest) -> func.HttpResponse: ) # Create blob service for storage account (retrieval source) - blob_service = BlockBlobService(account_name=storage_account, - account_key=storage_account_key) + blob_service = BlockBlobService( + account_name=storage_account, + account_key=storage_account_key) # Queue service for perm storage and queue queue_service = QueueService( @@ -89,7 +91,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: "imageUrl": signed_url.as_uri(), "fileName": str(blob_url.name), "fileExtension": str(blob_url.suffix), - "directoryComponents": __get_filepath_from_url(blob_url, storage_container), + "directoryComponents": get_filepath_from_url(blob_url, storage_container), "userName": user_name } @@ -107,20 +109,3 @@ def main(req: func.HttpRequest) -> func.HttpResponse: logging.error("ERROR: Could not build blob object list. Exception: " + str(e)) return func.HttpResponse("ERROR: Could not get list of blobs in storage_container={0}. Exception={1}".format( storage_container, e), status_code=500) - - -def __get_filepath_from_url(blob_url: URL, storage_container): - blob_uri = blob_url.path - return __remove_postfix(__remove_prefix(blob_uri, '/' + storage_container), '/' + blob_url.name) - - -def __remove_prefix(text, prefix): - if text.startswith(prefix): - return text[len(prefix):] - return text - - -def __remove_postfix(text, postfix): - if not text.endswith(postfix): - return text - return text[:len(text)-len(postfix)] diff --git a/functions/pipeline/shared/storage_utils/__init__.py b/functions/pipeline/shared/storage_utils/__init__.py new file mode 100644 index 00000000..1f252a6a --- /dev/null +++ b/functions/pipeline/shared/storage_utils/__init__.py @@ -0,0 +1,43 @@ +import logging +import os +from urlpath import URL +from datetime import datetime, timedelta +from azure.storage.blob import BlockBlobService, BlobPermissions + +def get_signed_url_for_permstore_blob(permstore_url): + blob_url = URL(permstore_url) + + # create sas signature + blob_service = __get_perm_store_service() + sas_signature = blob_service.generate_blob_shared_access_signature( + os.getenv('DESTINATION_CONTAINER_NAME'), + blob_url.name, + BlobPermissions.READ, + datetime.utcnow() + timedelta(hours=1) + ) + + logging.debug("INFO: have sas signature {}".format(sas_signature)) + signed_url = blob_url.with_query(sas_signature) + return signed_url.as_uri() + + +def __get_perm_store_service(): + return BlockBlobService(account_name=os.getenv('STORAGE_ACCOUNT_NAME'), + account_key=os.getenv('STORAGE_ACCOUNT_KEY')) + + +def get_filepath_from_url(blob_url: URL, storage_container): + blob_uri = blob_url.path + return __remove_postfix(__remove_prefix(blob_uri, '/' + storage_container), '/' + blob_url.name) + + +def __remove_prefix(text, prefix): + if text.startswith(prefix): + return text[len(prefix):] + return text + + +def __remove_postfix(text, postfix): + if not text.endswith(postfix): + return text + return text[:len(text)-len(postfix)] \ No newline at end of file From 8220a6863967b54dbc16c0bd2d9353639609a79a Mon Sep 17 00:00:00 2001 From: Samiya Date: Tue, 18 Dec 2018 15:14:34 -0800 Subject: [PATCH 133/145] Update upload to use labels api (#97) --- cli/operations.py | 5 +- functions/pipeline/labels/__init__.py | 83 ++++++++++++++++++++----- functions/pipeline/upload/__init__.py | 66 -------------------- functions/pipeline/upload/function.json | 20 ------ 4 files changed, 70 insertions(+), 104 deletions(-) delete mode 100644 functions/pipeline/upload/__init__.py delete mode 100644 functions/pipeline/upload/function.json diff --git a/cli/operations.py b/cli/operations.py index ea4a9c20..c8009e96 100644 --- a/cli/operations.py +++ b/cli/operations.py @@ -202,7 +202,7 @@ def write_vott_data(image_dir, json_resp): def upload(config): - functions_url = config.get("url") + "/api/upload" + functions_url = config.get("url") + "/api/labels" user_name = config.get("tagging_user") tagging_location = pathlib.Path( os.path.expanduser(config.get("tagging_location")) @@ -215,7 +215,8 @@ def upload(config): json_data = json.load(json_file) process_json = process_vott_json(json_data) query = { - "userName": user_name + "userName": user_name, + "upload": "true" } response = requests.post(functions_url, json=process_json, params=query) diff --git a/functions/pipeline/labels/__init__.py b/functions/pipeline/labels/__init__.py index bc10d575..cd90962e 100644 --- a/functions/pipeline/labels/__init__.py +++ b/functions/pipeline/labels/__init__.py @@ -4,36 +4,40 @@ import azure.functions as func import json from ..shared.db_provider import get_postgres_provider -from ..shared.db_access import ImageTagDataAccess, ImageTagState, PredictionLabel +from ..shared.db_access import ImageTagDataAccess, ImageTagState, PredictionLabel, ImageTag +DEFAULT_RETURN_HEADER= { "content-type": "application/json" } +# GET returns all human annotated labels +# POST calls with upload=true flag save all human annotated labels +# POST calls with trainingId param save predicted labels def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') user_name = req.params.get('userName') + training_id = req.params.get("trainingId") + upload = req.params.get("upload") - # setup response object - headers = { - "content-type": "application/json" - } if not user_name: return func.HttpResponse( status_code=401, - headers=headers, + headers=DEFAULT_RETURN_HEADER, body=json.dumps({"error": "invalid userName given or omitted"}) ) + elif req.method == "POST" and not upload and not training_id: + return func.HttpResponse( + status_code=401, + headers=DEFAULT_RETURN_HEADER, + body=json.dumps({"error": "trainingId or upload flag needs to be specified with a POST request"}) + ) else: try: # DB configuration data_access = ImageTagDataAccess(get_postgres_provider()) user_id = data_access.create_user(user_name) - # TODO: Support POST http calls by merging with the existing "Upload" API. - # Ideally GET http calls rerurn all human annotated labels. - # POST calls save all human annotated labels logging.debug("User '{0}' invoked labels api".format(user_name)) - logging.info("Method = " + str(req.method)) if req.method == "GET": # Note: Currently we return all human annotated labels since TAGGING.CSV requires all rows # No use case to return predicted labels at the moment. @@ -43,16 +47,32 @@ def main(req: func.HttpRequest) -> func.HttpResponse: content = jsonpickle.encode(labels,unpicklable=False) return func.HttpResponse( status_code=200, - headers=headers, + headers=DEFAULT_RETURN_HEADER, body=content ) - elif req.method == "POST": + elif req.method == "POST" and upload and upload.lower() == "true": + try: + upload_data = req.get_json() + except ValueError as ve: + logging.error("Error: Unable to decode POST body. Error: " + repr(ve)) + return func.HttpResponse( + status_code=401, + headers=DEFAULT_RETURN_HEADER, + body=json.dumps({"Error": "Unable to decode POST body."}) + ) + __upload_tag_data(upload_data, data_access, user_id) + + return func.HttpResponse( + body=json.dumps(upload_data), + status_code=201, + headers=DEFAULT_RETURN_HEADER, + ) + elif req.method == "POST" and training_id: payload = json.loads(req.get_body()) - training_id = req.params.get("trainingId") if not training_id: return func.HttpResponse( status_code=401, - headers=headers, + headers=DEFAULT_RETURN_HEADER, body=json.dumps({"error": "invalid training_id given or omitted"}) ) training_id = int(training_id) @@ -60,10 +80,41 @@ def main(req: func.HttpRequest) -> func.HttpResponse: data_access.add_prediction_labels(payload_json, training_id) return func.HttpResponse( status_code=201, - headers=headers + headers=DEFAULT_RETURN_HEADER ) + except Exception as e: return func.HttpResponse( "exception:" + str(e), status_code=500 - ) \ No newline at end of file + ) + +def __upload_tag_data(upload_data, data_access, user_id): + ids_to_tags = upload_data["imageIdToTags"] + + all_imagetags = [] + for image_id in ids_to_tags.keys(): + if ids_to_tags[image_id]: + all_imagetags.extend(__create_ImageTag_list(image_id, ids_to_tags[image_id])) + + unique_class_names = upload_data["uniqueClassNames"] + if all_imagetags and unique_class_names: + logging.info("Update all visited images with tags and set state to completed") + class_map = data_access.get_classification_map(unique_class_names,user_id) + annotated_labels = data_access.convert_to_annotated_label(all_imagetags,class_map) + data_access.update_tagged_images_v2(annotated_labels,user_id) + else: + logging.info("No tagged image ids or classifications received") + + logging.info("Update visited but no tags identified images") + data_access.update_completed_untagged_images(upload_data["imagesVisitedNoTag"], user_id) + + logging.info("Update unvisited/incomplete images") + data_access.update_incomplete_images(upload_data["imagesNotVisited"], user_id) + +# Create list of ImageTag objects to write to db for given image_id +def __create_ImageTag_list(image_id, tags_list): + image_tags = [] + for tag in tags_list: + image_tags.append(ImageTag(image_id, tag['x1'], tag['x2'], tag['y1'], tag['y2'], tag['classes'])) + return image_tags \ No newline at end of file diff --git a/functions/pipeline/upload/__init__.py b/functions/pipeline/upload/__init__.py deleted file mode 100644 index 9dffa5ec..00000000 --- a/functions/pipeline/upload/__init__.py +++ /dev/null @@ -1,66 +0,0 @@ -import json -import logging -from ..shared.db_provider import get_postgres_provider -from ..shared.db_access import ImageTag, ImageTagDataAccess - -import azure.functions as func - - -# Create list of ImageTag objects to write to db for given image_id -def __create_ImageTag_list(image_id, tags_list): - image_tags = [] - for tag in tags_list: - image_tags.append(ImageTag(image_id, tag['x1'], tag['x2'], tag['y1'], tag['y2'], tag['classes'])) - return image_tags - -def main(req: func.HttpRequest) -> func.HttpResponse: - try: - # TODO: Create if check for userId and valid json checks? - upload_data = req.get_json() - user_name = req.params.get('userName') - - if not user_name: - return func.HttpResponse( - status_code=401, - headers={ "content-type": "application/json"}, - body=json.dumps({"error": "invalid userName given or omitted"}) - ) - - # DB configuration - data_access = ImageTagDataAccess(get_postgres_provider()) - user_id = data_access.create_user(user_name) - - # Update tagged images - ids_to_tags = upload_data["imageIdToTags"] - - all_imagetags = [] - for image_id in ids_to_tags.keys(): - if ids_to_tags[image_id]: - all_imagetags.extend(__create_ImageTag_list(image_id, ids_to_tags[image_id])) - - unique_class_names = upload_data["uniqueClassNames"] - if all_imagetags and unique_class_names: - logging.info("Update all visited images with tags and set state to completed") - class_map = data_access.get_classification_map(unique_class_names,user_id) - annotated_labels = data_access.convert_to_annotated_label(all_imagetags,class_map) - data_access.update_tagged_images_v2(annotated_labels,user_id) - else: - logging.info("No tagged image ids or classifications received") - - logging.info("Update visited but no tags identified images") - data_access.update_completed_untagged_images(upload_data["imagesVisitedNoTag"], user_id) - - logging.info("Update unvisited/incomplete images") - data_access.update_incomplete_images(upload_data["imagesNotVisited"], user_id) - - return func.HttpResponse( - body=json.dumps(upload_data), - status_code=201, - headers={ "content-type": "application/json"}, - ) - except Exception as e: - logging.error(str(e)) - return func.HttpResponse( - "exception:" + str(e), - status_code=500 - ) \ No newline at end of file diff --git a/functions/pipeline/upload/function.json b/functions/pipeline/upload/function.json deleted file mode 100644 index 550280c8..00000000 --- a/functions/pipeline/upload/function.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "scriptFile": "__init__.py", - "bindings": [ - { - "authLevel": "anonymous", - "type": "httpTrigger", - "direction": "in", - "name": "req", - "methods": [ - "put", - "post" - ] - }, - { - "type": "http", - "direction": "out", - "name": "$return" - } - ] -} \ No newline at end of file From 18976b879b7f05629bbd1eebb2fb8887c310f60e Mon Sep 17 00:00:00 2001 From: Andre Briggs Date: Tue, 18 Dec 2018 18:01:36 -0800 Subject: [PATCH 134/145] Fixed query issue when saving Training session. More exception handling (#101) * Fixed query issue when saving Training session. More exception handling * Split lines * Tabbing --- .../pipeline/shared/db_access/db_access_v2.py | 2 +- functions/pipeline/train/__init__.py | 1 + train_vnext/training.py | 141 ++++++++++-------- 3 files changed, 83 insertions(+), 61 deletions(-) diff --git a/functions/pipeline/shared/db_access/db_access_v2.py b/functions/pipeline/shared/db_access/db_access_v2.py index fad273fe..f5ca7ed5 100644 --- a/functions/pipeline/shared/db_access/db_access_v2.py +++ b/functions/pipeline/shared/db_access/db_access_v2.py @@ -427,7 +427,7 @@ def add_training_session(self, training: TrainingSession, user_id: int): "VALUES ('{}','{}',{},{}) RETURNING TrainingId), " "p AS (INSERT INTO Class_Performance (TrainingId,ClassificationId,AvgPerf) " "VALUES ") - query.format(training.description,training.model_url,training.avg_perf,user_id) + query = query.format(training.description,training.model_url,training.avg_perf,user_id) # Append multiple TrainingId, ClassificationId and Performance values to above query # Comma is more rows, closing parenthesis is on the last row diff --git a/functions/pipeline/train/__init__.py b/functions/pipeline/train/__init__.py index 18776d0c..f98c86a8 100644 --- a/functions/pipeline/train/__init__.py +++ b/functions/pipeline/train/__init__.py @@ -39,6 +39,7 @@ def main(req: func.HttpRequest) -> func.HttpResponse: ) elif req.method == "POST": payload = json.loads(req.get_body()) + logging.debug("Payload: {}".format(payload)) payload_json = namedtuple('TrainingSession', payload.keys())(*payload.values()) training_id = data_access.add_training_session(payload_json, user_id) return func.HttpResponse( diff --git a/train_vnext/training.py b/train_vnext/training.py index fdd487ed..1d1b98da 100644 --- a/train_vnext/training.py +++ b/train_vnext/training.py @@ -183,66 +183,83 @@ def save_training_session(config, model_location, perf_location, prediction_labe upload_data_post_training(prediction_labels_location, classification_name_to_class_id, training_id, config.get("tagging_user"), config.get("url")) def upload_model_to_blob_storage(config, model_location, file_name, user_name): - blob_storage = BlobStorage.get_azure_storage_client(config) - blob_metadata = { - "userFilePath": model_location, - "uploadUser": user_name - } - uri = 'https://' + config.get("storage_account") + '.blob.core.windows.net/' + config.get("storage_container") + '/' + file_name - blob_storage.create_blob_from_path( - config.get("storage_container"), - file_name, - model_location, - metadata=blob_metadata - ) - print("Model uploaded at " + str(uri)) - return uri + try: + blob_storage = BlobStorage.get_azure_storage_client(config) + blob_metadata = { + "userFilePath": model_location, + "uploadUser": user_name + } + uri = 'https://' + config.get("storage_account") + '.blob.core.windows.net/' + config.get("storage_container") + '/' + file_name + blob_storage.create_blob_from_path( + config.get("storage_container"), + file_name, + model_location, + metadata=blob_metadata + ) + print("Model uploaded at " + str(uri)) + return uri + except Exception as e: + print("Issue uploading model to cloud storage: {}",e) def construct_new_training_session(perf_location, classification_name_to_class_id, overall_average, training_description, model_location, avg_dictionary, user_name, function_url): - training_session = TrainingSession(training_description, model_location, overall_average, avg_dictionary) - query = { - "userName": user_name - } - function_url = function_url + "/api/train" - payload = jsonpickle.encode(training_session, unpicklable=False) - response = requests.post(function_url, params=query, json=payload) - training_id = int(response.json()) - print("Created a new training session with id: " + str(training_id)) - return training_id + try: + training_session = TrainingSession(training_description, model_location, overall_average, avg_dictionary) + query = { + "userName": user_name + } + function_url = function_url + "/api/train" + payload = jsonpickle.encode(training_session, unpicklable=False) + response = requests.post(function_url, params=query, json=payload) + response.raise_for_status() + training_id = int(response.json()) + print("Created a new training session with id: " + str(training_id)) + return training_id + except requests.exceptions.HTTPError as e: + print("HTTP Error when saving training session: {}",e.response.content) + raise + except Exception as e: + print("Issue saving training session: {}",e) def process_classifications(perf_location, user_name,function_url): - # First build query string to get classification map - classes = "" - query = { - "userName": user_name - } - function_url = function_url + "/api/classification" - overall_average = 0.0 - with open(perf_location) as f: - content = csv.reader(f, delimiter=',') - next(content, None) #Skip header - for line in content: - class_name = line[0].strip() - if class_name == "Average": - overall_average = line[1] - elif class_name not in classes and class_name != "NULL": - classes = classes + class_name + "," - - query["className"] = classes[:-1] - print("Getting classification map for classes " + query["className"]) - response = requests.get(function_url, params=query) - classification_name_to_class_id = response.json() - - # Now that we have classification map, build the dictionary that maps class id : average - avg_dictionary = {} - with open(perf_location) as csvfile: - reader = csv.reader(csvfile, delimiter=',') - next(reader, None) #Skip header - for row in reader: - if row[0] != "NULL" and row[0] in classification_name_to_class_id: - avg_dictionary[classification_name_to_class_id[row[0]]] = row[1] - - return overall_average, classification_name_to_class_id, avg_dictionary + try: + # First build query string to get classification map + classes = "" + query = { + "userName": user_name + } + function_url = function_url + "/api/classification" + overall_average = 0.0 + with open(perf_location) as f: + content = csv.reader(f, delimiter=',') + next(content, None) #Skip header + for line in content: + class_name = line[0].strip() + if class_name == "Average": + overall_average = line[1] + elif class_name not in classes and class_name != "NULL": + classes = classes + class_name + "," + + query["className"] = classes[:-1] + print("Getting classification map for classes " + query["className"]) + response = requests.get(function_url, params=query) + response.raise_for_status() + classification_name_to_class_id = response.json() + + # Now that we have classification map, build the dictionary that maps class id : average + avg_dictionary = {} + with open(perf_location) as csvfile: + reader = csv.reader(csvfile, delimiter=',') + next(reader, None) #Skip header + for row in reader: + if row[0] != "NULL" and row[0] in classification_name_to_class_id: + avg_dictionary[classification_name_to_class_id[row[0]]] = row[1] + + return overall_average, classification_name_to_class_id, avg_dictionary + except requests.exceptions.HTTPError as e: + print("HTTP Error when getting classification map: {}",e.response.content) + raise + except Exception as e: + print("Issue processing classfication: {}",e) def get_image_name_from_url(image_url): start_idx = image_url.rfind('/')+1 @@ -269,8 +286,12 @@ def create_pascal_label_map(label_map_path: str, class_names: list): if operation == "start": train(legacy_config, config.get("tagging_user"), config.get("url")) elif operation == "save": - # Upload the model saved at ${inference_output_dir}/frozen_inference_graph.pb + # The model is saved relative to the python_file_directory in + # ${inference_output_dir}/frozen_inference_graph.pb + path_to_model = os.path.join(legacy_config.get("python_file_directory"), + legacy_config.get("inference_output_dir"), + "/frozen_inference_graph.pb") save_training_session(config, - legacy_config.get("inference_output_dir") + "/frozen_inference_graph.pb", - legacy_config.get("validation_output"), - legacy_config.get("untagged_output")) \ No newline at end of file + path_to_model, + legacy_config.get("validation_output"), + legacy_config.get("untagged_output")) \ No newline at end of file From d8fcff6869c0baf46e09d228d7461d0724e2b526 Mon Sep 17 00:00:00 2001 From: Bhargav Nookala Date: Tue, 18 Dec 2018 18:25:23 -0800 Subject: [PATCH 135/145] Rebase upstream repository (#100) --- README.md | 9 +- config.ini | 7 +- functions/README.md | 2 +- functions/pipeline/labels/__init__.py | 1 + .../pipeline/onboardcontainer/__init__.py | 222 +++---- images/VOTT_animal.PNG | Bin 0 -> 2155769 bytes images/init_predict.PNG | Bin 0 -> 61797 bytes init_pred_desription.md | 76 +++ tag/download_vott_json.py | 383 ++++++++---- tag/upload_vott_json.py | 16 +- test/Images_source.json | 2 +- test/Images_source_workdir90.json | 1 + test/all_predictions.npy | Bin 1335 -> 1168 bytes test/all_predictions_cow.npy | Bin 0 -> 1498 bytes ...2018_R1_cam01_20150421_200634_SUNP0063.JPG | Bin 0 -> 113710 bytes ...2018_R1_cam01_20150510_022358_SUNP0017.JPG | Bin 0 -> 104662 bytes ...2018_R1_cam01_20150510_114950_SUNP0020.JPG | Bin 0 -> 161103 bytes ...2018_R1_cam01_20150516_201936_SUNP0036.JPG | Bin 0 -> 101197 bytes ...2018_R1_cam01_20150604_090322_SUNP0070.JPG | Bin 0 -> 160066 bytes ...2018_R1_cam01_20151027_170516_SUNP0014.JPG | Bin 0 -> 171636 bytes ...na_2018_cam1A_20150522_164552_IMG_0856.JPG | Bin 0 -> 37691 bytes ...na_2018_cam20_20141121_112319_IMG_0091.JPG | Bin 0 -> 189239 bytes ...na_2018_cam20_20141124_180256_IMG_0101.JPG | Bin 0 -> 204991 bytes ...na_2018_cam20_20141206_191101_IMG_0153.JPG | Bin 0 -> 127676 bytes test/camera_images_source.json | 1 + test/init_class_get_rows_min.npy | Bin 0 -> 1815 bytes test/init_classes_map.json | 21 + test/run_all_tests.py | 7 + test/test_create_init_predictions.py | 86 +++ test/test_create_predictions.py | 24 +- test/test_download_vott_json.py | 114 +++- test/test_init_download_vott_json.py | 168 ++++++ test/test_init_tf_detector.py | 76 +++ test/test_make_vott_output.py | 43 ++ ...2018_R1_cam01_20150421_200634_SUNP0063.JPG | Bin 0 -> 113710 bytes ...2018_R1_cam01_20150510_022358_SUNP0017.JPG | Bin 0 -> 104662 bytes ...2018_R1_cam01_20150510_114950_SUNP0020.JPG | Bin 0 -> 161103 bytes ...2018_R1_cam01_20150516_201936_SUNP0036.JPG | Bin 0 -> 101197 bytes ...2018_R1_cam01_20150604_090322_SUNP0070.JPG | Bin 0 -> 160066 bytes ...2018_R1_cam01_20151027_170516_SUNP0014.JPG | Bin 0 -> 171636 bytes ...na_2018_cam1A_20150522_164552_IMG_0856.JPG | Bin 0 -> 37691 bytes ...na_2018_cam20_20141121_112319_IMG_0091.JPG | Bin 0 -> 189239 bytes ...na_2018_cam20_20141124_180256_IMG_0101.JPG | Bin 0 -> 204991 bytes ...na_2018_cam20_20141206_191101_IMG_0153.JPG | Bin 0 -> 127676 bytes .../board_images_png/st1026.png | Bin 0 -> 358051 bytes .../board_images_png/st1194.png | Bin 0 -> 209007 bytes .../board_images_png/st1578.png | Bin 0 -> 370035 bytes .../board_images_png/st1611.png | Bin 0 -> 367171 bytes test/testconfig.ini | 62 ++ test/totag_no_folder_source.csv | 564 ++++++++++++++++++ test/untagged_cow.csv | 15 + test/untagged_source.csv | 4 +- train/active_learning_init_pred.sh | 27 + train/create_predictions.py | 32 +- train/repartition_test_set.py | 2 + train/tf_detector.py | 6 +- 56 files changed, 1678 insertions(+), 293 deletions(-) create mode 100644 images/VOTT_animal.PNG create mode 100644 images/init_predict.PNG create mode 100644 init_pred_desription.md create mode 100644 test/Images_source_workdir90.json create mode 100644 test/all_predictions_cow.npy create mode 100644 test/camera_images/IC_Cabritos_2018_R1_cam01_20150421_200634_SUNP0063.JPG create mode 100644 test/camera_images/IC_Cabritos_2018_R1_cam01_20150510_022358_SUNP0017.JPG create mode 100644 test/camera_images/IC_Cabritos_2018_R1_cam01_20150510_114950_SUNP0020.JPG create mode 100644 test/camera_images/IC_Cabritos_2018_R1_cam01_20150516_201936_SUNP0036.JPG create mode 100644 test/camera_images/IC_Cabritos_2018_R1_cam01_20150604_090322_SUNP0070.JPG create mode 100644 test/camera_images/IC_Cabritos_2018_R1_cam01_20151027_170516_SUNP0014.JPG create mode 100644 test/camera_images/IC_Mona_2018_cam1A_20150522_164552_IMG_0856.JPG create mode 100644 test/camera_images/IC_Mona_2018_cam20_20141121_112319_IMG_0091.JPG create mode 100644 test/camera_images/IC_Mona_2018_cam20_20141124_180256_IMG_0101.JPG create mode 100644 test/camera_images/IC_Mona_2018_cam20_20141206_191101_IMG_0153.JPG create mode 100644 test/camera_images_source.json create mode 100644 test/init_class_get_rows_min.npy create mode 100644 test/init_classes_map.json create mode 100644 test/run_all_tests.py create mode 100644 test/test_create_init_predictions.py create mode 100644 test/test_init_download_vott_json.py create mode 100644 test/test_init_tf_detector.py create mode 100644 test/test_make_vott_output.py create mode 100644 test/test_workdir_init_pred/camera_images/IC_Cabritos_2018_R1_cam01_20150421_200634_SUNP0063.JPG create mode 100644 test/test_workdir_init_pred/camera_images/IC_Cabritos_2018_R1_cam01_20150510_022358_SUNP0017.JPG create mode 100644 test/test_workdir_init_pred/camera_images/IC_Cabritos_2018_R1_cam01_20150510_114950_SUNP0020.JPG create mode 100644 test/test_workdir_init_pred/camera_images/IC_Cabritos_2018_R1_cam01_20150516_201936_SUNP0036.JPG create mode 100644 test/test_workdir_init_pred/camera_images/IC_Cabritos_2018_R1_cam01_20150604_090322_SUNP0070.JPG create mode 100644 test/test_workdir_init_pred/camera_images/IC_Cabritos_2018_R1_cam01_20151027_170516_SUNP0014.JPG create mode 100644 test/test_workdir_init_pred/camera_images/IC_Mona_2018_cam1A_20150522_164552_IMG_0856.JPG create mode 100644 test/test_workdir_init_pred/camera_images/IC_Mona_2018_cam20_20141121_112319_IMG_0091.JPG create mode 100644 test/test_workdir_init_pred/camera_images/IC_Mona_2018_cam20_20141124_180256_IMG_0101.JPG create mode 100644 test/test_workdir_init_pred/camera_images/IC_Mona_2018_cam20_20141206_191101_IMG_0153.JPG create mode 100644 test/test_workdir_train/board_images_png/st1026.png create mode 100644 test/test_workdir_train/board_images_png/st1194.png create mode 100644 test/test_workdir_train/board_images_png/st1578.png create mode 100644 test/test_workdir_train/board_images_png/st1611.png create mode 100644 test/testconfig.ini create mode 100644 test/totag_no_folder_source.csv create mode 100644 test/untagged_cow.csv create mode 100644 train/active_learning_init_pred.sh diff --git a/README.md b/README.md index f665d968..c6babc3a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # Active learning + object detection Labeling images for object detection is commonly required task to get started with Computer Vision related project. -Good news that you do not have to label all images (draw bounding boxes) from scratch --- the goal of this project is to add (semi)automation to the process. +Good news that you do not have to label all images (draw bounding boxes) from scratch --- the goal of this project is to add (semi)automation to the process. +Please refer to this blog post that describes Active Learning and semi-automated flow: + [Active Learning for Object Detection in Partnership with Conservation Metrics](https://www.microsoft.com/developerblog/2018/11/06/active-learning-for-object-detection/) We will use Transfer Learning and Active Learning as core Machine Learning components of the pipeline. -- Transfer Learning: use powerful pre-trained on big dataset (COCO) model as a startining point for fine-tuning foe needed classes. -- Active Learning: human annotator labels small set of images (set1), trains Object Detection Model (model1) on this set1 and then uses model1 to predict bounding boxes on images (thus pre-labeling those). Human annotator reviews mode1's predictions where the model was less confident -- and thus comes up with new set of images -- set2. Next phase will be to train more powerful model2 on bigger train set that includes set1 and set2 and use model2 prediction results as draft of labeled set3… @@ -28,6 +30,11 @@ There is config.ini that needs to be updated with details like blob storage conn More details TBD. Basically the idea is to kick off Active Learning cycle with model retaining as soon as human annotator revises new set of images. +# Notes before we get started +- The steps below refer to updating config.ini. You can find detailed description of config [here](config_description.md) +- Got several thousands of images (or much more) and not sure if random sampling will be helpful to get rolling with labeling data? +Take a look at [Guide to "initialization" predictions](init_pred_desription.md). + # How to run semi-automated pipeline The flow below assumes the following: 1) We use Tensorflow Object Detection API (Faster RCNN with Resnet 50 as default option) to fine tune object detection. diff --git a/config.ini b/config.ini index fef0588b..e507e099 100644 --- a/config.ini +++ b/config.ini @@ -39,6 +39,8 @@ min_confidence=.5 test_percentage=.2 model_name=faster_rcnn_resnet50_coco_2018_01_28 optional_pipeline_url=https://raw.githubusercontent.com/tensorflow/models/master/research/object_detection/samples/configs/faster_rcnn_resnet50_pets.config +#Init Predictions +init_model_name=faster_rcnn_resnet101_coco_2018_01_28 # Config File Details old_label_path=PATH_TO_BE_CONFIGURED/pet_label_map.pbtxt old_train_path=PATH_TO_BE_CONFIGURED/pet_faces_train.record-?????-of-00010 @@ -65,4 +67,7 @@ tf_val_record=${tf_record_location%.*}_val.${tf_record_location##*.} tf_url=http://download.tensorflow.org/models/object_detection/${model_name}.tar.gz pipeline_file=${download_location}/${model_name}/pipeline.config fine_tune_checkpoint=${download_location}/${model_name}/model.ckpt -tagging_output=${data_dir}/tagging.csv \ No newline at end of file +tagging_output=${data_dir}/tagging.csv +init_pred_tf_url=http://download.tensorflow.org/models/object_detection/${init_model_name}.tar.gz +init_model_graph=${download_location}/${init_model_name}/frozen_inference_graph.pb + diff --git a/functions/README.md b/functions/README.md index e0980d3e..d0610ecb 100644 --- a/functions/README.md +++ b/functions/README.md @@ -208,4 +208,4 @@ Showing our function running: ```bash curl "https://jmsactlrnpipeline.azurewebsites.net/api/download?code=AARPr45D5K6AIEWv8bEaqWalSaddrUzd4aydOxmhSPauGUrsPvzw==&imageCount=1" ["https://csehackstorage.blob.core.windows.net/image-to-tag/1.jpg"] -``` +``` \ No newline at end of file diff --git a/functions/pipeline/labels/__init__.py b/functions/pipeline/labels/__init__.py index cd90962e..ae060af8 100644 --- a/functions/pipeline/labels/__init__.py +++ b/functions/pipeline/labels/__init__.py @@ -117,4 +117,5 @@ def __create_ImageTag_list(image_id, tags_list): image_tags = [] for tag in tags_list: image_tags.append(ImageTag(image_id, tag['x1'], tag['x2'], tag['y1'], tag['y2'], tag['classes'])) + return image_tags \ No newline at end of file diff --git a/functions/pipeline/onboardcontainer/__init__.py b/functions/pipeline/onboardcontainer/__init__.py index 887e1184..273e38c9 100644 --- a/functions/pipeline/onboardcontainer/__init__.py +++ b/functions/pipeline/onboardcontainer/__init__.py @@ -1,111 +1,111 @@ -import os -import logging -import json -import azure.functions as func -from urlpath import URL -from datetime import datetime, timedelta -from ..shared.constants import ImageFileType -from ..shared.storage_utils import get_filepath_from_url - -from azure.storage.blob import BlockBlobService, BlobPermissions -from azure.storage.queue import QueueService, QueueMessageFormat - -DEFAULT_RETURN_HEADER = { - "content-type": "application/json" -} - - -def main(req: func.HttpRequest) -> func.HttpResponse: - logging.info('Python HTTP trigger function processed a request.') - - user_name = req.params.get('userName') - - if not user_name: - return func.HttpResponse( - status_code=401, - headers=DEFAULT_RETURN_HEADER, - body=json.dumps({"error": "invalid userName given or omitted"}) - ) - - try: - req_body = req.get_json() - logging.debug(req.get_json()) - storage_account = req_body["storageAccount"] - storage_account_key = req_body["storageAccountKey"] - storage_container = req_body["storageContainer"] - except ValueError: - return func.HttpResponse( - "ERROR: Unable to decode POST body", - status_code=400 - ) - - if not storage_container or not storage_account or not storage_account_key: - return func.HttpResponse( - "ERROR: storage container/account/key/queue not specified.", - status_code=401 - ) - - # Create blob service for storage account (retrieval source) - blob_service = BlockBlobService( - account_name=storage_account, - account_key=storage_account_key) - - # Queue service for perm storage and queue - queue_service = QueueService( - account_name=os.getenv('STORAGE_ACCOUNT_NAME'), - account_key=os.getenv('STORAGE_ACCOUNT_KEY') - ) - - queue_service.encode_function = QueueMessageFormat.text_base64encode - - try: - blob_list = [] - - for blob_object in blob_service.list_blobs(storage_container): - blob_url = URL( - blob_service.make_blob_url( - storage_container, - blob_object.name - ) - ) - # Check for supported image types here. - if ImageFileType.is_supported_filetype(blob_url.suffix): - logging.debug("INFO: Building sas token for blob " + blob_object.name) - # create sas signature - sas_signature = blob_service.generate_blob_shared_access_signature( - storage_container, - blob_object.name, - BlobPermissions.READ, - datetime.utcnow() + timedelta(hours=1) - ) - - logging.debug("INFO: have sas signature {}".format(sas_signature)) - - signed_url = blob_url.with_query(sas_signature) - - blob_list.append(signed_url.as_uri()) - - logging.debug("INFO: Built signed url: {}".format(signed_url)) - - msg_body = { - "imageUrl": signed_url.as_uri(), - "fileName": str(blob_url.name), - "fileExtension": str(blob_url.suffix), - "directoryComponents": get_filepath_from_url(blob_url, storage_container), - "userName": user_name - } - - body_str = json.dumps(msg_body) - queue_service.put_message("onboardqueue", body_str) - else: - logging.info("Blob object not supported. Object URL={}".format(blob_url.as_uri)) - - return func.HttpResponse( - status_code=202, - headers=DEFAULT_RETURN_HEADER, - body=json.dumps(blob_list) - ) - except Exception as e: - logging.error("ERROR: Could not build blob object list. Exception: " + str(e)) - return func.HttpResponse("ERROR: Could not get list of blobs in storage_container={0}. Exception={1}".format( - storage_container, e), status_code=500) +import os +import logging +import json +import azure.functions as func +from urlpath import URL +from datetime import datetime, timedelta +from ..shared.constants import ImageFileType +from ..shared.storage_utils import get_filepath_from_url + +from azure.storage.blob import BlockBlobService, BlobPermissions +from azure.storage.queue import QueueService, QueueMessageFormat + +DEFAULT_RETURN_HEADER = { + "content-type": "application/json" +} + + +def main(req: func.HttpRequest) -> func.HttpResponse: + logging.info('Python HTTP trigger function processed a request.') + + user_name = req.params.get('userName') + + if not user_name: + return func.HttpResponse( + status_code=401, + headers=DEFAULT_RETURN_HEADER, + body=json.dumps({"error": "invalid userName given or omitted"}) + ) + + try: + req_body = req.get_json() + logging.debug(req.get_json()) + storage_account = req_body["storageAccount"] + storage_account_key = req_body["storageAccountKey"] + storage_container = req_body["storageContainer"] + except ValueError: + return func.HttpResponse( + "ERROR: Unable to decode POST body", + status_code=400 + ) + + if not storage_container or not storage_account or not storage_account_key: + return func.HttpResponse( + "ERROR: storage container/account/key/queue not specified.", + status_code=401 + ) + + # Create blob service for storage account (retrieval source) + blob_service = BlockBlobService( + account_name=storage_account, + account_key=storage_account_key) + + # Queue service for perm storage and queue + queue_service = QueueService( + account_name=os.getenv('STORAGE_ACCOUNT_NAME'), + account_key=os.getenv('STORAGE_ACCOUNT_KEY') + ) + + queue_service.encode_function = QueueMessageFormat.text_base64encode + + try: + blob_list = [] + + for blob_object in blob_service.list_blobs(storage_container): + blob_url = URL( + blob_service.make_blob_url( + storage_container, + blob_object.name + ) + ) + # Check for supported image types here. + if ImageFileType.is_supported_filetype(blob_url.suffix): + logging.debug("INFO: Building sas token for blob " + blob_object.name) + # create sas signature + sas_signature = blob_service.generate_blob_shared_access_signature( + storage_container, + blob_object.name, + BlobPermissions.READ, + datetime.utcnow() + timedelta(hours=1) + ) + + logging.debug("INFO: have sas signature {}".format(sas_signature)) + + signed_url = blob_url.with_query(sas_signature) + + blob_list.append(signed_url.as_uri()) + + logging.debug("INFO: Built signed url: {}".format(signed_url)) + + msg_body = { + "imageUrl": signed_url.as_uri(), + "fileName": str(blob_url.name), + "fileExtension": str(blob_url.suffix), + "directoryComponents": get_filepath_from_url(blob_url, storage_container), + "userName": user_name + } + + body_str = json.dumps(msg_body) + queue_service.put_message("onboardqueue", body_str) + else: + logging.info("Blob object not supported. Object URL={}".format(blob_url.as_uri)) + + return func.HttpResponse( + status_code=202, + headers=DEFAULT_RETURN_HEADER, + body=json.dumps(blob_list) + ) + except Exception as e: + logging.error("ERROR: Could not build blob object list. Exception: " + str(e)) + return func.HttpResponse("ERROR: Could not get list of blobs in storage_container={0}. Exception={1}".format( + storage_container, e), status_code=500) \ No newline at end of file diff --git a/images/VOTT_animal.PNG b/images/VOTT_animal.PNG new file mode 100644 index 0000000000000000000000000000000000000000..6e9b3be1b1d031f232cb5bed82722044098ac900 GIT binary patch literal 2155769 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 p<{#o7((z3z=>K3)lcZwxX^ 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℞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 VKiv05I^d6aWSgJIUvt;f8o7QYjr+tYPu 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∾biX!{6-lhSYqD2LV~6Kg&Hn(CKSR`y1Ak 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

    h~{3!&}G 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 z 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%0DAvJ0RAhDpL-{fqXykux| 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

    m8(SGP4)^CFqdjGl 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

    FcYVpuC^%TFqTGcGgW|r&bw@_Q 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�q}0k@8pG3pBP~$6FhOg1;wCJ9 zMjcbdff}LaGs+Xx5AbIZHfqU!@+?@y{3RKt--&{G=FVn@jYw!SX9kZYl|d%5`hH2b z`hNM=wCSVPHnsvQC;EL&WglivQPu(0yQwOB-GiOB^u?&T^qFQhk7E)uFaswPls=Qm zFpU!a22*KdSE>eBO8v=s%XTo|scDAzzh8=LaJ{`NEy$VXo~{m$Z2>0uYDi$*aGRh^ zZFIIrvJ|bMAP!aa4cR%3g2G#!dxN#)_+jCIgzQ9HSZ;_M=OC6`CjB<&?Z5qQtG<0E z`9J#jpG@suT6^uEvd80Ny?@d*2}GZaAhzU z%n-eTMjFHR(pU`%pW%@%9bXe;Qce~~eJLp^y=%jpZNcw~mp=Fp5zMv_-p08gQjJ%o zsL=RtrS8U-up-p7Z)$oD==^R+phMruniwQ5jdfxhenN3-==%ML92!jAb5=;@Zo3U- zpw|Zo9FjMHWVHPZc6p$^`YLBE1GRq*z^UkQv)(%<6xDoo5cljlPse8kt$fvf0MUo6 zy}$tFx4fz>*2-?*W&=KPVbqM}+IlE^aVovT1tk-;xwt@)?_&RJu)!m9!s*!#srb%4 z4XKuRzTDA2%D>51tQ-07Z!EBn*2G3m5{vs^MYq{5RspB(96xt+PyEg%39vM&Cy8f$ z@f{CIGHr?d_&AY!0FVk;$X}229uTsEHU()ORx2K%Sn-7qwWB*i-O%qm8ZH-@B27iD zZt|alsZ-Yp#h1yhf3K;s^4?EJgRNc(c`jao`aH2n{wBEy#_BzPB2XB<&o?pPHb>{o zPv`v3)3gXev-W{{*!bB0^BJ<{zd|ePfG{sq)tM}#uVxC-gax+zAIp{eWSJf12fp~4nEPnH!C5pM! z3Jk6(=;0O`JE(^cP#`rK_(d4r=77BS5m9|zk&Re(=C_b*eOs}QgZ=zF)pQ*o~We1BY zcG}E)K%T*NHfB+GsnCB=VAgwSGSlC9{IGFvnP!7VkW zIt2)P;Q(-vc%Qk#k~iDJytdb|@xQY1ZRrsT$i`mO8q9_H=Ili6)tfxt6r{V}yS2`I z)2u&hxgkIe?<*?oJvmVa1X=Rty?cVR_>FWqxFveiRz5!xCx37)2<57bG-+Won4`1R zK)(bvQFySj@{0Mz`x+nV#7;r-&Xjv0zuSAubfa7`>wCzEWX|N%r;k6R*lzE0uC{uU zwfr0bWSA3oq%CV7H@E&oVU4+7F1wj`mD3L811dC86Nyj|iIjK@7EQsygDtfe8m^=t zSE@qzw8=!Qo}!leOeSVXV=jn;+qRZoP>ol;gw#9xAW*v++u(rf(v+lHDY`rrdwOmk zgf+oH#7kG`2{!?!ZPduhjmrB1ko3suinMb+4GJrc7_d~&@BfO|ewKWgqRmL*`Cvu} z=Wxm=6x3H)TB+XlZ-G9>P>GBF-F`76Sc}73t^_S-M=gSJ;@@OO6P?g-Si3aD|Eo>- zAdzI#7pXM|@e~XD-6c*Pv@k#-WjvtYV=y=!(vh_BWEs<(X#N^P(R2UI74jH^^fU?R zS!-Tzkb7S8V$<=sR^E?|hm`24Zo?tYev3XAjCcGy`0Me_dEb~b=`PqGyy!vJiu zyrAaH8FlUbwUlva*xCzb_GXue1pC))hzIzL5djSPcg#a}_jA~gxTdeSU4)h3PzLV< z?|rUR_~&<#%)@?VL4?p)w2LAFkIV*VHE-*u&H^O1%=}N$J_(SI)}rx0<V4Vus8t1-sf4fTSyy5mroR%Ye%dDPi&_g)N%9WpAa18+7~FxS0&r8mA{ab?9|Rt za%yCC&=t!;iIcQ>{Kd;Qd80QjwI6$j^kNp|TBbku^aa+$vZ#?_WKR3{58m#}M4eie zO+EZLiIVy@5OL3ZEPtasz})!9@Z=x&*1Y}g`QZgfK2Y9U5f?AZ-LpL|a)54nqd#*l z<O9$&oUR{#wUt1)1V==bo~jppTznzZ|L0) zbu9kPum0@IboVHi^GoXBiAS04c`f=PHTjrtEJc?S#^PJ=whzmQJem%G;EtUD@njW4}BFZ|{A(tUY&^ zPEF@#6b<-x%=Yb*$2TY5mxFKyX9e2R{ccN}JT}5Wl#i%Hjf?FDtA+|LOA0=9iDg}! z&IQ!g2YnKa3wrpRBp|kZP)(+m-EdV$UBo-wPg%Y~GlmqjdTM>6xXtl6b;*fd!fy+x z1l7nYEF~VdX<@ic5GOD7IR#t zf!K0-^jaOa+ofXrgI~RUg{b8624fgVXpf)Ms6UtDqT*%`?q7RhDos!<&+fe0U^9R7 za?14U1+K{YYAz*n<9F8A!_|)MHIi>sd*uRF40YK0*K@qJ>$bA=;DeEWKxd=5l)7G^ zU|~&J*JWs1+cYIE#A-(S*3RriuiivFSSs$NM_Yc(H{A3pP<8l^@ z^#Y03gV~*v2dKKGqBLk_|Egd2P+FHO-!aD3$kV4k<7TcEYqOBe&Pfr- zJ*h56ibjzu)nfl5tH2te`Zx;c*+qlMN}bT z_<*lv!5ynO(DC;(W&|q%ZE=9lh*zvxB)aM_<5k8t%LDLs*EptAV+6}KpUe@mRB^H+ z-f_Ek^Og*!a$P_w7!yHZFeyvUPWrNbfbVQ3(-}%I`u?J*HStYoyji3_W9&i7KHWt* zD&w}11CuVZSy(K;*!&lN-9sZ8jLfK1N803-Pz$N8P%H8Td`-+?*|9?D)Ko{?4}TFl z-emqGf*JHMEe@so`-J!rx8)lW-uP73t*0ydhlA02CamGd!tHn>DI1Fn9lTK3rHee; zBFMZmd}-SU(jH`ww11t*>-{gMj*}YG98!Dr9d9yFPyiUuUx`O_^tf#uyzZb+zl@{) zdnu0p?KXEPiBodD6ikE2ajIqG9=G)}-PDbteG@Ua~T=zouLmTiodD0;r+}lm)0s z{X3DW%pdCRU698=Y+RaD1x25p0dyI@xGkNYhe2M2ft1 zHb&l#WmeRDgLxRBzXekuS139Y9pEi14NKf$XFE8R_U zIP`WS^z{{#f***%#P`aY?#_*#o~;O*3h(^=rX>Wmt%zjp1MYC1)7|c!mU>CeO$Pur zbReuhTzpF^SVgL2^5_h#V2X@^g#Oc>9Qz-x&MGR7Hrlp8aHny1cZcAlk>CV^JHg!{ zI5g6@Yj90)cW>MS!QBZC!R_{c?zu1brJj4#sL|i9U2Dy0+MH*0nv7@NR+~L6Q@f;K zUXnLdODff1CRb#?^E=XLJ=}CW^fmx~SfAeSZIng4t0$_X!{5F(aQx`1O_qfs{7J=>qy#EkEU^d1j`jOZ}KmGwG3$1XZG?JOr1)zeA}*QpqYM z5y*xSIhODiAp@+qK7hZF3I;)1SV1_7GM*ww%*AR0NNV(<%kE!%p$904EE3fY4Yaub}y9R zDuV5{j6+asvft&xT+rB@7NG#|=U@|L#sQWesbKK6DBN)5W#Kk0gTXkiSys~FnqaxI zK{*DXv>S`Yd-Me@U!g$9U>P4o192~$MNXr^GrJZp5o%*RQj_1rCW7OOzfY~chawAg z*@kRX8V5yBQ(S*0k)bMFp8WVc=*LiD5$E$ta|Tzbb=SAHw&?JUV*kx=L1%v2kK|LR z|CwV)P(Vx2wiyDeB0pO_=Z0;4O%4VXQT@+R`yv|>G}!~g%+~AG?XBnAOGCLLK#y28 z$T?Js@+Cm<%V(VF+df+^6H9xtmgPl4EaWRthPh8hr^gBO1EI;zSR2}lf9C217dr#D zgmA3LqT>&Tp8nfx+m3NFIgUiAtaaCyJ>O___P4@bs}?waF2=MjeM{uCxl=`CQ5O%U zXVj9xXOo#bYTWFwVb9oOpG6;9y5BX6E#s(JmI@NokqLFWn15Ifn-LVA& zN4zZ3PuotWR2RH2I_P&`E`C##fKjN2TwoY$`ZL*dgK68kWAtUA&yYi89|qNh^%q%u zqc8{Y9h#2ePgDP*u#&H(_o(B|eimI{fLSVf zy>6D|p)4?Xo%$*Mcx}&Hl}c7<h||#Hoqc z7EplvKqQtWCq%6mrOY2z{9qk85o<{s3p@Nnae!w*>lc(7zq9>{FWTA@+4KkR&eP5N zZW%^358e5qG1ieWMrmct&s2)8-<9be$Ax-~+em;?u1XgYwA+!|B)&lRV{QRkpY#KQ zh9Ad*FD&nl6mMa`2S3j=nK?Y3$_6wtO2l=o1z55c<&D0*9J^N9f^&q!TL1fa#7YKjc;w>*$UW+e^Ts8|M$^eso#{%nvwO~=zccO@??M@V z4q@dhtIt237A;nUeewef|4eg{*$V+Kvc_4PMV-=qWLL7krqCi_*U>@iAIFS{)W^Z* z{N08VybS0T#@q+>>h&?xh=OvC#adFx63F#Sj;jAUi-$V3nQCIQ5M}m^v94Kn;BA&h z<=kQGVS}OB6NycO%}osY7Cc}3_WiQIIr4&Q*3BWu~({Xgp1C;$D(EdKsmA@opp zpey2e1~Q@T;@%jNyo0CQ~bu$WRxvisp0%UvG zJI=ROntF8vhpr3U=zJhOvA|FIwX8suTgyrWFbjxcT%VAmF1eyj8{;y@hbwPM(pfLx z-SUPu%c54-$Z^o_&AYe#buYNev(TxPIHfSMPbk>7-~mg`MD*9RD2F^;KnoNggUJ4-4YoJTCwwb)31`~!tIeJAo=E<1CIuF49 zvR~Nq*B5FKQ1T~4woP5K#8@tZyyyHo<>bD=^%>31K77=l4|#>QhGGaxKs zU|;FKQ#~Rp&@U^j73KOabkAATwel%6XOtkF6$y?Wv)1Dtc`}vSY#;8P6`F%7?4Fkk zbi*I_)iF@ZQ#oPs)2Pzlm86bWVvcrA z&T;qLXg}>7Ou``&dZ?>2XHcUd!=ix%w?a=Uu4QH0V}Q%g{8pQG6Bj+xlo=Jv5AlEO z<3ewJJe_07E)_fFoFLI-JslxW@6YC%Z^Nny?*m9R6Fko3i1zRD3GLi#66ND1I2HPJpNYhid znqZJ&ao_ftfeV8g!8zmfm>|4_R#?J!Tr8AnXX!8})aq!jP?=!x8d&*Q5t+*-;P3EO z1yfp&V&QFO{OSarqKJECiviULG2%d> zOKR*0Uv#cl#Gw%trh?2n3!$1KQMzxgx9AE#`jCUMXnk*6dLu`VNE>;Xs6!T)u}nt- zi6t)8GUPku{$mo-S+8-ZnF&C{ zN7`pJev_;$#j$0c6dNnTSp?Pc3_A#FOiTrx^s?WP^;!$&x1vG-V^3KLO+m=wj9PWQi5|%cF3uq!TS3BmO zjzLW(7s{4gv4&>7O+eRiTNhi%@|QY<7pjsGUqy+%r{U=FG7_wkt)P7tyQ>szX9l0t zX~B9NHS8cN#q8c@wi~vaa>@7f~!@!3XAxQO+xxU7maOv6=+QNb3 z_vUbP!>7mC%dNTGsQFbA(c|!lWunki)z27v`n4+p3W-n5d%;!!1r`Q_CBgwOujXpf zA8APWhij0gFZ5TIu=erTq|WHkoKLpX)O|<#8SAp=S*pI2_bJZ9G}yyze<^a? zDuC?mS5T2Le%-sjivO#zc}|vYwxpjo6y`UOEk8r^T7jyvr{m>uu3!7=fp=0_6Rz52 zz1C3ZvKcox9U}B-_+j%k?-^BL?YSd21aQU(MYTkgfyno9(OjR=t&<5wW0Bw|<#t3r4 zQuj}`E`PMloYnHpITs1Wg&s_^XDja07p4BM2s52d1Au8xNz1cnrZjQ1{QHqunT?Al zLhjRgcHsvZiq*~13@zBwOx?b8i)KzcW7MF?f_F$oFDNn$Ed$#S^)c|u2Ij1TBgLyq zo|6=t>2CqA$~!jH%vQcHL8uVY~SHRsT9{B58f z^pv1Z9z0dt+ntaY6l#y9V~^5Xj+Olr<~SZIH5XlC2}9Z?gt@5T{k=U>POh+Rrhh0u zW>A(O#}&1z(DK#*F4Y~6{!TgSR2whE5gN8a2SRJeP|F=tVr_H;C{m9U4~WEtSOEWu2(;y!5=Q8;#d^&v87b5~!UJh5M_ z)Ozp_5F%G;{egM=CxGq6I{zyZs#ZAm*&ku9K1THThC|+PJ?7P1||* znt!d`6L-!$d1iXb)YNF$O0a+Y5N(9;gyRmDod>5ArXlyZ-Xv&_p>|;WB^}6h1RCY5 z%7;|xALcJ^2LJh3(SP6i=m#n0`0xP$ zC;Nefqvf*{##Is*iPd(>{SWjaofOXG8)WYFZ)Q9=Xw+l>?pMxg+1bhuNi$6?5qZtc z$K0ev>EMUfI{ol>1s$aX`3L+D+NOUz`JeUE-@Y$-U?{X!O`IH~vpj~NPXDP)o!4IW zh{ON(rQP7NXfB3{$>qDwaFMUWnuzJUC++0@o|LF4O7<}g+_?)~KR`NSpOJ8@ZAU2- zCdq}c(3CU;a6UG0=t2Ak=tMwX~|ZkK6Vk8T8o z*X3ohg{U_lq)0W~``R1j{^H)*eZKeH2w&tG|1^)!`8q%LS@lUMU`A8T%!anlO@`Y* zF@NFOO|%Zi$%Ml55FH)Od?I}gHKt^TIxP{|b+o)*Qzsupio-cheiH!Mg+|S2+N(2R zP+X$>p;9XuCw_T_rgDGC|izjBQ)>=FL z%%%QqN&7z6qN)UEo)l+VX~%ZK!=o;SAoJ2n!X~{RXSQVYanmxPw8^_fKO81QY*4jp z{6S#w30DJ0yzGN`{pZrpc&1lxJ0gUfKV`c@R62q`j+ZsB!*zHB+w?sRSO%L1d!#vH z5)5?00T^D{L^)We5BL3D*T$|7ZyU&wIeIAtxZbl8CYIEGJ^83kOmjCg+K7;_-$@8$ z3$?Yx`Nn&?JUJt+K7XpTZ{*ggF3PaTq*qf#c^3_l0|!VU?#yV(cCV&5?wMT5LlddsJJgWLhz`faO%d7YklViE#{GJTEyJ`0NGy; zkvYqeJBOcf`Nqz0W0b~B$d#f@aQpw5_)uq-Kp-h}7{=%r#@P3fdpBIrCL(+Bv%(V7 zLADufs5}cys0Rf>nR=L86rB#Do6DZ=LiB`Pi7i2JEz-?tk74^0&c^rqn#;MCH~I~q ziyG&*osL%b{SOHAjvL(|k^h~r7mPlEp>@!=euA-vE7peO70X?E$8<#x_XQE_s^&zy z{bjBp9BjfRC8BLnB>2gY5M;#;)+N#9p^eZFl@!%QEz85sUMQ?ctU4>Cg)tLuZ zrVknvLNuN_aF$sJT9{jBrV(%yVFES6_60p{pg%x;_%8C8BixifVNGWF1I|LH`;(iQqp zh_maZNh1k<#*AAp)H3y<>vLHUNa8>)C3Ny2ur>HDuqWv6`@_!=K;5hG-i7W=k{XHe zaNUbC>X~XNlY}#k+qW-900b1me*bH)K|87VwVxCvNV0ovN|aO79$XPe2XvKZiZiJa zFR&@j{~Y_4J7Rms@XYkTf5T!&u9=1gVGrKn=)T!pY=r!D!9U-IHxogNyx^d!z1>Or z>KqQWjK;6(lbILdc9RGc($crw4r6yqn}K>^N?jI=42uEnq&z7jP#H->6ILWCGtrX# z_qqw@-+reJcd~qEXE>>MfTvd40TIPr`s%eE&GUMI<#6WZnqo3=u~^f%o`yETCL;IBo7^#T;Fz6Ppxrbr&W z=T3cs;mwTa%9Du5{1=fC6I}+;&)9lQE&C7Vyr?dW<@Fl!JIz^JLQ9W$1-?^h$u1W_ zohhH5@M(QE{gq~hjcVs>fh9YiMklKg9<4|OWCUIz^0LYP;?nD|v!1YUs>WL$Ifm$1 zmdigukZa0I+*7ItW5e#Bq6@e3Xw%2h_sb{R?w(09xxxJHNk&h7at@P zih~L*mdLhh3@9!c&>$50E#wFQAi^j;7XenE5{1@@*6#of!HW+EQ zXco!WdwP+Aak36Wg1|WTTTOe9@V%E$wDGaf0^yG{tJF=~)l5OGn*-@6Bm~oQp6>VugL=_7CE5Fq~MR&Bm!$lB*moKkXo>(mX*FlmZ-#O^urzPIe(bq_^ zCh7MmkaS``Vy{fqA`;u*#}-w26BTj8L`kf9R50lTfXa(d?gO+31x{wgPm1~%_>#uG zu<>D?g8_;ycnR`so4^1&Ko^qMsUPX!n484+La^JSQbYbdBzj;|>+&{mv#;U3J`O2x zbKvhHa|x;X$2z8pAFh{v)?Z8toy&b>HC2SvB+SIRoHSRXUwZC!_$Z}y9%(>LoEH5O z(2ly>O*S^7D!H{7UxCYJe$c10bJ6%rO&FRc4-Ixjxn!n1rJJ>eBZ<1}2N=&lis3iT zF9rJjT#QAfr90E{EE)fcxQXvSO;<&nkD%%BgfT>vr^tda!w7Di0-VTt6?pEnnz#W6Eo9k1geFldQ5 z(D@ndnXAvc0v3w%^C1bZU={Hwg^4iHXFg`ZRpmuEGnJy>7RW0xmwE))S4)2gM^mNo zCT-DUZLzxqHvcG)RD=pGeB`#jofFbw-hOi=Wz1H#=S;2pJ!-0^%F4xEZZ%s~JUfDx z5}7{{AP+udi)sOF2FK`23uGp`WTlkYFh@X7{FFFo%N2l4y|aL-po4*`31t5WX;lsJ zr$DfJFb?W@y_RWEjt^P|$r^2+N6R%lQbzJjH(D zKQsY&a1_O&6M=9v-r~Uk)ASGO@n|LPfHOT^o3EOv#19YWbnc@QjovG3rWodjyS+20TRtR+2Lowh?9=uOQuaM`1;%X9Md%T<8+bPtJ^ff{EEB$+?Nim4+*`bH;_(V^g?XS~ zcd-=MlfPz5ngdt5c* zXtW}f1}t!T<7t_<^D=78snISr`yB%4Wji}``wsLl!#WcW`OR#IdhaYro<$~%*^MfW zq#B0o{v?%aC0RSOt(^UNj6;MjVOTl5?ia82Mw!po*ZUR_hZ8!}Cize}Z!~)cJNL3e z$3`{7YPF9=$c`m9aAjCh$_3NLOBy{z%4t$*gfGN^L#EAi91?LaMW+wzsTP0TAZz(jC^yocRfNxsJ#XJXA(1<>^-^# z75~Q0^9KaFxcG}%_ zjrp0F2Gm{pFY8d&Rw=9`rq^0du$EW?Y|?N8*I=Wy$EC& zgxTDX>%7>@@u(E*Q10uw6rXfb8VM%URj4hgl=}YgDee{3*?JwSms%2)^_Ip2W?+Ra!%JyB|BFRm z`F~jSF@H>kaC|=Pzt(lMvqpBaE7oj+2@VG-NI*JD4FYzCC3ylhbEJl*mA;)RfPhMK zZT}R+*(>tQcU9&4gt7ee*b-o8hAgWs}CJUmdi5h;Vo|m*S0pJ<6;oQb;5fj;_;`(w-w5b(?QMWwSCs%SLGl7&u^c$nCiQQ~f!j!uqwv zt^CC}s|>g!8L{I}s+Z>?$zl8;ZiaNU6f)lj2k7|DfiXfsnrZ==+cLrYIUu~JiZPON zlpvNRci>D>clLP+ULi%iSLsbG<8OLO1jt*V^=XH>FYcD%UW|*jogeGscPr{@F)TQ{ zwz+2DcYAd{&^wvDzyk%1KU(O5I?(oOE+FSnN>6g#$4c`KUKF&F8eOjYYnem68+t0^AT_K+Kb14ueXNRjU; z>F4|03Pqp)X8}q}#O8&=<#93(F8xQp7wwukA;$Yy<@4zU8~B1PYhBv^XGD9O=kb?P z_vJz-oh(Cw*~e=QD5^y^a-*6xKW5#+ zFsD)|Hf2{3psMI{C2h9!zZRbt3NRp+Dg}r zd&>Jw`LM_qHIgV$(GUngOL{CFc^LZm6;~}0NAil|%paQh4g&plNr0;CnW$l?pKwda zx#0l3FIAb9d6`ft5k0)x2sa$X8=gYvUymzkxsa2rbWjjs+MfwugL?FwGfoRVce*6I z-H|B4g*&`!5e+7ai9*PCV5MKBHdR3tFzaC&r*ZR_%xZ9xa?t4>Sl;xK+nB!&}J zw>z#2hX!kl`qtye%Dm=oRMY)7La6-5onm>`w2S{?KB8zd4LWZ_bIkAU;SulM@qcP? zt;Jmn{A{5fcv`W$e3p>K2nPJIpMHf>;6#)JCh|;gm6q!yY^H)Bh~R%j!=b-~m8ueT zmv8&T?&VS8kVKetl)by*1PP+UW}APx88d;lviEf;iqnQmF9MNW7q~(X7E$AP&@_1A zt>jJ0k{VQthCgL{c7yEMt-QOpXz}B%`Ir6sb7u&8Y=@tU_&DnQ@|K%}Uv?14@vrED zJ3YL@>5J%X|4rfhNW?)MT9aWqB7KYm9Q}cu+D_gfGdB+`t^`4~4LseO4$O0&Ss;Oe zGqdy}Et6?>Ubue%ocJzTCt3p(B;beHh-S04x!!++bdQ&!W4nM;tDA_)?Np*+P3U%{ zeXUdZZDv$PJ+?y~eL3+qGcjp~&M`WKl)8i1F&Wme0XCovp~N0ORE6TC0-x-xG3dseNhMN&a~c0?p6Bj7!FjH@>2j1&=c`Xs@ad?f`jM|tQHe-Jf-?=*r8P|H7* zns$J5QmHWowQ3vY2VILm0brZaH~r+p>SzKv9ce+Zj~cEMIFfQOU)x6kc&Y_@zznH( zS3vhq|NV%q9O^0_`z^&^A{#~a!?OwRZblA1vIm-=qmh=0nd>zodN}iv!*`v1^VBfr zjDN|_$e`^G*GqEZL#sM2LA2-%nD|N9yg3BU$zA8(v)b88=W7zJJDjR;Vf;4;&8ye} z?IVxju&argc+~ZqNDhx}6Z$w1+w+<1;K0$u@_^*P(y1>$8>(`z>OT>xg38L)CRmNS zKlNlE6!=WX_>5h&P+`|rsL857n&m(jK5R^NC!?d;Gbg3ni8HdN(F{AMn@`@Gr^!zS zp1ITD{MFcRLNWF~{I#lAV`cZ5xkbdQp%4n|4B}m}D{|BrY%G*V_WYf@ud``eLff67 z27ofk9cz^U0v&KoUzA=Gxy%)_N|s{sJ8F{xQK%6h`^1Nga$!FGyo?bafj%vqx)|W* zyi`pC_#q=;A=g9%ETXC9h%+;ij3F1l5Vc?UoH4n}^7;}`@f&jlAAqU^p--`&kEa`# z`k5h1&1!rk$8DWn*Y$hw>JFPx@wl88!a+KSv`Y`}RhEREgODCHXGdvs?T2O($<(E*OM*X#l z*=;XZbtcnrGHgO0*R_k-d~bKeY4H`^7iDwLxt4RPord_HcKVu4Qu^8@bKD@r9QWY4 zb~uh|(>&pV+ZmCb3=!AfPmZD@^}WF!Sj2Lg9Ml6`3Oryp1s!#b&@}|{bS#&{q@vtaQ&Hcl6+w(y>9Ru!}-`aAu3bM(DxR=nqG8QO2Y6g{pj%mO1 zT7p6lNru_rvQRzoSXJh;>=~bN8b2y!TN0(}VV5W%rz+r;d{MID;`@t${-nI2q24Ej z!kcEQ$EczH0IAq$m*nN@iL~xO0|T)U;sS3(wWQP9aw@UB14lD*eEOrMH{!k5f+f|u z$GoTr+JIYAgKo(3TC@!n2NbSFL*2jC)XnTUGh?f!LhifOxlLW znrjH2kiBP?figXEub`rgqo(LvwG0OZ7W|zCxj)5z1rr}T$xKLqnTR&%>6wgA6XP}u zaxSbp%(FjCboER-nnZf<`jSEbC#zzo6dbHhV8FQEM@k^wcF3yJ-b02*S?Fz*4=N(8 zEG(;@CrKQbckuG)&~YfkTh87Q z*}c5JQmeL(qagb)DlkT=lTJ%pfrtYoMgCWu4=BZg?a#!R)tFM(U|@;#BcA2e9JT?PaAI#y>9W22LdV^Xk~$rWa;Mgj2`RRN~G#q zl$&Oh7*fZrgEfm7;%f8X-nbeE`ZFC2+c6weDQ;9>&HWe6e9j;VP7Rd{p^*gZFYzAV z7sBW^72|Hdrde3yc`4rW~xA9{dbOiabTn*{vd4EXQ=x9V>0R{<^Yh`@aCglRv8;nOBz zx*xYk=9Sk>;uEm78ix}p+YgXouZZT~r=GQf!VlJm`*!_BA9lp!C@4*CO^BNYd3eZR zKsTmKbe@H)Fb$jNau8V6{s=zOi3J6u*GX!E7VVi;J=s9tTO>6aEkJEw-*llQn7aK$ zu^dZ8Veex?Trcev?(%~ri7*|jO>t{(sf^GTKGoJPl}a!4Yim-8Hz%Dd%AQaHfK^Ml z*Y+z;90ERcEs2DSbg8$*Kw9ddp;OClZJM!y@1FK?B!w5*)nxCwqpgP6jm#v@P3_|# z?62_?kl+YxXM8Afk0Ds?>)RWE<$bzG`tAOL)}vVNDi|ZS%xF(l_+fL7wqE#C zwv3-##6xx5s`ay(TjZIN%PQZOh=vh)rZSwAB`60KErYW=-X?RY#?ZTfd7C_Lphq-# zWQZ-v7frN=VtZ0}pWgIhJ-p2))f1z6iXDH5xpoK^F8+!wmbP6i{uFF2+iJs+LRp{e zUann`ZSWzONDyZ^ODgxdG5296;P0m!FyS90&y@2_^-eqBwmUriLBh&m*M%}|rz>vr zQ$%gbW<=XR3Z*bFeyS@us9WeWBrr;Mr4ytBI77-5Rqn#@e?pf>26@BMc>Bqkgo1)_ zybIV7fY#etMvto9(uBR-sM>AC)1K+_k^(MOGudWuU77Bt^; zzN?~braU8;?mQAoLiL^9&X^6ESX`;zgf!4qxoI}Mv{JM-@cP4q+qzCSoHG0~;Gluh zT;LVfa_{5cERvMkH1QB+cQ|MqUIup(J@a1x3jGwbD!3LzWb4Kpv@_ADrb3AKAE$zz z3DzzPb=sZa*Js>@1^B9>s(5UNF}f}R-S>f7STjvhuyz|KLwScdPB3{E@@JGi3KLtQJS>ebC) zER8s2UFA27@S6A7-@qG5uy_=k{1h^s?;~fuK{cBuNemsWTR<)1grKc`@{z2;8T^XzPW+L^;jO zMXgroEmY!88x?_D{zIwg#v7J&)4T4CKmNTR+{D@SLJpalHeY(q{cwMwG4@<|Gg6Qb zc}mA&lfYuBL8+Up0SG-=Bp$2x9XqiKJ&4!z3pY`=&jgsLk51n|raZV6F1)K208Q!K#Xm1LQa*~BdnYf_m|}ON-+6xK z#^&d4-Ib$-<$us^zPD+9wn6FHsUI*G=r7C;_An&~QzEic^jMQH9890SzdE_N*gfu| zKdnit?a<7}cWKococe;oN)8J^`Nx7%dC#&$B2c?fQD{6~kQ-Z&6_rn;MsuVkJp)Gx z5I~uwGtKm_Y1Hlmu^|{Br$pxZsL1OuLhVsZIL#bXBbz(?G}4RQxxB>AGz1jn74k5!Ex6)kxZ%sf25sIbyto?9I%M)d+>zq?$gm;>Z5o_7Chk4UHqgE!smOS= zkb!aEdBXlL^&y&PwRL+<6p;3SW6B55tPiRAipL7`g#jrc;@>(sKxbO;m6i`|mLR&6 zZ8CF);8;^@OM#5#YYh>j0K=JgBj_8PK)HrD#tL&&`4?gb{ zr5)>{XvwBw0#@|BKWP~ z&d9;cwB0PM#+jPQXluP_2W>rTjTJKELe}B5G6Dq!S(a8S%mRC2LO&dwd^otsL0?$- z2JnQXxMzpZeB9&3)Krw3A2Zd1-#3G4W83u7k^Wk@wv>Swr`swf3xPxzrvM8wfZ-NY zWLMNfJPDISiIGSd?|w&oQA%12iSjf`RV=G|f-nj_?4p<72&v6ks znpxff(9ssRu9ck03O=z|$@17q7wkZs`9p8nGv_O*rw`qH-N&BkDehS^zD(JfIKb1R z!lCsC07Wt3a|GbY%%CSR0zEoe^wL@6)9VPm&Vd;mL&yk(o-gT$Q9eMR9DESwbHLbz zNx^t;CHxs&D#bABm8QLcOC9%B;aG?S@We{4Az7G$dgBE!OnWqH$PeoOTkq$wF`Ni_ zNUvEGHae9j;s2te_sf=q={4#5J0PI)t5sV~eZbyB-6jW=`6E5x|AV61#H|S|aMG;P zi=1vj#;}gRF^sOD%b0~v$s!}(5{MqK=>RF5JMszSrY^X*lG*Bsm zZixFLY1g^}Bd2r4ATH>X1jG~p8`$_LB#;xU?O z7M0k*=(8)H)dM}+QfUDn(FQ-t?+X?b^LFa)D>et2LJIp-H{rO6ttcA_nCCEa66K$S z2Jae=WPY8>F|ku;mvY;5hF54%?hKs@#}IRvPX&-xXTUBqY}#-}T~ke2z&~P++cSn3 zu!7ukELw-$YY-EDh9&-#_1>T=B&LMp?vCa=d89cRFaSNKTC`_aCS;oVltVs2CbBE+ zxq!exC&WZ>hQu8V_^F3lVw8wsNo@1R*}t&DBV~@{&=s~HO8t?PeLftH!&Q_4jEn^T z#)lMtErTkOQb@0EY+KNHev8n1jYQz5Ie4Y2j04CV#=dAoBJuAJ76Lj!~Yh zv`KFw%Ba7X+3IQj`4n@sqbf~fU)<9e2K<5}O{WXe?4%34_HvtJZbbDzam$+v=)dsa z&AmJ3eQIjz?EVwpziah)oXEj|=5ytv3PRIzL#?3x20n1_-w5q=r;y8_((XDz&oF>aC+rXRmm+(*c-gcqC! zHeQgMS0ZY^N`Q2sI!bgJ*Viq$RgOZ%2v=o?^s(|e&-14eLlZf8%uNVS7oqKYI zH_ya%3&#ztyDm=q8!}p$n}VX5N?)WGUu@)qNQTm7>)vyQihpG0KRKfKo@kLeFRq;J zZlCUfeuSe|JSOVlsZwaVB^k8F+zm%R1?uEyx^ks4I%XTuezhVXF#X#Ma{v90o-ZDS zBv5XZ1|$}OO%fT|D2pxKNo{R)0`&^@FVK>sKqDPjA6=D=jHRi;guw?=RLQr1kYjfC zmoMu5oG2jdX*hPaxr$O7`5009Jt0^UI4(%GG;Rd}7dKDlzd#gLKHMd$Rat1R`?%=r zIhSYISc+^}E-m#w6$v6w`U%npeQANOwlK_H)egYQ{oQfN#6-=&C3F7BzJv$#!A+aU zetB)ae#4%|2*ydgqX*estH`SLPaOhOQGx*s!Inwd&@np%T^)mOgsvNUd%=GEKi?S{ zaxsehEqW5c>0zJ%01Q_M7TX6J4rN?yE*@s2l}7}oA3mR*4PhYedyE-xunAkuTrDUW z54$tUoJuett!mkOC=CP}7$UfeBRc+k)Oz85v{`;uh=5CqDw^@>)f=|S`~wRdO`J!0 zJti~xRDo-y+)X#aS;X~zkH90R@gwDXdr;`b+)?0;q)i~^Rcbb>0x)8+wKIHvg&oh6 zVYb@|vT|s|CgEm&%uAS-+s3u`v{S}$`c4yT_3jdM_-=y}|6UOKr>4mI^5eb+ZC2;P zg**{Gqx~ zLaoxxkyxU?60|Yvt?oO)ruN&|_-mtapT7C8-FK?BO^AzK}Rwi^_rz<=N2QXYnbAR}+uy%4N?(9!1^ zK2DhNb%;{%}gr%7$3H3yZ#V(H7`MJ}t36END!& zb1p?l8cl5f?=crq_Y^%^$Cg2T(pz1rRZYHi*0jfNX~MiNQLZBesM`;MyfA^fMxY?y zHa5;q>J&$ivNZ28zZ$h#2!RAI$|9b?6ivT)Eb2PM+^iV^XfHeI?Kf{D`{OkSFOM+~ zJzvkHr#e@zMOT_RSvu($`|8n@n{Dgvmee2%`z{O{qqb)kt^drK`e^@V7`J@SdwQSe zyV5|aC+;)rr&A2yC2MVNrqWq?cy*LE^-H}(4`TJ}<(a*PCIB@beWmhDbn$9%!emIk zw}Q~=$gsKfwHWd#wlg*s63!(u8`nT_-oVR5F{(!49QV7@djDCSU8~CtfFL7~Uh6yC zfmUG`!Cd2Y7WS1k?0=E1kiLBbk}6x`b=lNug8`BYFE4WxeLH_PtiRXL>SJLK zKN#31Hv1mVqKP^@aGoByA+!{14HE4_4bS(o)QRLLakRgmKc8 z|5vS=<(-UjyDrCI#Q;pS5!T#`sJn&+i+!?pXvTqutzkc37b-oxXrwk|KYrT$Wys;2 zH#)QKGyZRd33GEXjSBOho5N4nNeV?;U6Istmi}E;AS+cB#MXC{pk%1>CyoVGiHr=d zR@H7Es$gYIjI1-xa4TF@DV+Oe#LUB)0>_lvDNk4Br~O^XkhgZ(r>B|tAykX*+i!MK zDF#OFP4h7g8j{!}Y^ zQ4mrNI&4jBeg+Q~1c6D?wDfFUT|KIzQ&R;zz0#dqdqTR-Wb7-OAJ;7Kqm&^(J{Zk* znCN8>n|LWvVFRd59{Y3mc~}b^?92H-i8>+Lk@BaoveBBt0w})y29&anx^=+=N|fLp zfj}v6#x%Hg&p(}LJY@i*WfYZhGkJPjGyiiwFwx>mT)HS71@?B3ei%-6Zfk7YPnUxR z;nG+%?zB~FA;>dk{e-i@PBW{2Fx$9pLyA;c)~AXevh0-mPH8?U@tP`^uLrel3q!}F zAH`q)Wn6fWcKAjgx!;ha=vWf#;;JSQAie@Nok+gM5!$7;LLV%Xx*p!%u4I1E_MWh= zDojL&tNB{mql0Ju4auePI^fEbE8&)#w@(dO3%oGmwyO_!@bEnp!!fg4=WuH8j?Xm8 zOR4GIbEblS!j>mDEaH86No4HzNYwKxdVAzcW3kFN*Rk7&naMvU(?11 zwos{5pD>Tdp@c`vpgx-69yZ+AQjo7L?X=gaRmYZPm#u}r$n>41V*uRufnq=nVV`}4 z2cl!Tk9K(ZXrNjfeMsm8#4dO5irr4N0)?Ys-nuqh7k11u4 zVal$En?v#5KdgkU7vu}VA4_;~(7hA3miTtu2BzD8n`T7VXh{ny|9p~`OiL-q08O&e z&Dihbmy=d&{sF!0Bpp!C9+%EoW;(QJR3@9TfV6qew!PEO@<7*r4{9M-?|0kS5%&VM zZ9S2LO^8nuj9(9s0#iI{+$a#o@!0%~R1-X$`Xj!GMW2Q8lWh_*)rIDS;-?Kjv7sVR zFt&eFTvIBER(i$K&SR6B$_KLAZsPyJho@R#h+3-^RyRivLx#S8l|p;0*-Y=u2L3o^ zGtHti&`|9Ct$@Ve+;D6FM2TknBEG<1nf}+MvE2p%e^3N+GS_!_NF+Aq8SUUvLZ-f* zpLHgrz`vl5(A`su{n!e}`MVX^lBH}cga`~`POtGAX zwXR%xg*bl0vYI)_bxqz};=#$o-+Yfzz4#*k)p{QWAcKN+CX--uVcs5|Yy{D5LHQAB z6*AI*PH4R>jjrA-l^aB?auIT^*5+~}D*kY({PM5tJ;}c=aNO?(^VwWbv*XeH2Kb+S zvw2Z%2YT&k#qa`3wioeHU00#goPGmFn?j;+nqq#HL>jnZt10KtAHvw`$hK$7Hj>G3 zQ3eT~g){C;HV>$rxgrRA&evBph5(i=!-wf@m?LGwK>h%+sMuYHN(%eyrwVHhFZFYN zb@EH`1&EtDQtW;o8dKu0RQ2-~bz^|~DTVFn5x5kTaiotfba_;HuVziCey*jq3&X5G zPQ!e@QG&;F+G)v3_V3S9upOSd%~v(s%e6MT!kmqe!&tPF=kE_OQ%Lzd^gLz|dA zAJE9wqP=8(ejQ@CxbG{&y4-3&T3Xr!HviDT?jM_46Geji-XQfFS0;=-3BgeW-vMD# zdpba4f!`?y-`{Ey9?wL^o~b>`H8zlf`BBQ;af4G`AT1Cy=+Rh>x$WUO)=~;BP|A9n zlWmlc)_QRE^0%UIUV9)gbq?5Z35thzzXSt11Qwb6J54XSE5KGY-Z}I& z*9(vtil9l^uIB4*30)hh32{?<*{gjAl=!Y42IG`yc%HWmZQ1*y`})Jv)A`Nmqf*5v z^#)6Zwt*1QQqnfnA)Uj} zEl77ONOz|U4Kg&6Uje1NdkASnN*W}T2I+dv@4p^i%sbYsbrziay7s;I{&dwi3qN+_ z^a$~w&Zml`YarJL|7H6CcI~s2R^njl7KkfHII!%b95uWPr=+*a*vsDZMpqqYSqI!0 zLD+$}OrlDbTjLTN3j2^VLTz(YRCZ~7OUQpfR?-zzSFYZAA@$Ik1I|~u_=r6(qpe0- z{YUF?TppT@$%2SMV&f%9VtY6M^htR+x!8u-Ads&RDq#*N#qS+t`j8#oGKe**XbEK) z9O;0*h%r4$mK((WIr8Rdp;`*(`Cn1{0{LdC<2e_OGW+ZgIXO^iwq#Gwopk3H-wlo* zBqTk&c5I8!L1P0x^?lDhzUdqjvV2Lh`b3;vSKrTO6OdlrI|+ z8aGT;`_M)W@mdXF7bmGyYjG`c6YaY=sJlw1=Co+#yZJe^Js~MG8*#lFG7@;B#}K6} z2Lf#hMF>`5`TW%4+OMNCf0n%K*UyjU52BJiAwI(cS#EO@HQ=AMp&33xVKprObW>P2 zOCJpX*N);Mq;QA5rZSKjGQ%)f5IXz@(z| zSM3Y~%aC-CX@ELpV{cV3SdgQ24D%f?gU(J#WI~@vw6v1z3~TzG?C;azo?RcM@0mVB zsV=?Hn_w@RvM^b2E@hJAV`HN7;>m2*0p=&qu@XP6 z;^*LU``5{DgcH4lKEiolbj&1tUAA#s&Qn$dV+WwVUv;VPKRIV0PAoxKhw|mh3l?w2PPnB@dML&+pr_S_zH!IsX{2oww=}!jihE8XMS)57f4_5FQqK zdBb)3%}s^uKWk}(CrF6JR-++;@gfY9DdX(ai@rdnD~64Lz%8IP&O4jJs z!+)*G<3G3mAcgZ0_}|cVqQaRI(xYbI>FaRsG4dZoKCBqkE;DMgig(LUE>^+IC`47|`MIF0=dgi!>_<=? zuX|_?r?-_pvo4>X=&}KQj%@w`Zs0 zqkkm?-*m;3A2|3NQaCR+&pb8HN50Rv6d;AYf)oXQqVVF}cbl9p_HLC%@UFFd{EKlx zc4X;FtAs_pxV|g=w6M2Ql$FHLe@Aq+ym_6o>BZA`U=tjlovON=G7*da;y^ntSZO9Q zKyc{717CMb@)aavwR1R%z76jHyP!%IV~^9)oUo|T+0@}++bZMsmG&>g_m;tjQ@gl#@u*N5R< zRO_4<8C@|_&N9&$%8tmySc&vCd(b8ySJgcwx;2U*%Pnk{tkz<0LSGLbG}letE;j64 zXAkY&T-L}8Y(8PPH5MGr2p#m2W_jf;!!u$+P&w5^-sQ1j=p!^0N+zG`IDZj^;4M5F zE?-$S?#TJ32M2pne(e{6o|(Xz%TmTYxZc>%I^O758*|Q;x9^$vd>fto76qXbx+&fTXple+;SHmuAyHz25r38yED`l~rq@_soJZ*icTo+W9Mz_OHlx&;|H(J6} zHUkuQnuAj$R%_s1FzIg9keEx_#gYeqqV{x^BobZO^y!p#1xReA5sRenWko(}X+t+- z8QPcevG%^Pf|i9OfU72dJ0dW2^2BP%_V#Tdm~Gk z01TYyNCltf_J?{B*}6%u@1dVHKVFk73GCRJy)62^x3F`Orfms^@F1TUXf7E>9a3#6 zM}MP^kUhZ5OtBTXPcinr~Ned5*@J70%5lOr?iRm_%ewq!#rt!Mp>`{GkWJe$7{}9zIdokz>Fd?jZ@|qZQ z0IksrxU-@j>mZtFBeKp3;=c-|;q}WVLm{@_WF8|raBn7&&j~hXACevzyDRN?;I6}4 z8=9*)*>b3POu0hqJiF7<%g)Ykzfd}Xn=f$&+U0abfNKuZAG5hlv>*%0jO*%5`gjeq zfMR>ztA$%T@Y4Pf+csF0L}Ed+WJoTqH->A0=?lZdAx#%0n?RnSfqwjmNA0H*+qV?# zM3X$1s*M8gOT+^t&{z_>f?Wv)q+TljHX*eYUF5yYadfS=-u5e4zK45&$;PqSRW6?6 z?koynxoI!I$n|X-h*=r#Se7=hP?6ExczOVmd1}QDqSd=PM?uS@>W2>MgebD`P0di6h=9@kxxEF0lbjvToVziKPy`&9DW84n5Yli-ovWI-5ecDrM; z^2lWdfvBI9!lE!CA(iU0sT9jvKXK>dslYZAXWa2-ZwR3mi0Q&8`x=hi;zTPX?6k~u zue(l!j~6=c@QVmQxxaw=tDZi0q^dP8%(;e>3(kn}aj%hfcALrPG+zWA3y#K^BNksUpeD^ zdFqH)p{glGBPRrztpqg}3`en{VAPgXmyKY#7X-xnpQ*7^s)8C8n>6aSJbgLoDQb`( zT&Ob+vd~AeE6><@1wga16MEhIQDR*O+Q^qubC8pxf9)AqwgKgM1IlA#h zG&(uaRTmq!7|)2abY=8qp|S}r=RBz1DAJike@qn+m&S##+Owi_%TzCwcHp6UG2;Q= zooI0UsM=JRnW-3Ff1!8KSI;05M+WAq`305q)yIC&j1i!l0N3i?&gpz$dQh_b% zD=IFe{%ViB>$1aO`AEM!9q1x=5c>k3>6dc}GxEobYg+5|f>_>@H<^>g-OR@Axw_Jy ze7cD;;iq|Z^kRkNA`Ue>O}*n>ZAo+B*c9SrW=6b-`WDq-W0JM@c{6luU%JJ5Tdf9_ z_{c#Kp|zJPl?B`M!@N`)qX>Gh@J!74EO;g|)L(WwMINUJNrCf zxkaPO+=Ir_nkNOodYbKk_X7r7CdBJVAVV-G_DM488A3 zSWU$Icy3)rgM2R$K4FeYy(-iWUXcC+U9xW$LfIFt23kjKP$(OX zXk0-0?{Qj9RXyd*9o6>fTQrcBC8pw5BF1x>|D-#JtunC~%W!pCsCQtf6_-@Uu2tJ^ zivzU?`51r0G(tU8eJ*vhG5sIkbaTL$<@8O4Vb>1wz0P4KJ;jBvl@s|ALuC1^97}-` zgy!QgkSRRRd}lmkyf-`$aqsL%(#l^On34&M12jgwDY~Ogx0d)hD>`Z?1)Afg>36It3CnZ1 z@}M5@xyj9PBvd#eNVu}nSmhO`n-txq=#t&mlRbJT{%=9h&b!)QPBx!!>-qn3oE>{f zM!XnHjoJeFeU{`2qq%;G)zz6q=~JQ8<%n?8(3BQQ3n9{v#CEIcZLdckKt0$;a;vYk zCP~n2ueU>>a|Zmu_xSp|AMxi6Iu=)Ht)DGr4>mVyqa(L5HR*-ipBXc+EBtO+!;__t ztv)ctnXbXre?>tj!!oo^np$_JgqC@bR z4asr7kU+TDFq1mScgyC+3_uO9_l0V|2d$VN*#!RV+nj$fyo~nmeO`;Lykk1JGLxU= z6UtBjB>X+}!62G!J&Glv*^ETa&v5}&VbaSHRhQB}!XFLkPyG$rTm|CL3nDvL5&>*` zQts4hTzO~SxPR(os~&bHY&6bmKHTFq+?eU3qF}80P_pGTX7VyR?|}=#Gg43TKNL_t z0FGlu4vZ#dC3`D{gUTYnTO6Ch%Ns&QdN-^E1L1}6?EAKwpw-Dn@~kU8No@Lq#Qh4c zNevFUfEKv5lC?7O6X1lxz7@^%?9iheb9)AlIq94uycr8@>5Y@>KaAEo44KlcI^R-NX~lw<9|Q^}~^bG+^JJPTEw0UvKF>`RR zAdUQNvVh1$J{&URamM2)!{ntgB)IcRCbd?2`&Ug2ccm4HdW5Tb$E08NJ~I{1fiIZ8 zUkPwrrxO$#+n7vvXjds3Y8~NZAaJ-A>|9C|iiPK={1>|pUAOcn85MX-b0}}Cap&I3)YD2p>}XBT z-Wj42*WQ#`5_r(CYBRY+$yg~0?Lmu2yw2PE{-gHkp`0wl$gib+VqeA}9p#7+8YX;q zTZ{PPb&IEJX<8WdU2@8OMx*m_-l_Fp1N~-G!PASA&PQ>c(3|7yZngkBV21wxlk^g| z4j$9n%@@g$8jqm)jb2vr1nq6uz41YZo)5 zy)>>eQRp&|Pe)tws6c*D_+61V?a{k`D#lwXS*V07C9E^gm9ufP(G>TG{|cu`_izJQqQtQFhM(zTYlZbYugQQc6iH|?U$FGQ<1dS$&c z<{|WkQsDW)mGF5&Yr~`mck1s4QA~)?BMRQ!HR3wFBNVGIkwl4FOP@qd~%irRrZ z#rqR>cA{T-VGe$1&G=Z$O}D{omg-9EwH-SJbEKAiDT5wP4^=F}$OB-@V%r)~w0aRJ4uhOil|p6uRyVZxh;I0g*jhd9)4=&0Ph@02PF^tpJo_Q*tKc1ee$qf<;!U+Z zRyXKX!PcGaewok&wS2!w_W4Qw8$a^hPE3|c$O;$lAKuO^`W{3m#|_sVe*F>m&fqCn zJ&0O0K_e1O9#YVU&2m-Q$vKH$V6-Mg!N{267t(e``9gb0=v^38@I%M$cLq9qn^cD{ zWxab4dw`RAk&=>mMTP=4I(yaXh{_@K7+W_V6(#@ap594qq{{*wY?Jnk{=<;*8T)1E|{NzP!Helx|jG`F`D3Sy$^*0NJQ7iNZHyG^vm|)yZ`tx5h8|PT6 z_X_AMOpzud&J%^b%_V-VVdtq)9>&n4HGyx9ck)u=S_;3H5+`b)ul}WU=AB6Uej~p+ z-|D`TO+No45GTpw%NKJqL<=);WvFwfo|{#u4EZY>1D;R{5OVaGoSRx%d{m%_=}FoS zYrcynsB*{)TQ`wA(~GHZv?I_cmm#ytQAEBGl zXe^&tX|G$XEJJC`4b@7#B^mRkOXO@4m z5770%r|89uRD*Rgw@>Ab4p`l!k{=Xc);`*i92B7Q0nIY2W!9+Hut-R8A##Y^>hMvZ z2&#YdBv2ZLJhLdRy=Zb&y_pGcl(#adDU4!k31fLo*yV61Qk{nF--QYV&Guk2^O&`J zbx#$b61#Su4bgwT=ny7rf0AbBzxo6$Z-6UW3Pj|GZ~U^H8EWXHe|i>a6ZE*nVZI{M zSEvtc3zGEhJCK|@^TS8EwNkltsu0E%r^uM>#hmb>rA?IQ z)WbA&Hw%iiSirLLI&g0sm2VmNmvhyxXze}emu zEBkSU;<0equ-8>eLeQ1bHPlZ3?4{qn1OD}zOozI;~Zzv0s9oKeZV6=8mcDo zgC=gL&u#x2YHlC)_9xBg$FoHmIA(vRjKrZLZjcZ8gAZGfK6U4ch+{($IN7F3fAGvP z%q;2Pj%LAo)?J7NmNs1K#TU^|3CqsMtI6JLCk}Z z?Tm~4%zN8(C3RL(S;*)S<%}x)n;qn@!nA{u=!SkFV}WL&{%FZq-BH-Bz+tntgV|^) zSb30Xg{{0_S0#&$h%+PWg!NG%lQn}S7nSVXyJ5I*?{_03JO6fDvj01L!ItXHE7F;W zo3N`Q)R%(3tO$cBKNxltVVXCJI)0jhe-D@Xgyr9Pbk^$iet@^;DhE2tAk@mLO}-`5 zD(pXBeXqwy)m+;E+@ZiDOQf#|OcrITx1YB0>7-7!`qD7-yY{y(YUb+zD{R#rZbt0ngP=$*b_xNBc_Iu zMY+NM__Sz8n2qND+BxHOEE-W;CQg;=j6g^?F5CpyX@xTa3AU{0fu+;BvLuh!uEG4j zSF|29EsQfroQ_f(^tC@!yoj1vHDEDhH`DId_}9oH3|pMFn~jNt%K%KS!^ju z>#SpIJjTuPkyY6=wKwn@OhSgKG&nUao5k_e~!e<65NgA zM)PbLtBOLG>9s?xY`p%<0wU- z`7CxiGWUy(xN{Now+LdQr{)}BAv0dmWHs7*9gOR5K4-1kmkCSwqp2``BI4eEyXa6L zGdN5y)BEQ;>$e@zgo6xi4d zf6B?e5J%H*;Wk{Z^H`0#>V*d^hv{cN6SSTfN2p297L%)#z9#c!WU}g8tX`lJ!(f9P zlEYG@GPOJku%TOh{Z~d)V#QHz;197ZS6{5h+KmjW#4{YqQ1Omf58j$}T7Vrrj?GdC zrK;`JSN#b@YPx|_VYPn52LgX1UD~M#J&Z)&|Gi4&%*t!+lRoAlGh|D+V?i#?D~l1c zTbbtc{Z1s{54@)$V{?`7;VX%Dsc)zvBP2Uxob({E@yAE6>LdvNAdSJC6J-B~`9#E8 zPMV2NWZa?8DP|n7Vq1B5;8U8)N$x3p&4xLo2d})xIMSg^_aRd`cDpTY=$d~ z!&#S2>z)Fr@5`1)g|7|jh6Ea$m-L_uSocyG%$mtcer{TlnRkE

    8+Wd1ndVpl+<$ zKiSUHso|ryxvx{n$Isj-;6zWpq9+^5L$BYIXXXMZBx*q!1L6UZn7>x33as?~)&8p| zGR`7{Mok$M!d@M0KkEQCawrf}_hw0TYalqQqw&bTIK5RO$zm6Qx&6ZQbtB3jfppff z+@y`cNfSp}K92}3oy@6YXWp#DtKmSI4<2e9_TD7RhLG)UXmE*DTQ7y6VJ?_0qF%Ut z%-D>jBDAMwl7-|G^iTcEUd1$&QWSkaWu?Jp?NqK!RwMVLZ)50p7Fi8xmf}((>p=7= zaB-~+UOJt8oz}<J^)%TR-S@LH1uj!>4#miH+g zpiM3>Y*Mc(*apgV{nk2kf6*|evN(@tipr9MiYmlTwAP6`wINHsP$#y zB=l6;{$7|YR41H8PQm(K%tCGqve5olp99tM}0Mm>MG(=(l!khA7cBcJMmkAI}|q|Wm*H`)5V+-L>w=KLae(*x%te0 zd=rwe+$ixR$WGK9MTx-zm>uG^tp)B_kArZPJF5$${0z!#wfg8e+3S$^O(g3jAcP+- za0^mD-cD%!4Clo-eLDE@Tb$|zWsC-x8|x)3L5kA$(Nqf{!8MZT-#FX8Q;)rlT8Zz? z5FGn1)eTa+(zq;u%jY&^{*;Q(gnt&k%1XJXwy-#t?Kt+kHz5y0#$Y#0f)FW^r*B#E zh@W|TK=hfYtUM8vx7^DXIkFVyg4cqi{VK?M3_azw|1d>T>DJzi!A`_44snu04dkea zM#va!tnSh?&`&H-Kp84T_4;&ZMf5*HqM}neD`g@v88b9;Pzf9kw%0wm=&c*9&jXzu z+_p?uhsSQaZML6xS}#1Y5u#YcGD8V3K)<|B@zmYS3Xv`UH*@!4Kh=bxU+c(jp(0Yg z_-SGXWfQyubZQvTdx)i7?u+&{QH4d-Y_UM$%uUlD;KS^b$nHxD+Wh-UZ6ZVPjr+GOPK;2?$d~@;JLUa zsr9?E0@rIZF5XD_TXtP2HIhVQvBc5pU4G%xou{aq`iq?em-#+AHVT z-Ap2yhgY#B>!oj{aiYW?68%)+G0~2yhT4lWjM7<=5`r-bu`xBdI?x4FX8S$1IS+f6 z^HAk|m*VTm&`+IS~oF95HX~2^5GUY}+78ql~;*98sBp zUDp-F)TvMFd?zN_R+D?X%|~fDNBxuh@*HCFzfz~#g{kKcf1}@x{88*Zj#_56%H)EJ z(v-8LQKXM8mIH^KyBTjk(4ksmr{B$hdt&)rBuX~C4 zNRe(uu|_;*WbMU6X*y}vC1-7RLM=rWPnV_~D0A#vAuMLQ@2HEYJ@S?6+a%91n)qFL z<+AJ=kO=d~z>d^GfJSWMq*3YlY}En3G{=y5=;~SO@6*SXH~{!^`tBZ!$nBWmpa*N> zVI}U$s@<6ryL5_!G^IdMsWt6QJC8ppI7h^|WAP3(#vjq}Z={4tKXH%}Fr`@<{{XR& znQ`yxY(DN7x(I?Ycr!ZmHK4FBME}~~I=-42=c{t-+^w(RE!c**(Gbg>vEzKF7{eaR z83rwnLRf1oh9(Hs1`-LRk%m(n%Fb_Qn)VwNXy% zclL7GQLbRVqFj?V2dJ#3!qliitl4^aiHe{DYO_Q71UC;?(&1}NQUB?|G;$`%XRoMX zUU9#(LBjP1d-7|#xoP^3+F#qXfk8s=(eX9YzBjRB(?Gd!mWUW`{~0NIiTDk4%&KYbr2>QP5MqE%z4>KnD+ywaupUT2g2Yx8 zn*T?LK5eGwIpt7SwO}%c;2;f+r$iw;X6pNi7v#TA=Edp})5txKC6?c*XoJv*p?j5R zOS{h*Zd_^*KkmzU$LN8-Q42?#!R?5aq_BFg@qs{oCORQT>Xy2s=(<6Vt|oKjP>yUg z-dKxcq!&L0>Dz?huS%EpWVt56G#*dh0j^kD`Lx?hN^Gz4bSnmfj(<;|?2;n(WA_x8 z!p+r)D_sx+BP@B??MvojOHb_?OZvZb)YV2rMNYH`9)EB*=f>k?*%F)ErlIVnI$C4@ z*T6LLpoWxJ9o{@k(+#>B)RpuPNZ_8|aULD^5Fb1bjNW;W%Gl$a<~AJ!e{i{y8lQ4s zq0W=5av2!X$L_diJf!if3*JD^OSc>u*LHvC8^XVzNTuBQ3%+hDT)jH)?su#okE?ZO zJ&+gQR%-hM>lhPX=I~f2fm(??1ku&weY9Q0m_fLSD)0_|&49e($|n}Tl0$ukUhgfc zM2r7-U&zxL&6?ezD~Lz2xr4aX{r0u#<3?Fl=cDx4G*>}OBbsps6Z}Np|>S-iui0S8<}tw78*K=Fi%4W49gP$)oBY2sh&d)nw-H0VygmM&`k%0WVMQ z6P1|_wVZUm3~TeCr>N8)+Xu1lpjNs%?*#>L9k{w5OMohTQP$ufj^hQeW9@fg@0R$0 znlM{_R9D1N+7xG2VhQHTnZgRIJAd5Ku;X1`s>Wph-}7m2#nUd$F>Bi8sY?EOUZ4N+0%qvuO+ zXQ-Q}kLQ*!NmK2lMt|FkkZvp68S(1UNiT>7be2^e2_N``57&Rts<+U@MY^*S#96aM zS*Jg$^(88g_IFPA(HccbjQab1^4zKi?Q~IpL?F#m$peKI}gKcws&!E`m_+VNqL5~UMoC8t}=6V|0QtHDz2^9pU(a-rf#}5YlqRvGf7D{$f$#?po zqem*LWtJzN!jZ?(0m#%0tTZ*e;Ij`qx#G7B{a*xKpNqgPE>*rjf$}c*%&s@5GU5W; zK^MC;t&zk!TJn5C{CW@Rp(e>Gq~k26zkzfNeOVIu8qaQvqt0eQ0!PzJAq$W;ss=PF zkE)AbJHJw9+{}d;K(e*^$;l{)6tmO5%~dhtpB#A-z7}1sDesq25G2|qI59!u`bz`5 zj}9&iKHZL_4K8bhY9w?Dbcw@u%Sw&)34F3(1wFn#DZZiSVZ7&k?l?!BCb$f&b>Y}V zMve_()izc4OLRs~4<-CahdWO&b#kE28B?%f(EL3a&5#HVLI9-U>i<>ZWEtvh<{|^3LM-U^@R+FH z=q-7PSE_>ju?aYv%v(#SDy$?~wZ1N2wRN^qiPmSo+MHi=;aFm4DbsQ@1-2J=vfwn{ z;A6e@p#RchHIAFr`ky4#5Fd0lhEVxTSL0Cp%BG2=&WXjZDlBrBk@3LBu;@c5i0LOk zj$A7CMP_%~gx~%$ZXfVb6O>imr$42J|8OTk*<5ezZSu6HlQoX`z9C zWj=2oykmg%vw}znUocK@jHk)

    bEClKqbEd{W;qqFhLPWt%2ThC)r07w*m*O^ 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Π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

    bdJ>(H8(`d`=KkH|2Fqxx=KV4WX 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ℑ6;GBYIoo=xK?eEgBHwue|8a8WZ{F&fxSr^nWLg zq2TOklw7U>H-^nfel3C1 zHknn_Ce&AYnG9z7ozq}K!0tlAA4bdgs~atlm>u-Yb{8R%US}O9$Nac{HG_|yFXEdo*73u4JNWG{ z_wmCw+jRfUqB&}wcv0sg?DeXG?x=x6RREQi<{S<>FJ?d+mCsG((-><|FQxJ{mqVj#M4IgF^2#h>j>g6~GW~5x zraW+a)Nr|#w59n`*oaWb0GquDI(;=1%5u6!Au8)~XbyP}MOEifR-2D{c@@-VIWnW& zxOwjYAAj*7zWx4deEIdqc=qf*Zd~7?GWMZ0Nw%Uhg3eYy+*T#b>U!!An#*XK$i_%f zTbhf~oKvVP%O_hrlgX7{w6%K# zSrH7I;0x#lDZzw9OUglQmBh?c2Nq_!Ff-mJq8~a^RwRPt4+d3e32V@v(4(uxMB~9i zWi+EbWkg$CkM34GM*6}S?TcctD~zZ|Pj;!EY;%PmPMG9sVu9-_MkSggoYJWp8krP! zy5D9=3vhu{Aezy6!Q#4mpLJwE>VCwTDuA+Fv%z{X{s z>(63#eHsfpb3#NtlJ>(9)Isl{`KN{Etv(rAI_!d&NVU_wlH{l#CLuIJOCpvsiPTLT zDWTDGBvUTk3xzOP$WKXH5pQ)MnRcP2lkR8gd)AE5+RC7@l?p<_;HrSuUMeCcbdGYE zy<}6uQdoTrFgR+Vx7R{zrF&XWO318#dY$MsUgI@hlM=7-8vp9(n;aA9oft(ZorK$VNpIYRIv# zsI5eCWeLj2iK>;>3qpcZHbq2*ko70z;uw(*M<=PDW0s$A-bl5iD-6V&}#c z!c}Ztzk;zK+Vzj-!-A{`%<+3_9R+f6tj28IaAMn5W7|3No^yWrzJFony7u1Bv(~zA<);#SsBaC* zkcXz<0`Uap^DO?|X~BIqioC@)M-#FJb%odTnc>=iB|<=%r&3c#V%E&o z!70&|Bn0d-bMOvnXdgmS1`Gyv{r>jAc`E2gDPlp^c>b)|@^8k$x&K>teKZARM%gyw zskEc3SSl%JhpHqB25(W*l>#Rj(2pdiRGO>_LlS7}MmxHVS1#_DwCYm$@voObuQHgz zcv56eLMrdKlT*~kE8%^;^yb*b~LQd>rL!XPs& z*fgk^5whc|rrW}DueJ6U`(5Ji<-7Qp}rOUhK)@xFzZ6@%z}^6<1qPXMyNy))%<%o^hShoVDEAQz$tOy zWo>m3dW{02;(sJ6_m@=6{GE=tPz#+-zG5qw)A%B(!E~0xQ|E?iNkCX5G?YXb>|_3d z0^?n_d5lG+96doUfRT(!WMl1GV>K;)o>cM>DW}pIHdek4rMihP47|Iaw?c5&cip|Q@N2#C`hnbq-y5434<@fLxca@mO6z_;!!iXVf*vGuG=1{i_|Y{z znWKIWIWY)E8J)zDbhfkeWR{^BZ=X=chVS!OCKDq4SL2GbZG@CmbQ~>72aBqV5wgMC z-70D{9!4oRyBqSRR8=vyv##OoMUOe|H}|Mf_DCCp_`RRtQx2T&i!H1Uvv>UsJENhw*72)0y9T@TqFc+E(ly69%(tx6W4F-c^#TRSol!GjHZZm{C!-AuYX*I92_mDFxc`ac$9*_XaQgbuDoc@@baWaO(W<&-c9l+o zHYe%#QjswkPGxYR5@q36WD(W+n|s=eUCPOl!u>fqZKkHI@ng|f-Dg|KrLN4L35T-J zE_@v0BQ}pc+`qdLm&hxA6(;lo)W)hmE*&|lfTqne??Au7Riut9gG-b5aEdag?qF+x z!HR!3CFSV3>1RfQqxl>goN})lFab^N0)rX!3MnYx%u2urYQCXj73Ne(XflNeh{<@O z^+y*-q@wx21*+E3H1m67%K)fhYy0cem?PohJfk{3*(kf7T*QdGk%nfSQuecPq6d-+ zMWmt-l;m`v4~=S>nI(z3Lv;re(N+f1y;m1g)8Uj0<0h?W=p{t01TmA0HL=`aGmba! zad#Fud)9SBGh`K5Kvk9@h0Q@VS`nzv7{NrecO|`+2)wAx<*4K=tY~I-@GW>orFdVn z(3pZHiV;>bvOqp9_V7xlwSq6G2EI>U1-%AC`h7efwuy5$yMw78?RVZ`Jiz`u&rd1d7{)q#CMP7nqRmQsII6LpquRS7TJNrTRra zDy1Ogw@j5>?n3Y@2BFD{b+uGUVN3qJ>89YADkb@R6~~!E;|^6umbtkJ5VO)J9)-VA z>N~EaE2|xo1n%G)5z1z?w zQt>4!vXqL#HcWr6nTM?z2hHW%j4rGpZ()QPHen5qOAHLd&U&9}i24ZbvNvv~ z+nm~grzEVtf&>06NkE))Fa(jBuU9<@5aO$z*1CxC&ETBPW+P1{y<<|Zs&Qu zN-92Vfg03UiD0^P$j8dl8yzL@+H$(>rapZcg^I#u=sFzv{tn)rP_lCOwrx^PYcYv{ zrKSOm_Dzls=yWR+u|S70v) zk#|=1tb8A4(EUH2@%^6{0RB(b2tNYqgA_J%dSAK1t~T|VFYMg5SDnAvV8}DXuhsF| z4dskk`QBaN5|fxZn$U*+CWe6)#V;O@t((Uw==%A=mFH{yhl0WKe4cKH?ZhyJQ%GMA zxj`8|UQ3b_B*F=zbfvbn<^fL3m#~*6rr{K{6~eB*FtFl#5F}c`8GDn)jsWSkgE&1W z2qRVESyl=sO<}DvZ(ZkFbMTLc9!4212yJ&xaZs*Mx}OO@uRRR5e|%oBz0K7M_Wby` z!u$k2-BWX2UBA1nui_1iiXnLG5W#X=<(8EF)RlOYGhxLikR?q{6)ma`T`2j95bw&7p|!ha?=xh*T8dS z598%6H(11}6L+b*j}-?_A(AIclcKedCDzT{XAj>=Os~n^cKjrEZ%33cfk-)_V;|=J z+ZA!(qAKZz#16m%n%1_ztkpHO1W}W8MAvpbL*@ls6Ds7bgYJXn@T0*MT&s?O4a>;3 z?WRh@MRp-kH!j-K5qAzSGGl+2R#<(^szYa~S0YBP zxX!~09cBrqu9GitTnJLyx)RopBq{?nPCLQ=(b$wS^u7u0>>Oz9;6rE=?Uz9;7ey1{ zDHJId@fHF590o_Us^b0a88^F^)=EsL_h*edL6}c4?g+S@lMd;9&v9zgYW#{)E+C69^2=89#*SV#WT zpiZ?eFW^gz@aF%AND!uj{qhk?7dB)a))5fa3NwREqD(~A_&7MdN+eOi7U8){Er=rL zYU1nuMJ1XdL+@Ar_z6284ZzYa7~UjHz}@NraoOn^G!<}-<$u4_J#hK?e0jz7xpR5_ z8t_c;_SUksvvN4)w6{anTw`bA<)8&y=Af(B_jE%u3qkvo%&FPoddYXPbH_okXe^Q4 z11T2r!iYJCfFAUtv|ZQo)Rio?x$oF2Y*QC0xe1x68~s|H58VzZ!(GlKUy-a-Y@w`U zg=|juGwQ5-Rhyw15kMDHL$~~P&(da7Q1m)^R22@IAysBSww0@UW_Jt)UJckndJ~Hy z)j>BDhm4B5^pj2~V7PXb5-Qt(@^q=a!AykMB{0mhW3Zcd6+8o`Wv%}cA@3aW&R##a ziX`IuSBv_SH8eR$kbam|#oFxdSCa@y=66*N)dG2W41yeVc;|7g=)%8BLGUl~ z$_A16&PjCEbc*U~Vc(^BMyar9N+YQ*(`Q)$l&b7sEtG8J8~O|9chaidA)}4LxsfpC zmVaGMYq?EpyH3yT4@)I~t(=lZSt0d}q;+2{R*VC>JSafuGon*;_5`Ng=Gc z&dF}GuiAyLx}X6%Vlgswh8$}@ZS_6mW!mV9>lDSV?*bRf|Gn!~>Fypy`dxdSkD4Vm zTRC~asMyfsX8#g7ydvcdgP!IQ`vmvm3XY|LDn64lk1jT28E@6_CIM=}<6F8y2U&D? z`i}*NnK&CTf~NM6te#SFtLGU#J=HYc$ZwVwO7rx0?@ecq5L~@SohOn*T?mY8`#m)T zsCtW}9mA{WNYjsLLMwwJ(-!&GCQjRDI{OSCl|@s8cr%22R5$)yka6(eMT%{mJB5c& z7_Z3vX_?J=K7?eXJa=fl<%?x+98Z$)GPx&dc5hjT^sNoMeh-cs)ywcwHu7nH@1B;IGX%(CP6hHJYSY)Lo^VdDA#3azyuxg8*!P z=r4Xq?+Os>d&-{FW>+y>U=rsD9E4up7WyD!`j;=CchX|Qs@t^)*?N2jfk=*e> zz{Cv70E?@VU-<`+N%Q;4Fsz)9U`jRnh_wDsaxW#@-}NrLj}__w8s}qA8{+$4P(CFx5oXdAS)yZG}UJvqd6Q8jwSMTA>SQX$#pVu40{2Am1H4(C*H8w3Nwn zVp9y2MREio1Z;qJ|N6cwLLSm!VC*j=r-CMFBLUWExyfY0d-PIECe9)X_h>J~*U^O? zwcs$e6SFi$rlxErU?4CMB2!4ee(o~Mkfh>gdJWdEWODKMbqT+<*iJOncs; zzC)yx2=R|)RV2-_RW4QF5Q3FX$df7-uSPNM>YUL_7!f_nH_figfXFY{m)@){!^Mzt z(8nFarc}OtD`nBm0{}$Z)9E$_QP(Q;P2i5K$gVMVBMB~@tE}0;t-zVSvb{*Oy8w;#dVg(k3CS=~`7e-D1;o!~s*{@LGRm zk4PV{0;b6YzALBt2OTCn%WIJTLO#KZV<&fZo~!6d3? zrnxF4d^K?(9EvtE-{-aTILlM^LBvv~Zn-HUfg3_EXmFg~nA{)x?=l`Z4oxex$d}G8 zbzX{Om$Fe(j{YotACX4o{n7hp8@u+GQ~e<`?2Hu>;((qViMhb%#CcIoxR^&Bo_WFb5X^7BAdE z2BNI)^q$^#%BBEJlcjINXFM})R>DJJq0Q>9b}M48Vwr-E7hWvxxP6P!!YA=sV8_t+ z`w6h{m4_*$N+ZuzIcHAOcUj`zZfLN<{>(Q6ZH5ZQAja@k3ul25P)PZ=WqkhATdCIe zPO=F#VzKmAd|x;?FY+6JViTbAkQR|pW{kf0fjt@;CYF}qiA4mEf}>umH3BNOX?p!MB-YP$*OveM1 z-Q_Bq-b{e&56K^%q6z2)kDDQW*EBLN%=v#3whWm?>}WBN2FjTCT2{uU`^Ch>dGP7S z$SM;%FmF>LT10=9mHpnD$NX2s`$?WTIxNAl)LT?~7%Kn1Ox$OTg%?0&QcL>!_ZTlql5qcHExjRjQ1=d6(1Q{J-KoA~3?h46KSfcpXZ97Ddt z1=2zxn=%`{cPkXKa;_sLFd0Sl4GxN)r7rp-sVnFAxLY6p>*FzR3zTDJO}x zLY(F}ImS=w^-cMwOPXCYCBA!pui6v3Gl?BIbHO^DHMo+dsi%VA-_(`kh*)pP*r3Mpf z@Gi98+luhj!@}`+L)v!ZcxZHj9lJ(6w50!yg9N*VjTWtEo~nX+B|A`!K5UUNV;ydH z)(7J0NTdB}e~ItuDIAIa*&5p82Y&DU&_?TX9g4>m!N8(DOj!84V|%gU2z>$7r>^{m zgB;WbeX3bmk)XAGS#V=BHkLTmJjnnJGmWT~Kip{asL}ip>Wx=oRQPsDo3N-HEv7Qu zxN5lOa7^L{?gM9decNp8H5rKn%rMFkD=A*JD8Fv(CKHx<3IFn%oQd~fuq#eePART6 z#52WUgCq3l%uK2HcUsYD(T})aZjv`j27b^SsijIPZpcYdY-Kcjk%d7mN@`Ao028>? zIo_&jN~d>g5@G?|p>Tzg>xokOrz``a?aKf^q=5HxGv8-Nd=w8}M-~#$O9X_9053kZ z%w5Y^J%JQv=Z%jpDFWGNbCA^lWl?64l;U&$4=2{#<<~+OGai zp>?Jw9hh}I5y8VjiU})*A)Z}oxvAl6f88y;UM`Z&zJQPSrKf=RzLuwe&pocEtk4*meGhg-B^*~4`!7Bya+I@fw_60@G32K4WSisYW)(q6ZuDAvi22ywmQ9{F_V zAU(1vW+js>Sqf@fDI=wlkbJY0J~nJw%9r*=Q(GuiRQLMEfwa#?7i~!_-K;Ks+ncG& z&YmjlU@Kw4CGg6H?eu)ZS);o$cyPdAZt=pBP~fEi2ulQEVw?N0vdx61wPN_!65F>x zo6EAXduQ^Ulut}3FR$~qzPX|(>omLdv+%Hm^sS{|??g*_3VYsN0c!NLh71j&Bd#K+ z+v?HAzq&vTgiAY!K4V*nYO&tQz1VLr1iwzN1EwhnD z@Y%d60Tg2SVt)xPXKW7w+?kn8V!w05rvs}3h%g#V4y=XI(YPOoW-qdT$~p#Db_DWZVPy&qwrA^ zH)%zL2k50BOHR? zzi-GM_08|nn5zR=yST%iC%n!!)`x;oHU})W{NgSHKIz{+@;OyC8X*f7c_soE2 zdc)WS;eWKj^ADLR;KS0>kG}uU&&KOogw%fVVQJ=%?;1htw=^!TKUQL_#41Z%%x{+d zCauRqM=4%b#sru)6;}>QiW1pR-!Ck#fK)?5pC7@WCQXl`ft2>c%F&1#J#kiDP%UgM zgcLUur>SPZ5)*@y3!}VmN}$UsuyEq;mMqrTrHS;^L1&d8nokr8YNB1;a}?)iNx~>( znGTr*qFAS^CE#{hCS(VG5wL`Clnf&OZtQ4HC{QFSrP8^ZV+UJoeE0f=fw(lH&Qg)R zprbiyR1cnmhfAOjZ`^?)*~J;FovX(1^~KDYKjY^zPIL`r2#;T8mjhX+Z+Eq2u*FGQIT5|K?CK+OqZjR&J^ zhEbAh_X=v$&vHMPj?CokMMRj_BQ<2u+d*Wv=cs5imWkujbG^6xx~B^}*}+c-{SZBz zpeqN;)gejcpBH;mGZzZF!Y>H=V`Sj$dI~eW4qno~r6dfO*u21z?TkffAt>1l(i6cs zq;-JDH9HH1IZ|K6yKP|eLfIeaf_~0%v#ul{h|}SWs^*g7ayKPa#1f8B%8jERlEqp? z!dkuY^NyUrhdF|u{4549^5M#SD71&@#l);1RUc<03Efh`Vi6g|k;VKfL zWdc0EV*@&fk>kdXXoCtUa8@}_L>H5fI=;BQu&W-cOuJ_P_V4^6>VRAoEIuFLngb*Y zdGq`wWRRtGg40l0-itvY|3q|qqX7`kyd7xK7+{5uW&I?Vp ze+U!oW1UIA>~>8`VR1QW zNxKzUe<@8whmHduS%dN;b0?F~*>gAEv7~A(S!7HMuZ`g86;{g_&dJe(TIdyKcX7cK z0%SD2`d6n**}G{AUJ1A5_c8xX3F)0?-dfM0g8`FW0=TxB|xqa_klL`laJH74I2PeDAa&N_1i zLx}TNXrU{)>^iafE*CQo+=Xx0var+TER3mr$9O{%c7klWvmH*t3;^zSt>Qc>QSwFS zNvN1o(8w$MF~Q%YNW;l*?YDp8)Qxw={#i#T+nuMT5*N8@tM35*l!gR2YRWIg$Vd#)3_GLHsCH?B;q#S>C%dE)x9Ru4-N*GqAW+Q-zqUhH zm`?RTF9fIz5F1Jsq~`(2Tv=R|npX+{CTo}<>eU*7%XOqg3++AK#8(7Su z&`6bx0Y>7^M&l?s9xzN2@kHGY#i`^>D(7%(mxc_&CDX7ETHDO%8lZ@)1cMzCH?64d z?IB?jDX8weXpMZ^-!lxA%L>ZuLaIvSEzK>}oR3`L>v3(}tcR!WjZ8~0e8O+JegB5N zlGN_3&cWGkoDR<3KanJ&N1KM1Fnh85F&o;hK!O-Uj;Zph_bY|D3}}x$+_KvacF?%m zv`B8f_lHiuXfpn+LrQmWH8K;3EHEPR)#phqz_<3wK_#5x3y{cXIpnAOtvWO+qnfTJ zq%7j6t{Qg}q^vsU3H$tZbSy<7XLsCqtSEc?^W}tmIBRsLiGC*e!O*Lj2tfr7@j;t4 zg%#cP=-gH!p!S;!8*)`OWPK;rP)`DKpd$~^{YEbK?u|7soJ}*X+5UzD-PORmV!Ltf zG0d0-%PWEFP?U^0Oa$ccic{F}1{oE-B_TH9F&8{dl=^+1(j)Nj$OJ*(p!RAW`3rI=Bi%y~WUHPzbI2jy0f~2NNufz}snE ztY_WW)>y|OJFV%B#vzU~Ep|)DHi4IoPo+zT1(b`O=9~wa%&KfPxJN+AcS3t>2>@@P zxfj0o6GFR+>*Cs=m^hVT@ws%iHgLrrK5||!z${(u1QS&$co^kRM2BcZFXm$%M-ZSf zZ=BjA?0%&Vv$|+#;SZe3Tki>Y8=C_2>|PMw9=8I5KJWTWdMVzPwgd;d-){8Y7A(NY z(T3UjI&ROd)VFslE_6aAL+cO`3HLu;kj{8bm7>9_v*93+d-2+@498xXcdI{^+c(;1 zQQnExNJYOHMPSJiugKBeNO39im@I`TO@(?SySm$dO^dxMQyR;hKtO!=yVE^u%x@Bp z*90QPm%`yQuAG+;Wz6J7BvcU zUpoI>eY2Kv?)Na46X?|!kbp+l%)A7hsq%$E_gdOD8M?AZ-N*XtwtbI%mrcga17Fe- z524-=eyNQr-~9KO;MBx|l^gQ?O4S&iL-09Pt(95zj@lOgh^xi?!FY&^E} zj3W16gayyFQfp!#s?;_%t zva#o1lH_O;%@w`g&3nCdUq=iDLGVJn>z%Os>HP6&r`BKY39IX6$Apj;X&Ha;KG!#8< z7&2I)l7I&G@EIjqQf&pH7WplfIKt*czzfTO$DgNC>}AY_(qsK%f+;1&mR0-R+*H#m zBegBkh9y2z5}$pE1e2(-NY+zAv&iwJlrfHw94vEgO*JyZ4D3JdQ~C(YgI7gAQaYdh zw>n6oo1h>L8f(G~wq6qqPJ zOxyai_j@M8{B%f30k#{vR;5*yxSAc+C|$IYzFHJ~<{eJ@EJqZAqOy7n`Xt+UG=ekU zI5I)U&KL4>?m|ZJTbi<*pK-&^@>~`{8T^TWxbMq;idB}LTvV;nD~9nEyBC?N=t?XI zTt~L^+ra&m1;(T^`sqa!tK6|5&jhbZqj(_9XJe!TaLrV^dT)%`ZLloQ&wJ)?2;FP+ zdLNqnY>B~F)6olKwFy)JbtW^=D*=o~osXxe;pvOoxP28l8*3CxX{2?eO52=j*w>gz zIiuYc8Q_~75%dQWOyAa$$!;e$P|$kdE}8uxH?i-{2@D4@hJTZfo zT~SWfLmL^FKR8C4<(ZgUM8Taznzai~rhk;!6;9b>j|;-N`Jk zq02E?U^&Ke^^%ADCD{Iz0^(xC(E-p@xvuvHP4qR9^Y*e17K<|yB~RB|b00T&B+YS2 zhjxYdbmTV2HrnN%F3x!j z;vpi!j*i}C0RMLG5x=o5ETM%o>Y6b$Y#^p%R4GeSdip9D$JaT)QlH>CB#zt8{k|xU zMpaF>`z<{vy|R;I*s>xhyc_uNGqZNNThQb!baf>h2kHutnLoF0?qyZFad-awuin z3T&m-m+-M|!}stHk*9DORH9n3G23b|9ND&<#aTN3SC%`&`n};x36jcEb;e&K4CCd_ zH9E=z>*LkmSIAftf_jWnkso%9yy>Q}@hN>PIS4qQl~j6V9xpa=SQR{PuKA4CgM6Dd zG5nGXxmd7#FW3iwc-|oR6@iAUcfkM>;eB!0AMK!qU$d-+LEgT^f6smUPQ9uPd;}6V zER=`{l(Zv$quFShxT5z(2HcCbwb1543L(2!)3eX5TC*%HZd{2vk$&TmWEov#M`@)_Tbi!L|_7bLoi=>3dw)~pWeF{pQdeuiq z$GiSTL2d8H701_|-D}so(~=Eu{l&)gv*b7+4B0YBay5SBkhIh_G6V1c0 z^8_ph9qTBe`LTL%5yXNrIxzfO z{yCt6+xr5GN7$V;>*m5NVyS z!>Cs?fbN;$N$$2OW{&~Xej=2cc4Ao(>K{S@|O_#jVBo@HyLs|c%l{N-_INC zYumE`bHtOmZ*U|X&tgru?55H%C2bH&2 z%i_(Ksx2hQSc4045YkGt@RR!aE>Y8pN}>+An@Nq`9qAzqtQf7&%eKRLBP_%TxtcYfTBJ44TfU=S5bT215bBFvoUW3m_jhc7XTApXzW#>re>UxDZ@`qRg_9;c%;;VipDS0@g1Qml3Rmq$wP`MS;2G_Is&OpHHDcET3f*{ zrGJSxj@e6wB&TPvgEtC=-ORpH{%b3%W%}92fF;s7SHucLz9lcheiyJtG)uuf(J-{u z4X;M}(cB`UsdHOU6zwYkBhWWtQNWoKyqF20k&ru(6&) zlHG1FCH&)I%#Oc%GyIgE^^BRit|_Bul&}bDY_2+ERBR^CmE1~$%vzn)T&-_fQ`qE8 zH!Y=%AxMiXRF5`XoG!Ghi=1&cUjxnKE+s z$Mo}Kl%nLndO>t-Q+4FSx@yI9UUdjsS_qMfSf#I!;IEM&B`vze-@YB$xmVWFvMyKz z!#)l~ElBgWD8d)We*4K|hzk~G`bxDBZ)`|2Fv%MS1YmGEob4SnA+7&y4&&ombi5r! zuQ?kxws8A)i{WU zT@PFtK|CmdX5pHNk4yWq!ilAe9ZE_$o~dnVij|;_BfOzW+ep=@{MW!{R7t7l@dHnF zMpKbJ0mUXUl3l%0)=yJs#L${NG>-il4vz#tovf*~gK6f6iyx=Llcd_LZ+kAkvpT_{ z+u0m5rh#3juxI4s6Lb+S{NhKy!7S+d+fIb9FuZ1A&0ZWOFfxJ@yA3-e1nHMO7qpKb z?#X>oZC~tU3PiOMo3atxMlciNT|W!gO7w9(aSXEi^z(eTDMS$&vxq-6NZ2p8pDu_h};DfqUlThnsg682+yLTW5ph$B%zClmTb2Nj} z@wwI1&&$95PCLt0T@!0$!)crbNTOU6~j!nTcGb$s6E4+rv9(GrC`?SX9eM40_tT!%R}eMcQp&fUbY1LIes`zn~ZSB0?wQGJAGJwzH?xpOQW zGZkxO=Yh3!q1!iyqi{W=%=k1A{$VhG)IF1)h&-)IBti3z@UTEFzbZQi2Oq znqpC?(D|-K+*sYyO=MF`U=t?d}3-)f$(2oe&haN_@ zVas9h6Dw#l{($7{tgp+B?yW29w@K1yZcqa9o3pqF$E6g}(s%bH1kg~nYwdCZP<-TiS@?}Jj zXGc-Yiy%LI;lX7~J|e~w`qNI-B^E;5%Vb#v5SGc{_DhzBk~XO(r8@a12TR$Dn@!v| zn5t(>#6nvi{_mZU;mp?1-$zeO6b#(L?$%%5zm!?BzHpoLxX{yT@$&b z{ZG6Qyo*a{<%!xpw~Z=JSCbB_Y%(A`eOc71KVwaY1V8m z-qFth4LtxT^Ck^u3%ve_P1=U~`-5Sz)B7|-C0F%T9_~gMe@s~Pi0~ws@V>`*8mO2p zN?`}ZN;XTRhq(rjIKyHpWE~9| zhpS)G17A|b%}oyd=S%98b^c^DH`QXMZC1$#ms8`s)PSLKmhwatgyG-)&@(3+rXLS_ zGDd=H_+Y$wr?P27qPOPr3IsFrKlTXUgMnhI2;{wdixFS$MI)dB4%IC6I7mCKu&E_zl-6!FcMdpOfP8b7!=ZQBFpc*KWkJGxBT?VVfN-@w)x7!GBsdV=LVe*1x0GPLe7HqQmWOrOw~5 z1L^|{5djAImPc1!!6|U(=1^3%n+a`##c?E*eWmyb$R@(R$Zbq6ZxTxZ;O_85j z!ABD}x}*!A3tFr4o3K`55l-BoR>Z^8HOKx}bKgbLNQHRr1ljXevn$$twOzNAcp=&~V19lELHmPDPEE z_qMaV<}*~0J$_YY*GMnQeNX5hv^0~G8Y0I%KJL9!gccY{`0trwiSla(?N2_VsbsH1 z_)wK_kG&YzEAYk18Tsohx#{tqOF z6#jbZ>FEiV*Zs-V^|DPS=;cbFp>9#f$@8;w0FJO~YRAz63PYeeq8%8N0;`QgPTo^! z9TxP)&>(}{E*}l3umFYLa=#o9aNjIuaeM9J%I9$hHc(HIKI$^vO#a(>i@Xg=*#=`9 z0G{1fB4jeRGUCOMMcX2|qyW#c@~rvqRETs$s>)C&mDWlcTEP<1)zc|;r!iMrc0rEY zs&YUk%$#m8X;$Mns{@;Um0U>}*eYjU_k|Pugx-yu`j-Nv$}Tx3jFvkr`14bRO2bAYBc90^Y4iHGxFCTs1*nOE2-;$)O0lT8apBH4dfdyxH$+H2EA6%aCOba4zW6 z1g#sv3#_9ZiD#*R3Pb~tOxsP1j2w53%3A4SiOQHnL^A#o3;H_?mLxb9_h09A2F^Kj zQ#`mRBv1KV@HfrzU>@j-;l;|PR-ws9qag?D-@(|(aNqBLD!zu~*o$Qo^OpR+rV5tW zL^N~3DBd5kc9nDVbUPxFF)}iN)ma*J`Uk?a7s$gp&RDc>F@B&E;Cj##kpy4sK(Yj& z_O7SGV%Gpz8wiHB3vnpMz5*Sn>pZA~+owt$AA?!fJ+na%MhJ^c19cr}1G_Tc*czno z?x9hC*W1o=7X6_lxqLg@+Ue(W*ky>#>bN~r)Yl9t$>e2MUlLXxRl-nHS?#H{zfrEg!}x788|2>p-UZyOxbhf@oO06?efdFtwI7y`&W%xakdyqpk1!2RaBN zxV?2HX-*Je%lWzL3HD=p`v~e9!6oI~@y8_B?l6Wf$WICTu%2u59ajf0sD*n*!)^Tf zl2pz9psPGTpC@UCwNje7=eR;Yy=B(_p-rE=PCQ@{UvmBG;C>CxS4_as%GTgkKtrfx z`f5F=`H&`xz@bkyF2S9NTNgq)c%9MB8#pjy-}r0?o2hzrl0}w|IitxRIQqtBsskS) zAM)!gq$cboez5RwN!p7#TzcZ0JvOffCxSBhE{ky$TVP)`Pe*Hec>IOKULT*0r#p9i zJTb%G7>nq7gOe3U4sD>68)i; zc=zl3V2-!!n%lAP%BS-=xwnURqPN`{X!~kclQ5SBA1tX>EGekih?ik|ZYy2rduyvN#{;MM^cCs6i$sEtusp`pf}?mHG~X%8WR`x4$4os?8!#UWj&@FtO@RE^DaxWn?9oyyC{+BFfGXBE(#f178hf}<{^ z%hg2=IfV`_gGME$_%NPTf%X~E1@6+MEowsM1&7ahn*Vb%bb@4!3t``g_>gbmjN6$k z%JO_xmZV-3LD<;wM|U4PZwShHa!QY%EFv=6%OXL;^Xqdc`wXSyov4`{mNmhN;@0xd zlT~X~)!Dx4;xAOc#c7I00$AlJ!3Qk{bLF5pUg`Y8$ZTrd{BTFY5m$QU^J>ded+MP= znDPttrxD?4&87rJts5)j1eK&{-@ky;fTZ~)p#n9~i96|Pl9-JL^(vdd5rLUpI2;%; z4OLg|&jlog5va;>4D-Dj5S^acPbs2`qLU>nhzuF9kvvq4pH5wF{SzEp39cEqjoVcl zIe8=tvXOy?{y+}AEQ~D+bi`FY+V2hay@vRJ=SF}7PK{{+Ueb`3U`8deRdn2^ny(by zl@bRI%+vlHVHXmt9|?dog*DdOVxk5GUNDlV7e+wyrH+|^icBiXzsh;P{}vHD*UjWb zsht#%k)lb?@SRn-n}ipUyuL8huMQsGKRFF95?8Jy2q-}qiYiKVmDRLBEH98EXGa+k zp|L$xL-Flj$lqx^G%CA4yS1qKztRb4ksQIK6xuCS->RTMw7EgI zGEWv+Xolk)(T%_lJiPT}t%B1p%s>p^(UPyO)DFV*&q&dNZLdyM#3V7LOlv8 zxJPatSA_oqEba17T%l`cSa-~=SRKqpc+Q9T4HkzF+V|4&L}35k0DDKrEK zyze_97Uce?v`zF|0nW?Lq=f%88Y7&Bi6-db^QaFp5pjWVUZ9D;i}Lpu1RUzqS;MJOB4-3K!CDo% z_5v8YI1Lh^mqC;KKAKqf=0Kf31x4#|DBDg@|DJ}n>m2mG7h&kjfv)Ew^gTH+_T^JQ zlu_T*!ZAes(qAsdmUpZkkr@SI^J>Hwv`8#!k>m&(8V9X34id{+IH~WHZMjhJLTY=y zAS0Y3H9`v`GOs{-!+;hVtEpuT((9a#$cmBcUJPD!qI<_o*OtOPTp(3Z&wPUXaUDJ*R5AFV=cx(J1@f3S13{|1*uNq z(JYeF)#zMq5^0<`ZPUbo5o1>kn7m=Z_%$3GL_vq<6O9w>l+xCHIXQuJ*o(Z8iZ zYPv=UUVD1;1u4Pln;5R1Ji2zR(4UyQ<;C*-5EkzR1v#;BhY1Q7{(tQKS9c^^k{$}a zlXIKo?Jjjr>P%>@wT?h&9SE&;AP@l+KmY-)HIUFqt;Nx*jwr2lb=~fwx?Cg|hg`#l zSu<pu2dK77kPJY4R*-Q3JSH~X@ubl=eVIi@-a^-$BbTaRpmp_J7HgzjWWkuzOlDNUHc>;{*TFm2gbW*O+BJ~lYhPqn%AU6K6GR+jG~0oD^jBDb+!bP62|_b94YZNLPAU1v8Du* z63SPkM79a3Z6&7f+Oho1kFEFP*#B%0x4u7)M?agzvtKXaw`KN0Yes(`h`R{XD0Ayz|E`JpR=( z&VDc@UifpiL_gV`@Uj#kvK`^29zjSj3BiPkm!_WS7Lg%gpP(_Fp*GL57qyz|FBy!-bzUxPCw zn2^Y2NlXjN~2A7`Vc_t*1+bRSXyI>u! zgNFLz6)B;J6+srEdp(p-_KNM-`HO!+1~AxmF>av4n}<%$j39KeZ6llB6XtBL99R#B zmvserog3#iFK737UX-+BGQ-Quav2kBQ(qyMnUS-xY+L_w4!H~q0oqQ0|7Svi(CWNM z(+jlhf+*p{B?jH^{Tukc`!}#X`q$9TeG^sr`KT)@LSuOuTC2#$S5>36vWn(uO269$ zLBaYFbu?dxw(43ml~Kl|bX{N%HD@$765 z$Ln)ASf0Yk#ysxbT*La*2*%?+3N9kSjz+1M4qv`6ebMbiFb`S|meZK}^Jbei#)h zbTu}M^>P^#<)|qxMO9%jp_Garr{<}3&!ywo?GF%h<#kfJ`1I!v&unVeF>Ps_O+77K{$XdjBU zW|1)=Z_DkMi3ujUIAfx!unPBkDjOBwU&YorP z;QcHfyf;C<=^zg7B(QrB!`em|b8|tAkNFUxG0mD1b(N)f`wkn!$gVRsGpQjW3Lw(53M=`fFfYFR!2*XNyE6~<<9ePbAV*YMy%z5zSWEh`N zTmJ5QyZE2~?gjqG|M3w2@#ly5_}(z~=B!Bf_aYgQiyHk4)BQNup2O|^b?mRsVI=HD z(4r^1p`bBQM`JOc#wGc2%{4GcyI`RBM%~m5C8MR4#-J2tl>$b2FZF#lR9&s;_gJts zGm4KM9^z-8KE#hcIK}tgy@}7CZ{W+9oA~PG20nhYg!_A=m>D!9;gZ5o zbaKh4x>CBYD&aB9u{zO@CkONR-m^V?a%T}A9#7%Z(=5KaGlL<EtJEuHuJ}S8#77 zf%$|HA!8d{x>k7m$j7#;;CJcZw&~!YILh8f@fK$daTXE9S)1!ixOe9iAAax>KmO5I z`0a0hfq(q-AMwjy{utl=?)$iV_Ymvrv&c@SkVv@Ua;agp_QGW9hS}65$ca!ukDy-* zmqRX=8T9S&dNhbdt?2K!BO0~9A248W*o!Q+_uvr4V17N6>NXfnQu^O1NQq6ddq)SG zxOK9Fvx8Nf>@DDMdkXs-Q`lY2Vr@2!#mQmJXNIs$vFawpsz-YpxO?jmckdkG^z}Cwo$)mX+57qiHWoit27SRRt7MW^&{DDAaF*51!JRbq(?o7 z$0=qS@nLx-jgzxAJbQVHXD?3i_{kw|-J~tOv?yun4lXbj&wjl_KPd_@qXCEEm-50xf z{&WY=pWVdMCpYov(H?H!*~01BCeChe&oQ-3AE`_44GI3Z=OgQe6eQ zl@vE>Dl)1vz0P`yw~AqFYVvr>KL%*a3~T8*)=K zdbBlYSCFmIRzYTNgw)soiSbRQ#2dW9{~g|t5^wMZ|IDcG?Shok-UlKWnw!AP)-uAw zap)WdbWi}r<(tauN^+z`SsscBCFS`jt0*KCp_Bsrs+vkPQgGMY+DvFcQ*$F48tYMC zUyHgrK2DV&B&w=&q(psV1KK(}AeGCYH5%aZdJyf8V_+mD5F6}=BjAM6q(Wm?6H01J zQCL}s;;Lel*H)mC2@WPgIw+W=pfHviz{K1P=2n-<`B+AFX&$affF9!H{PyW#_Bs%v zefFmZMX4s6-$f5~1?t+H(A3=uxlx7KNI%y0H?T{N2on=~w~n!MdWh}Q1MHj~VfS{9 zl-N4S5fuCPZsX+fecXQb2=`t-#r=1l()0;VAK%6L!Hy{16z1y)dNA_i7EJ!30ptI+ z7!$v2!NgN?HeW`t_(1{-?5u`+TQwejX0ll$8NFxR43GvG${z8?%WX*xUYUM9#UlS5`p5}-MK}OIr zCM25OSB1ubajXfxWf@Y3eHc2iVdTvInv`JjA-c<%5*kEyv|^qKivIl^67+xKfWW_R z>JZ!2AiAwaWJ@Iw6;O-wW@3T`n>l;p6*!9`M@n?TIo}Bfmw=kIu< zrJGv#=_bBrK}!6Em=Is^y7{YKF4M%>5$A*ifwLt3S8?kcnw(b& zG-bh9K}t|NN0@M^Ku@@oP$IG>q>(a6=r_;z#+ZyK7m)Rr)A^R6=R89~LjTMAs|1*w z;Qh#GUYV?hDn$-wsv4Rh3W!JRMR_JJ<)j&^78wytKyZcxUvp<5kA8D`C(g_$ge+bR zRk94)p$Zt&Rp?`#2+kVFRzWvf1kG?hv?B%3rJ0Z@fgw{0W2Q`GObCpX!!lJTN;p|2 zS+k-RcCOJ+?LNX8Ge=eo9rPh}(}d)nQHcC|Cnqi%VCU|CA;3lxx zH7{dQ!av`N{!Iy37?sgm?Syx#9+u%!IL0dBo~Rb^Ox7SUQ!lb5hIb^G zyJNt{GY8h6+OYo2j*S;iEI+Yg_8yn-p&((c9nQ%rxCk-YW@NV)Qzu#sZT28M*9cFh zN@PjcM@nI1jF!^!CLxHuc+ZNhmwxPj5XH{BAv%Uvlx||;g!M1Xqvg=0is@Qv;9uxK zV5tkfMH=T*&FEwDCC!9VEi4lau+lX%Ibj^7J{)4bm=fp)OQ9bkaCt6*iO$2EE=S*Z z1?<@xcs=VyS7Pc;AF{Xk1-J@cYQw*f5_!;aS*HG638&YjMC!bRQ-bWk*GUP^ ztcd1AbDkx^P}4s8hAZKlX{CNpA$w-Q^gTNk9(%C%GKhmuQ@Hn|ES~;y0WW{Qig*6F zPT0sz|F9;Oz5M+OVL69C@N@~!elw3pznI3|A5Y-y`(rr!!8mUJa1wWaI*muaT*UL= zuhVo1r{9~z;*%hT$<{C#!C4WUDZxV5?x_|bdd->_UM?TT_JjWS(Kz+aaCxpygqEb| zq(mRaj_pY97;{+?2Ntky#M(OpIQ(J)4}P|cC%;~&=Wt|GA$b?{V?eQb(53-w_&B5m!AX^tETPVs;&3C|(t`%7X zT;fQSZeoFa)}tZ&E(zrc^aME@jtS@jviEspyYk4sk?p5xmyd~y0(8@VJ-kk+P}m45 zgX{-qTnVu4V3Hz`Py5J`6HM4LA<;w2*e-US+r=EAo3o8fN;KInqS1O@I*M%LU&=oH z#eRy+3nqgF*dCK@W*rR2TeR=1LipPG@?XL8+5h95l=v1ZxNJ^AfgmOtN=ngKR!*om zM>(3ytI$$WO;hqcN-I#uFVzc*QE`K=yS@$vDLqs4^lY;CVZi4Ux&!=0eNSTz3NOBe zqRSUiT};o)wpPUbJ{)Xr2z`k8u@Q{M{326gI7D`ivn2dnB8Ww<^)M=XVACrx+8;rB zAcldEAH)4o%#4rX?(qRWefK4P{Ka?i`3LXf*}YrXT%5t=Z~|-OTODpL;qKuUUfw^( zci(-4AAkA|e)iq>@WI0q+}d8m+T;+H#|N-Fk)ruQnhs)VYyg@5fDq<(=;Scb@dqP* zEM~`%85)4!X%%9{|GbdOun+327uHK;e0zpo&5OPmzJLFwGP)mBz)zl(N z8*vr{mvUlK!foyoSrS9h7)Ig=1RZXnL&3yEQzd_aULi6f7`1dPMniecYjien>838o zJG!9k>K2(2{IcJqki%)v!Ef!OzUTw%Y%nRoeLE5jU@RWOcz>8c(|8aW!Vvk95t|Wy zvlbo$**>ENF1-qU3JEmbZICwC6B-3rNSwz`du@#%COEsJs*rqK8jA&&uTa}v%7MmC z9<_B#eKmB7Uby>AaG8uychmWHbU;JrY?3KpQL)Z|92z=*ol*|1S|)^A4Q4sq0V5VS z#&Gg*6{k-Yv3qX>^9LSGY?(2-roqIv4m0FKEuLDjde@E32SKdg3t{746o=2oaP({v z+jmAWzT$zizXwAzeOTF#;^^Th?!1`5?Wbv+-W$f@NeXidUZhec^vC+(vTM-O-iWfo ze7yB{e}^k?y@kSS*HK$uf%e8GK}twFx<$5xjQZH1)?jRqOUw+yVb!3wrxEovh3IIl zf?nN;>{tlLdlR^OGJ(B~Fs-M+_(&(lhg&c+*@2bCUfjHC#1i?D1IZdV-1$%&E6w9ragX&jcLr@0#P_6F#C$ggQ{gQBhhvbuWo zHZ(%r#btizKIra*qJzuGHPTqLU~gd@A3r+4Pd>hjuU_87moK*Q)jM1G{Mjl#xHp4a z8|3S!El9Y!;5RkHqi=y#*$8cSExH@a(8^__YKzgQY{z)aj)R3kygZ!6qs?L5UykF^ zN)#`*68Pj`1fQLZJ~Z! zsYDd>Gm|(ux`~(1ALG-H-^UNX{{?>itDoX0KmH0|eEuO`Jimv#clL2|vWey83=#v> z<_;CK+ICoNGK9lsWX8f68x0{5C;Q4G!-ULO3=8ukSXvxKb~1rv(u1j~1XfqaF*zAW zG-`vv(2c%6-Us=D8M2S7(}I}TT${o2>@XIx16Y`dV=0@&a&{2YBXOkrgGdBiNCe$T zMd|(?Nn&nl9Ehip2Cjg>)cQ(w%_ za+U*YHAoQhE72b{AT>aKY{H6Ah+?1t2PXNtHzw&mT*bpDM|knhZ9IK`BC-zd+*!vV z_3PFq#db>+12Q2o6C{MNI2Xb4Vn0@v=^Cdan8}8)bS@J8nv@u{)3s477N-97u^7D; z0j~}ohXxJ{`QlbJoOT`DE;B+w2L=WLn3$lkx0J@(+87;|;>)cx_V>ndayW_Gr(CjW z4j+F&WA?je`0(9*ym-2UhYvP|ro_VsyEr*r!~VIB#P0qgHg~vmR*sOkd2<2#`}5e{ zo5s!#*{98M+J6pPYa>`+VnQPEPcVSBr9mvuC+S|K{*AD}HN|{Z@{yeySj`IPv=Yc< z?U2wtDUq}Zf$P*zKZeo+WCs$6u@1^e6yvi)7-hmC6GbW$78uUPFg81Y?9wnsXzay@ zd>BlJkQxahNaN5?&-hT3?hV%A7>Xj22p~E@zT|iclQZL(U6{iB@+=ls=drx8h>g89 z9Npf>{ik>E;=`x-;JfeO(=Xq{dmlf-ork-aSxh21>_RAJgvYNIqy$fWK`p#A_4-wU zoCwocNhGasdF3$nwLxoWLZ6*{z=#%o4tnZqFi=`shWxU8+s8MtdwPJqv%?%oadJR7#KGM& z3MTJT;P()>pD`W?+GcV9fj!MzhK?W~bQl!lK2<<$4;G5pI44F4$)qd%!f`hgpn z$3A4A1u^w3gqi0N%s!7|;T>|q-ygu@yZxBwc^1KbKPje*@AM0S>sRZne>{ZEPlmDb zegb269O9+EcDNedp&RH9UPq^&U##^&r3K_&`8(AdJ~*o@hYprvm_BD1(OoKc3 zF5SeL5`vVVYvxQ4#w$YN>!gGrB);|)Fu!nn_2Mn}Rq*xKFWtUQNC;BGaRrTb0!_Kx zk|a_JB?a2*K?-W(6?86Tki{z@i_w~ zJq+n4n8ur794AM0q7}~BPB>VbgTgjk@v_INDQYgUU+NvZusfh}aQK3#%YxvU`xG27F~Q}#cwB61;9Zi!O6SR$F2OYghL5et+@bM)$A$6R4nay}xLnO0r_ch( z-gRR1#Eis_3c=-WK{{}$qF2J!B3pt>7){i}nQatcfosbcT_2sBYpOw%FG}smFm|NH ztVUp_E=Nji_h9-=D|98cU%IjTo)^3Cd$IP+ zE=oADu0&$9Q;-t&OgRG7eyPnKWLZ~Yr-fG}NwAP?7?TpY46ts_uv zKiMtX*VpafE4wIVB7-w30_UVH;Z;^eGd({VZ5PmBc^eJZ3pCH!6Xyck{{(`pV4_0& zCj0ETK+mDKX`k0b=7;0O-@yIJzl7!CzlM6|8z{YY9p%^aP?cYRnxYcamXx8cq(Y#k zsO&YW3t61F1QmJ3D7#L+$>pnPDldnuwFP|&8N4Pv!VU`pRui0hwGc?Y_U&(?@Dd%r zssc8>7864$+}fvS{=y7qMw3X#{TL2AFdDJb)QVJ~4?(*Q7Of1DwgxDB+7a`+F%*vo zLL!?U#`@wMp5DKU&p&z}-}~%ieE8xC?jG-BW_%d&fD`F~FqWrAakjgH7x#|v`MZzt zqfcJq$Dh8$2aith;BXzsYtz`89l_EVjTbJlG2V~O>0zu+rZAE439)UjS%t~L7dmp47Ehx>uhQg~?kw^w~AUc)ij{3u|<@0YO8NT zeML1Y3W`Lg1ZOtb^#*vYRzy7>3Yw_GN21J}z^m}szRKLfL zezy%#M;`+8pU1!==L)!VD%jL=@#VXU+DzJ1hn@y54_1Tr8qUP25E>Irxspbcym|+U{-`Wt`d43!R*N z6&1~EXkI6U#ZEp`za5+VWcQwLG`?! zFogAcx$;ei&qi_jatg;!r?9x!kNB7o={Xk`x8gXsox$BFb9nG<0k`f>;pWW|jE_0t z_bA|Ts$tMb&{$KBf~%MDoxlBCT)%jUuBn*%wHhsTjY8z+}1&EAvw9lAm}?{=(vd z6e03=EVgS<=`TTNDTL8M&v#cn9Dz0j66EW}$qt5FXc_r0HhQi(YG|H(7I!OLK?x#B zJ!Y5tv9_JY%whtg<6gx24T#4yNJNwvjL0xOq{H!g2%kTj$N%~3`}psFdV>G)r$_kh z=Nou_lEl=Y24QCx?1pxDZA!Y2ZO9G}V0vVb#*LfqF9Ylv1@uz7{*FedyU7msw80?h zfTq0#vf5fm8TIrGrSYhf_6Pxbbyus%u86yhbPo^Vy?fjE{`+V6;>AsT{BRxb+?vPj ztr2WZ1uz*mqTeZjM^DdnZ8MF@HX4(yG+vq^YpbELSdPxRG8#h-2w3EpNx5;fl)~+m zB=Ub=vg)yLuNdT6pe$C;Q*$x3GD68(KhQi++W7hVj6=tHfSVC|FB{>(^{ZOf$lklK-%;!YNZAXw0 zrWh|qachdMX@X+9jn!G49dG0L<1^g9wTpx8c}$ZXO$4p*^H=aDC9JF|#HFm{9YVai zySV~AEfwf&DnmBx8LD zc{Ow%3OKBCnDsO!ISWMH1q0a|qmk}?Pajg$j?**rtXj_!GSsJI*w~;kxjBrTEyDH? zZtjiX@xx`j_s%X}KHI_5N83V_`{Df^JmAt(hfCPpp2qqn?PGHi>swju?9JlfVBs80 zPD~3u36Uwm855i1f_UJJh}lWLmI%%FV|ji6tBWbZ5SHdsn4X9t8Mni3?S<2>gvYHX z7~$m7N)|PYCIxf`86t5nrsu{nJ~@cgNEE@C8<7Ei2hfkySQPy<4r7Bp#E1PDnurN9 zf~T<|AA)fQ5<^}LkI@*Tz8RmSaW^xF*@ZF8FHO+zAwhPGj1Llq1X3eOBnIP%C!-h` z>PKcejfK@2Z0xP#=+++YJvzqO-5qT1&d|0#1R_Sby-Y|bV0X#kq^ZZJMj)s|FqDHY zprLh?LT5s2Xog%}2aSRJd$$Y*8`&PZk4ldUEnY zE<;giDe@^;tgNkp&SXS1*^lYPIZVt=iEIegj!+o2a7D;*o14V`onsu_m|dS2 z0@|uRjUXi|o2${Qmy2>yqtjzp*jU2K&KfqzQQtY^oe4hf! zN4WFsK29Is!3jC?XXMB~c=s`GKfNb1E~d%h?`MbRiy9<;RD|U3uORikDh%GTVdO43 ztoL0Qf8fF7BR^)IhA{skip6*0n0p?<)RQ2l&oT8Vfb2s*CLj95{4}k*_%eowi$(iT{~k zuuPG|l&*)0GXX|wVazlNA#6Xb7ui-LwyPBgZcqTQBtd|VD@cjadi2Iig&;SJTr)Aj zLf4!v@mGlnu4~Sj1zs*|mHP^qU)u4P#$B`zK}c|xgdiliz4!$ifqwIp+l#>^oLDzP zJy-+dSToF-R+_JcB2fh;K_0I}j*Q3=5+ZvdT6#Xu85B%Jl!$$F`U|Mf3WV6TVt@sq zTVbE3U~;Yp&e<+eK8s)Ohqzr=D4?2b5hbg7`%58AtbnrQ+!*8@VbhQ)r-ic21ADyEIx~2}B zqaf0pC2>wlFh-8eh-}Ep6prLb}tr*l%mKV65|QVWK*x-ogI!qS62?7i#7 z;YUI2f9Mz467%sTq=*&6h(c3|RAjr6V@$@Ok{v$cZo5D>&fnb4XD zOxGi|(L?KMv2e$Vi32SXE8TSLCfK+PQ>qxo!BW`hn)s{u#Fhflb-E{3r0^}$erf!B z=IGwzul;A+>30Ww3%ra4##=&ZK-bL#g(F)B z&$$MLjoL6rO5_PW2n~x}zbfJMij+7n-}DzB1eA5O8sWt*YIltwB{C;w z>JPKf3YmMz<)gU#Q3Cs)4dM8!F`WKj61RRhiPP_oD&|g&f}54naV0DJeVIa3|g0E+%M4YoUx6LmFlqbwf;9OM;iF=-yW+ z$Uf7(uP2+y&U7AY3l4qSqXZ5fjYY}+K~!~zo!szf<7w4IK&VQ5oT0*YAaU+f{R z%iBo9On}fiM7S&+?IWB6mwalc{WGb}WJI0iEyCLZugHl;8$Daj35py^!Gr|aXYrfK ziySG@6Syu&7yFC9f%D^k3G@BGfqd%kP;luoimqHk>Ggb3&%dgu6g9;aH06>*t3pVmCJp7_jr-nf$K}}IUE`Q^1QF8SXBrS~? z2zjwKo5g*4&Tr07Av+YuSic{mQ5VuNvQH5^Qb8-+W;IljcGOpvptXT)j>Uul@wG00 z%>_#Z!Fw=|}kdlMnEM{Db4YO{7yXxGgM*%R<^g++3Z-v)lXlg8T&5llb0; zPx0=9BRo0V!ZX6z)(loA;+P)^Vs1Ey-GvbxtYok~H-fp5Fj4_4mL~>ry1h)>?BnkK zwh-rboAqcYqxQIV71!UoNbPqW#a9dIcM-K?0rD^1z>SO7kbfl)jnxh4Xlh4GT{CJc zYDB50SDF%E&y-+dg4>#ji|Udp)Rfl>RFziKc1%t*qM@ozly)jFC_-IXg($gXR;yvv zX+;JB3qW%wO2q4d-C%&6e7<_}85_u7Y^|8ss?&}#_>DV$y%21b0i zdA5j0@7~0n=d0K}8^ZXS1@S5JjnZv`m>8vJ>C9mtR_?g5{fJ440M_o%GwSIOZoQMm z-FFwTbC$;VybqJ}G+vhbv3E#z>)t9JKi$FYTg%v9Pa_q#p-}dJ@Xs zM#Mt~Os1Wf7&T*TScQ=kXGyeUdZL4lt;PwR|E*Iy7Uw1Kdh=j1Ux7+@33^L0%uagF zyU5oIkZ;m2g*Vho+Ou zh)H3T^*~E;grcef=?yU6VWZI3htPS_3t#~x& zz+=M6s1d7C1x9V{h@09FG+V>ZkZ(VhHoo zX=ErK8XxJ$jncBP$3#=QCjt(nqJAVJ0ffCy_#75te{CimtQ6yUoqaU!qB!1P z$9vE3;s@V-5AQra!_n3P+4C?WE(4qfIn1ga=wz&o(@ythD|%Y0L}o;59hWX+O_f44 z)D)qiwgk=fW$0w#Yh?#rZy)Ao261y|3U|+zaJZMj;%pF+Krh_X-X41wowrV8FpLg5 z=z47!=(i%7bchm8*{Oakt&C!8X9mZdG4W^*PoCVw<43!=b9)ts`_oujNML3%fW?^z zxV+K&@*q|hlUSPL<+&I68%u-OT44e_g%w)9FvWzpAHxZX-8~wSUC?Lj5oDpXyB;!W zGZeBmC={J=I1JQZ{a9R@!0z56Hn*m*zQH2lqgY!f|9q7*C@B71jNtGvgZuZF@aW+N z9zEE?{kxlZaBm0q@9pB|&3UY>j$>hIn68QL!Az(JwHNr zgd9oD+2^KZ=}ZFa+jGdy3}aw02rrG70F9f}NCb(YAff|a1miA5XgWL|$Iw^| zu|YoqaVNYHEBXiB7-wRH&VOSo3)aKf*K| zhf@Zfp&c51E0mfh^vG+_tEL#v(gmH3o*RxHSp5okq8bDfdIb74bnY~U9j#F5$v*Zq zz+@#`X(d}?>wuNUpjzLAuHH(tb(f(-QURr|8EPXv8|fHkmrRIW_j%<|TRPCCszIx? z49z_y=#W>Uhsg|W1EkunE85yA@T9=9rL_e$b+ss^V33K3%h#^p z;+0EcdhNz_+Fv0Gii!np&@oCXDj?yn=e%yD(!)rN4I@4@03$i78jBv`!5F5wKIFX< z9Nay^_Q@_5wic1h3<^@BuA>2k)y1fxK%iSKf!*)Gz-SWLg)HV)<}kZFi}}?BEHP2B zwTkuK4QwCoVE^n8C-={A`tUYRAKk*y{SzELIK{1}cj@o?_mp|gK=ecxGhwqxu8ffJj;OAsS?yLXHUn3+g=3X5AFQmj}G;)cJ zKp~{@a;S&uU>K)>Fxx?Bhh^$(V2y{F4x#tpn5STp%P%eUyv}a$tuUmBZEFN+GC<(W z2+ty~!%}5>fi84@8+81k6gw~a! ztdu#^0(qh$M@n$ra{^~ew0h`zIb*_oiQ0j$pUH_!f|TGI>?~$23Fbq}FWEx5(k4t& zwA1#2lyK)>p1md|2qK$=+OEZY4J=^I84b>vZg>}a;aTVv84X%$FGYVYQ-ZT3#FQY2 zh)4-7E2U*DU|k`mOiVBt(eBSfM<8F29K6rKiUP4MtYvoOLDm z3un%V7^UEr+QBkOeR2*f!8X+a$8?7v5}dQGbe?V0W^L5|O|+jn*ru73s6gLj*=u6L zFkYGyyG~aUxYSb>6v+}A3xzZ-g&|!>+jb(fDo1=6dlJF^XBnLRU>2v}pTX)o30iK!5cTOWVdAzOqsJ6{uJwu+?VK4QvLooY7C}I; zz;&%4C77gOGU63pkrG_q$ud!c=z0&*$9hZ(Qo?|deH9|h?XZtm!Zube;F_p{dy-2y zRU;Z z2Da6RbM_GHukigr_X)$tWr(QFeG6S;o(000v=G@8oH@bS6e5$N6`pwtkmp#8oJpx# zY8&d)VLFy5?Nk9PwWDjQQMBc&ObJEgFQkNtNr{0{Sd!0Qhn7C!Z%mXLp9(l0%%#YP~quBm9iGwdj z1VM53{frg~rthV3`qe1z{dfY8e=#dcJH7MARlGPSCs=>t`EQrN znHH-rf*3n8Aigdo^dh;X1ZznchiIInDq$L~rM7N|f4+y>TZRzbx8Y?uQaeUuZ+o%v zP7;ToP2lzq=Wy?*OL+K;H9Y+_lM!61iOV$Q$cV3(YsOWw-3|G_r&6S$B(`dEY4wn zcMH#+JisR(y@&69@;+WZeSkCa6DG-*@YzkU>lFyt444^7;BajYFK!>;{YPhb|M4mA z9j@Wt!3sWjbcmOCw{h?09M-4em`b^@LDPffQJk(%;%FscU$YikS^>FoB z#8fSnqNT15jpS!GRac{rju?da2L(5F_Thy2H`#zsiVhg4DjY9$gOip>J(y{*kc zFGAVg232Pp)C4&#leIQM+0g>Mq!U)941IDb3^d=gHa`c zq`eU(`7{=|1l5%*s375$=!#(UhLr&qe-u96S5t zI65JFdo+p3v>gK>1x8~U9IqwtvrmrjAAiZ267S&mUmoDSTjN+7F(dBiMxUY{78Th~ zoeU9*6}W7ZgKUIRDuIT^7mHdu)C$YkI9f~N?(Q`9mq#!^;zz=zg;Uc7T~`C`tBJ;5EBa_W*t8Nj4ZW~x zddMDiz)0i7AZZub89GTDjVF4pn|d)AFkpQmh~tGQ_9yH(95dlGt;5}MJ?>`=I2lr7 zH=)F8RE61)2IB!e20ToL>fs~16ZBXyJP@WniXa)M^ND&0Zj6sakr|C6)$c_lV1w6X zL^SBYU?NC;nZ#T+jfL4UtS?XDCXJ_qy=5Hjuh95fr8Zy0*7gLlQ#1y{dcq-Hw$t5oOF&ZK1VJyWkDkBK$NCl zyB2m6*%9g^n@K~^(!5HL5nhKCewQ5~pOf}avD5qn9^TomCg zHu%gcxb)PIObpV!sG)XMQXg=6u9li2x}QsEyceUcG9UHyyRo4R?QQf-r2cSwj6xWi zvp*i*-^K^;9^?6w4IJ!_U?4{EjJ+K$YX_211E$9P)Ry$@7;<5V?!_T$ixC`h9vZi-YY+Y^{u7c{YLh zY!r)AF+oObE)8LAp5nymIHtz}7#VON?9F4&ZwpjPvWXfgfI}yjsR1&kCtuQkr+Bz0@ArP{`Lu1D6>w_<7Lwvx8*VC9^8m4XN z+@`r)6K6@p$&NBR!s^W{ z-AA!eFT#U%1P09T_v_#ZlP&Uf!C-BKQdb2-ANldNR+z2i`&rxQSe;O+>d@9vjFz@y zw04xCmu#F|P0vBvztJXzC!&Yds}Lofq?$T($STk(DTPE`3w2*Rj7}*m^#4D7NAw17 z@CG@&Atm164gQ%?+u16JiB5996@3Pnybd^{e%Qhu^yn0*Zf`(dWf88G=HpsPK5mq8 z)cC@U{RB?Xt& z)ivkfGEdd0q@a|S*HZ9VS4V+wZ5_&K-vvd5xN_|(E?m5b3zsh85(QD$uIJ_UomYVC z`2{F0uRs?Cu4cOpk%2fO$v6V>Fbob8^mYo=$g$?kh@I0tY@h64eSaMbn+q767@`NU zT8MdHE4_h&ib7O2R-s2JfyHG(G#No+nCn%>Fff$B@YoP0W-^#vnh|8h^5!x&_qTBK zY#&EVc-%P>nHa|p&IAF%nGzd^yI9&<#pEx$F#5|%Bz}7d(NBsH*is^Ppu^BD3&!uc zF#Xt%h3640zuS)$F5mPrCWwgHry((AB7zBs@jFh8-*qB$mz>>GD-wHpK}Zs8?JwoZDX=+O?It}$+m5KWllCHTaz_;(q!AN$?fmIuYI;ps)IUO z>uP=P`##ToQ?OIsH}PuL-A%7Q4hw6ZS6!j za*@nxv0qm(I)4Be$*9v0xD@m{8Thg)>!WM@YI4wUr9OE=R^vsjKqpC zer+apdNXI7Q49Mh2vIq!2%DX}bU3jPcLLS0r+5Ri2rryJvfu`vQ_RbBdaFoV$xNCF zGeSGH+eOHY85tBg|!ytHP3l2S9m76!tZ8E_19ij8o{FxFkpR1YC!UH%N|_J z($s#p2fhA2M$WydgrI729pp|6Jn~QNF8agOJq~co?vZLBY#3$!kCIWZumDz71j*Ic zyOZqY@MDhqPHwIArw%R*PpOQ(3|fYD$@{HP)%NyY ztg0_cdLO?Y!j&1*fGblJi#s{*JcMP|v~N8GjE#~Y=6~X8PUhKYdgoGp;=y=i1KJV` zwE@#`Mb?S^r4c|QE0S+8YAxVrFKBN%p|SndbRdCR z5?oG%pEPoVJIMRQDcdXU{7Iut7WO_(q6xq?)E0A%igw3Xj_O}kgaN1mYkduxHjUmm zUHODE>>gUnpbT-2nQj;8g=r>3Uj<&wShk(?9ml)Qvrx(=w4#o@(FfYks+p+wT zn6MUABXK)X3i~wqVrfW}@=y#}IkyG5nAk;Sf%$5`T*gU{XQLG2%72S}QMEI?1#~Hl z294<+jkzGJ`?(L7lA*sjHHe1*mk*t(Oo%0vc{mIz;Y%a&0yTgVsK%j$vP^Prg|d`p zl`WK;;UyC&E}=`0I)it$_?|~fNpRxbzb`I`iPkD#(V{1!u(bw=#h>{j9?0JVPqg= zN1%qn&)RPvTbA127B%$V7NNTydIKS;mTHUB{1BOQ_t>)0T$XqCL6euv3plt%*K=#f z)pZeVN(pH{+3c7a6Hk}DH(XfeoIRQ4$?Y)Bb0R1lw3=O-dHx~o4WcYS^$?svZ<@N~ZS?`FCwvfaIl#^7|=59R)6Nqwbn5<+KvDn4)}!uU#L zzcYJ+63=bn+{%%FnoqPdfAst5_(p-KHr~WxDD*EF?eQ?By@d}P$%A`+?nV6X-w)@6 z>&XbiL%*lMh9}!EYn`bgJKF`t*(`k5D5!0Oh-=|GcAyCq z`5C5NRqS5TYsSw1NAo3rLQ10m{Py=pr;Zypm#Fk-Ljbg;QuE?MQB?zc@()c>#pXF5 zh2{Xn=hPgwd2QX8ya*qeEP@$r>EG5Bp%L+p8c8)=gxega+cUHhhZ52X(5vtY*i;pC zZpBrlk~#9I#4+im)3V^8Zd7V>79VTj#zza<(YC{Lg0yC0 z7i$KrTkZ-@J)ZTDNj(Tc*!ksOf(dbZY>borHkT4QX;L(O};AurIph zSAg9*s>xjdo&f4ggTLi}wm^JlTF2OI|S= zX8vR5!qty+93(&;PBDifU;o7i_gSV@wW7LoW|iK^B{{C~uZU$$slAmyNsF;w_-r*I z;V%l_4z5t$wj)--9mzoD@Qh!$@_PndfsW9^pHFasFCWByH(uy%nnies<2#F-B7Y5F zLQBxOxdgx4OBE^%Xk)BiDvs)o)|o31)W9glA>f?)Do7)mO}Qs7q{P{ilT_DWcjkQs z__k&noLfld(p2jsib&y^e)mQW3z11OBz}hmt9h;V6%v+Q&uUC@Mf+;`axlLP=o;%8 z3E)?%Jn+nOStouOtH{A)WTffW+a70{7jhGO>>YyO1WYy0QLLR^MdFJ~h|1}*P)40t z3x+-l&;xo(dg9g{Dg}mv+{C zQQr7UO=WA9Efvl<=X`f{j`DJ2bufkosGM}eK5cIRPwZwSu&^AXis3t^=!UTNmZbq6 z$@!OuE@JzbK2vT)38X}JQhc0lakrP$oixXrDxQPJWfzR}yfu7Y#QYMFIQ)jw)5aLZ zu;ZH^6$koIc{IY=ml`}9w#L0NwUL0bz`40C8aF}l=6sXPVfJlqh*Z_>Bfv(ty!Cq` zhF#!8cdqikX0ef?u_M#Ywv?B$+;bUIDxK^x3uO>(N?Y+C0Q0>wxI4#txv@sI762>! z^nvMj-%qB9$|2*dO)L_MMpOd~K z!l54*7xU%hF&g>CaIqb4=EFsSz*A|WIjY%0zV+e0@t8QW~v+tzCq5z)Y2V_ zFeX$hukhkYGH?#8)hBYHVER|aRADxL^HPeoqJ~SaGI~TSFc9vSZ?@O-C57LobpCE= z0?E!vjOjNYA571yy1jk7ui0zGT3WHDuC8G(?s90zIaK{R7@k*ld-q;(AK4fsLx+!0 zt)2kcog-p!&^js2{nZZM@;4%HJ0H_HxBU!(!|i0qqhWZoeQ^*T7Na0DD}!ZiVr3ksB+jj!OXa|#rOpSKdb@aw z++_`2+~M8?RUCKCeq^C(58BoCOh)duUz;ZI%`9LW8k72|Th1_Y4XFvmo40~xdQ-L| zc&y6zR?wrL(PN>vk)OA3JGSq6(MSad&QK}X&?JR7aAz}6$JFtPPoU=Z-tkIYk;0gO z7KKx%d;RM1vnBN}DG$DF9=Hwc1lqN;KjRY?lYGKc#P4JT>3&Di`5?hA;O8>X)<0u2> z@d^#}Nab2Aih!u#?tntzfMyn=(VGn-rRLnPZc7T)lM@|_yA{);FWBzg=C8%s?29Xc z*vH0>whOoAxpfW?nUhbi+nFo17>jaNQ5~!<^s%w5!uB+ik z$H=RQeX)mTs{2_ZZK}p`N=Trh&~IVv3}0*TOZ2sezVCO3U-U2#xt zT~U0<)(@ZNhX0Bxaa~*j%xzps=%ToF72qVF<>Rnai|LRO5{zOc7Z=m(ef=*Vy+tU!#^%{drm>&(w1B;1Pp!@`ND6#O3V~&7X&d}sADCS zQ7~%Gb^Lp5WhZ?Tlg~v=SW|l9)Vc@VKV@q7ErWB%Md1x%jZgXuZjB|8rAe{qxwN1v zLqVapU~d897weSrm~Q*%$B4wlwX4)3SPDZFSlQe%x(%FMGpcD z4^A>Agh6GBx?=rVjANd2&Osa!Hs|{4Y5|`jZmJ*_8Pdd~MXD=xL{lhqc6es0vaa>z zL7%QhSN2^MdO{uhr4b~j4z~{%EtkQ8&1!z!JLa=oraLs@K=@EdHL=1zWwI&hKe~dU z`0^*2$};1nI^iX3LXItiaW@vcLqS+}`3lX}@UT-~G1Ytj?Z4H6$hyF=SZc9zMcK=+1q_&b#TLcRU-zh*$?;NG z8Y!fMF%&`n>l^KVi7{wum2fG>%oK+{bU1@zYjFA#6#mNTZ#2TmM7RNHY`>$*cVb2K zi}6~KBn@j)F8L;|rjmDwEcqD>fZ^fK;8HM3>y>@iq)&L=9D3{^zg2^i%I>~ah9tq~ zeE`e?EwzxBoJ)A-ze5tC`Inf~{#{U?$?9lmv+h(T3!l!@AmewO&it+zkenO*b?4^r zrQS+8G(ifvZV|o*f30sB{^bge=(UqB+fH$@hvq+AaoIgU(5pd7vZ_TE>!t|w9A<5$ zLV#SP%l55eoh{o%A@bQmjBm*b;tzTtyCel19oZ$T{izM zy0EG5Ti}@tJV3X5Cj0Ge1?lU%9}cS32hi@USNgp0L;Jnx3&iJ=hgQB@e|tN@%6qo~ zfC%Xm$zG4y&?<{3vw!Gh-u>|8mEL78Y=EI>fOJKU+D9w~qrF@J>g^6Ai5OjX-so*P z_@LZ5iP-syM&9eCN@4Y=btb|ql8ao6VfPG;a`-tgaJkT(=cHYp_t^#lHb2hfDn-;T zFcED@(EWEj8?`Bl%L@9e2A$s>Ck{<^1*%OUVKtgWSgh=p^0E0ubB*^coq`5cQGsWKYT{%mBkC%+;bJ|Fa`2l&Ve z6*On~H2~?cNl1StW{&8r0(bN5%MViOWoCMSaG$O8>6+PosT^Eihx~}h*G1i$c}~4% z^@}kI_J0I?uQWatg>5=a9FY0~V&ks84~#zA!GjNlq%vyi;LUU|&OtV>T9NI!GwGM>UFdKWjg+` zzJU`k;}I!_BKXU}lPhwtgVDH;Go)>s+PiTP2EzR%R4_S%F1qU_FT`hU;G^^0? zvl5>itD~srl=(?x@Oh4<_G`Abvnt;sYa@KzI0y)5#Fd-dR18PA*{#s)@pjm3j1LlA zRu9oh8G0ZZT?OuY~2jG1>QZk$v_Q*7Wscwb?rqI1@AA*yZ^ zmRuBsgiI=kCY`*xX+0;-bW+CcP-0twiBHR@XP~RX1P9;Kc3Zn&82geBuClo8T|2dz z`3tgNQ;#b<6bFR&-<$|fL<&3OpKLgSYG&GoUef`(=Pxw- zzbB{N22Z+Ril5mRA|__EV~pMATsQv0*%lDjYN4K^pQiu!{KKJ9z@t%E^A`5p3|4>t zJO61x6Z-kSEC1Nmbu&eVG6l!p@UD&U;-VTJek1vLTEFGRfYn0O`!Ho5k=f1W3ge?? zs0{2r>%T;%s_y8QUBrc@eOsBeZFUzhk059vy>i+^Ci~R5z{ADnZ+%tjaf)nV>4Ds- z65obl^bdpV2)s&_Gd_e>+an4s3V^e#q zOg7<=fas*y3+4Moks4A%^;v|t96xD)mXKzW@A)uNEl{_Y7Wd76#phN;xSOE~I%z=s zKhZe3PfJ4w@{;*ZN&K)t4{{B<$+HrZUhst`8AY;xZy%%w+s4XPE}fK z!fgEnL90r+glvMB#gF$h zd>yPAC6>PvF)=YkC#N4wjp@KUDyT539*a&~$sv>aAtAH%tGVLy@IB)Xoqb#hUUl~%A_Xv)4afp5`QzyVW|j8H(J#eEO@k(+Jmi)T zTe?zKfkq!wXz=b533@c>UdYCG4?>SQTI+#TKMQp(s#z zze#Der>1O$?KIF@;7S7px#6i|s+`Rgw4tG$F@$*S-hHpQ=}72y>kl*CZ6J6gz$>&? z{P3@#=U33raP(@s#ElKJT@$o1vcPzedRy9&B@tWoJ|hcb8=hTAm6C|D+SoW!4!-z~ zVLal=DuUKkbAD%ygFi0 z9Wfkc@c-PkT~B5f_0Eg0leGjqv}m4OUcS`@id3GOUilYd+!|-E1pXj&ov^5eoNI*FKll{l5DO{lo!IrLA-XPW~ii9t~^}r<~(@d zWe`jJ`n?uD%6~pUo(|9c;uNSi_sGB{nF$kNy;Yv@bK*cwGP?1mqOD*QngIaw38H8U zwz&kOZ~uiG#CQJCS*Ps?4rvri)l4g{?u1Bl$AaTgQ(j-CodNaB2tZR2Ab@HV8TjNC z+fR4{5MGig=s?qo#vbOuA(QTQMCV3lK{=WOFPqdqxWBW$>e7{cEC<~S@0%XKYDAq^ zqA#ZowlPa4_7-i-!VLt=V?A7*p>O;pA0nU0mfPnfwAyejwERa7Eq|ALJdsSnu7l{E z9G(*65+<2bpn# z8R4lZK`Av5ngO%ifADbyoAW(ZJ&D!D^%N__tdyL71O=3cc8wn4T3i_ZL3<`Z?_WW$ z>oY`g^?%fxx`$9%4U_-TwV2FHLkWQU;uEb3AIGfalwX~!83KjO-VbJwX5HiGxh&Qs zBOp>B2o}?TU(B#WBfwxZBW4cfoHS`ZP^JO~o1)gD3vYk(kOvxCWfWX+HR`m}HKUB= z$QMglC%%%tN-?uYCwLlaDi3K~v~CnA1yEi!3$NqU1+4hT*d@i(eZ`urFuk5gP~ zaO^_9&!sd0>f;Ft)QKPLW2{U*e`5F5@AW-aoIFXkJJulZFJ{ojKa-bW)D>R`B$CV% zUaTmK>;l5tAdh+wDUFLh@|{+^7h1^>Fl}fY%jc&%6VRC1gvE=QwGfK){Key2FuGTc z+wsSKS^Bk;ZyQ7*zVw`xS}~ob%MWWSAA2sB#Ft9pTQsnc3B%FWlF?oK8|wY*`bn^7 zCyqY_)eP00v3xoO=T_{;U*;q_bkmyn6QBAF?i6%?aVl0+97I+&V`AgRB7pCI$F+OV zZC#Ji8O**)@&Nm8A?l*r8opYq&?ojUD*Pp5ZAowmz>r>NiJ@WUq+u8w-SlbGFRgSCtmty9_1XkngF-!fR+O1`=W z$@K0W&qLdAcV3hzkS#=aix9J9@FcyM_v4b)%08wgu5yw3TVWn#EgDjv zEQ2Ddw}%~F&7cr9dtd({0RutC^6-SP-QMt3+x0omnb&O<_P3XVM%pE}tKS^W?|Az1 z!kUH>^^+@Pep8<3cziPyEyYqU(&5Ye8{!KzwRDZx3x6VZ=&e-kV0keMk!%PcU&y|0 znJJBWL^rUmP>#Dgh4(54Aa zTk8*}X70E>cjht9gmll=>w{ly*E_|6--LAf9_=7viUSxE!kyYvNA6OP*H;YscE+(3 z7mu7KxCyR*5hB=cUdEVzhW-9@&n%Otq*+u{}JOez>0O@5moNAGH~ELmDnWQ|;y_0}HW z>BH;B4`r_@k>jDlJz)*Vl%>LmH1A(GWFq`zB;T&JK{FF2R*puug#gsph!Q%G-VnPwt7*D#}mKD|UMp*5kwqs^++87tka zwqZU6b^E=VJja4QF)M>veI<6ibt>l;Vr~g0!n6bFacNzT$@l(Rwf;&Kk)^fJO%I1U z`UTC@f})b3)r7aN9ashom@JA=7n+?0#7MUWR+Jmc9`0hYYS{KwssBVue~8qikmuc+ z2KYlD>f$qA#3QPjoM{q7CU9s8#+$foL=-|d8s8Db))27y&VwJ;jP2IrjqW^%);wVv z+&ChJGSI1|3A5H*4M$pAz85y-8a}m((NXov))n8mkl~}uJ)sVovJFB z6os#r^;AkFs`};Y|8mkmQ_Z299VkI*BYYmvpL+X6`Q0;rW>GzQ^OAs0^)%x(k;1u_sd*D#5F zAX& zOfl-K8(y!+72tRmqx3Nz1%I(*iQUjRuIP-2KHC!WALDZ4R-fTL50RvZ>`8yAtU_kL zeMaWIDrhh+eq{eAS6IqcY-b-Fy9(MIpz2>OJUtKl@v*{|R4JiEFC5 z$gH;5V_C+C0htc{-K?fY$n>hsYHg_9m%xrX>g};Itf64#SmssOjWLHp-9$ee6WCpZ$Up6t=n-{moXg~X zT;{y0@agWU?EBa%T6~F-DdD1xxPU+a8}St?M+a&H21-v#E7rwIW8;{ zk$ME9sAQq|71qnmlf;*h1CNUEtJ5)*idlg_q0ib$z>mIyf{(Nrw$7|s`QK@CH-GQ* z*D8x!*#`Gm`yJ*7<$58%!0y5eCx?ojpECjfRX*T)-ww*3R+P2|bDN++alg==QUu#P zNdd>MSzoN(Y8;ZW+j6k_K*)}0Bq^1J#aO=fcHN0TUdgAFRW2JfD>Vcj$sPHic{UE_ z^4izp*KogNfeEjx73REk-ND>FZ=ZP3o*9e$JRQ-M!mg1oku9REPc0Oi&^~$=##jY* zL%~7U=P|(~RuupfrVuzI{gtYiusyxO@pk>&aQE}=&!@<6IIXau=qEx z(SuC(aOYJ<>I6H(^FoYpI1C>yz(JQ=mU$tBk#oIO&ony(J(+# z)r=?zz;>);=-v!!1(Z?7_97URX$OJ1=NyX^$;yd^RSGP*Oc*&xo5{6k1_&DwoKI&# zNNTQhlQ#i8Cq(}&>RnxNcu;ZsAa-9P8MM|iih6Vgc5b+twuUx8U_AaUIp0}f!j`XT zX-%0##ix&&vINZE+0 zo4d++xlN?rSQZ8`tIh!&YCEg=#jj4Dn7BbnP#qEl-(@fdZRqAIR7We34dkO2Id6YFDaVjfoiweP);?{yb*i(u0qdc6RgNG{pM#V>o4anV{ zF!vRevt%rxa|;r!sk>1DkmTZv|6j?c%&1ynG1LKJh7(Iq`<*$902<#IxqTbXceptv z=dkFMU5~jd{z|Vqs*RR6@O9k0%m10Z$90Fi=RFtkX<8TeCbum!r{I&>U?hCvyVJ=j zmtIEzq&KuAEj^t$9ds6zIW{dLo#YqjRA{Wp+dz;WYp`=%69WRm@TZ9&0`GI+^hi4> z_(5`YOGBr;pcyL;3y=1}$BXV50d)vnM#9)hYo?TvX3!*P>ME>P7|C)JxfBRRQ6Rl( zB+nzIY(#yPL_Hl9Wu|2i37{ixiiNmq#7I?7Eoy8<&~X0?aiF1BR*B?}>~2+Rq$n0# zAyyT#SQ0t5D2?h18}hD#q)@`v)*ANEZ4ZR2_lHiW`40nG1}F2gSU--$Vn6C}Zv2_v z2)msaJ^J|9U=Rc2g#MBn>}OMF8|Un&-z%_!IK}d1E{Jd| zN9S1;l2Q)EcwcqY4tPIPt8|{60dn@t#O;%+bh)?2?xaQgyQ9MF38aVba2R4j%J7nv z2$lT=qU5Y>i4>Hyct>>)(CDIH$WsuZYDg)wjIyn9&2#YHbfwQ&p9nIHSQR*r7R&wd z*{6#1QtWGWL45MN8m&;a-!rTYIP^jtdZd_@u+8R5{+rVRlTt1~eI%!INJ_v{i;m8; z_{GJd8KTU)e7IzQqk0q3u~MUx6+qkjtMbj6{{eX`T!*6)sHwJRt6$3KJ||w|l$aFm z5C$74>#ylPa)YcN^7nyp6NV zZba>kinw>vKS5GmS*t&5a$E(SrsS;zr$wy8f3&8}e`F||s1{8HA}4#1G1Zm$tIvCI zEx=-jWB}1L4T#4T{&w8#ZNn2%xBjNlurRDyg|sL3{NeFect~F#q_0`wPJA)CO`GA7 zvc+}`pgpY7`Sxu_9GsJQ2b(^s3Mr*?yxs$e!+1hWPuC1@tUgBL`&6P&CTxA!-Y6Pa z0sXtIjF|-WzSLR_lj%BkaszbCkeq@o5Mci_&aMu1?9o8OdqL#-5`{LyJJk46a*O!&L8 zILnePVzSQrFG&BBG>o{k@5w*Tn@&5b46~>J(&TZlr-8UBm=oP_x45?pmq^TDoYD{D z-6&bgEfd_X1y8-6F+urv)(wb1&kLM#{}6H`8OK9@Ln{xpm;B+QLqEh&e4d%rGQNOQ z3#kn*V|21Nxj>|*QZ?V@H!zp)BBxGuQyLHD0SII6%|BM<%FXet3?*$aPQ&Xfh`YkMLeH+iSnJNFudWvjulM7`JJ z<11T^KNocr*q1T+U4sC&`F%PP-Y$?g=->!F$(zH?NGy8fbeRnkjq`9?Z*=p<=+aom zN}9-@8~h89SIisM0AcpO_qbxa-NF|;8^Q;NThDvkd7lo%N&y|Qufmz7cX>l&>889- zc46^+LDME=~T^I4qg^oYDLf} z)D6qj^8p={SeC|J5SSPQ)V=LyDWmZf)94u0*rMF2@bJ@Uwv9b;1baNQM&2=b$oE}n zC5*z-%P@`adq>bI%SbN?@Or4ij)3VWUFpx)kaW9gz9$|f-3^e16ZJ3^XOxR#4&4oo zU;;CO@02zMHNWRpg_E)))B=4WE}vFTE>awXZL2_3;n%T*>&UHl zn81(U!tigqN5cIvG^ox;`)Ja?beFYtht`KGNU5|2`)ZTOb{b3qILTzd0s;)}-Q7_s zaro$M}!FteqxolgG$giRGJHKeJ`ddM2Z7b=khUxQ*N|`~O)#~B+0yZUxt#YxJ1ssG3*K!;aH-+Bt;GaWKdT*)LOYXRp3p_DdWOblQ zvtTIhFHV+~H9k8x1f^6%>-u+!fEWXQ-QQx!UvJ0;kwhz-*vWyxOcggzB726?_ODw>t z1RqBDIigmsg2-H1V4~3VyZBXYsWtI}hmVlXm}BFDa*kL}L+E*a!ntwSTWY|qya{#K zI{m$`yNtA52JyYIH)AYcR@op9)FeCYTBVBfJ5#EGZ_LO9m77|&HRVMZx0TOo!6kKI zgb5^$bel4x@#zIRfW1K%T+r<1G&ryaAcM+pvwvaIO0aFLDHgij7mnNnPx)zmN4IQQ z!b%=kN+hJ2p1l`-ycp2M`7;suKz{T0hvT;kxwkoJG{y?$#O$Q~IJU1XW?O-iBz#`d zcaK_2%K)#{3+?xLRHEuSb1lAMF!HT6Y+L;1KAqPmyPshjwwVE&RM*N%37f{u*O zw(K~#;3dojD)}=c&?%7FCp|j-D-%Xv! zkqEhF;6Ak?J0Wm3vm(3qV|uOROoH8Hc)5TibEls6tVGRSl&bhc#Z9E{2Psy)i48kA zG+WQ&nA#!V&cxjq30$8$(uqKAUXIqR`L9_-{=MqlI=rMw7L6jOW>)ll^REtKOEsiL zE)hyJa<>Cwh$u}FTOHsHQSx&3YK{>8Tr=El>wSmVdcPOq)`Uez{b>wPzD>`DjMjtP z#-qXLG$Ya{J;bdPna6|5;}MhXBr9~cm=@$2B_|TxQIlq9ra+JnRUq-JyRpkaLQ5K@ zN1Ieb3tQNGE~f(t8#)_+Ojof3h;FWY;Z32|qH=aMNG1;KVQzD>zgrQ+$np0;c$W;Q zyXZXRSa&1jUxrMLhfGu^r>D332YsJrm3jsOpOgXz0-qf}qdq@AUpxUt)D`gKeSTn! z;oB)i*JnSzq7tCq;frt4@R>db?Hn7Sw<+?;o8Yfyb7&cS9ejfj|_&k3`&2B-eao#wkd(-%rKzq~p zvXqQ0;=%I)sKfL|Ev?)UqfU~`0%U_;?5~a_M9h$})QwlSC}K1|*!qd%ouuF8j5*KH ziXOAG#t_6z>`gTiF^f-(p~MZ^*SUFfa8?s?1AJLI=MoygSjpn(L$GgA557r6NXA}a zTjB7rTMHPfaHb&ByHZNv75+>7sZrHA804C10_|H6a zY0|Eq0{lXR9Nr6U9`~Y1RXLve_fP|Ee4Q-Eg68|Rc9#P~vfgdoiv8F6Di{p>I8VNn zg&u=;NFOadx#Q}M=3bop(^JyFb3)Zj_0K1t6)+!RJ9RxYKA}Kfji=;)njT?+N?O*R z_O?=LN;D<>T=yP`W-wf$(1@@JV7QmxFvh5zWV53xlJU1KyMA5n7wkRmC*(cuNlrTu zJ}V|TMA4{palS$qHI zzi;(eL93PSSt!2<4-ZWw$hoz;61zG=kgC2P6{U)ESz9Y%jtt!$R=H~Pg_=ssD_dpc zfW%7M-c&GaRcA)3-#!5(Hywha*`{`^6AOwpwqT=46l`NpSlNiuIn`uMQ=2uocu z7AcC#Hn-R`S~}8hvLN{x01-xd%l?zeMQ-Ox?8NLALuUwSh?zoT)8Jq8lsjK!v>RMk z6| zYW$4E?PLX{>Ez=_ecT}l+!VmSBLUm8v?L1#Fmu3A!KVQ4@W+;KF1U#VE{CZQuL5Hq zDg|EOO^EmdLR9D8se^htk@q*SBt9~PH|m|s25RyuFA07BI}5O`^cO8L?lQ&A2fp1V zUfblA=P(T%WNQVj3n|#kTv+Cw0{O)*!8Ux$+2c8`dS|+PeCn9?1x@UlLEz72)YbAe z23uyr`fOl}*1DtY#$60ISkz|PsHIKP<=LF+=n$op?C}JeC=~Dn8^~H5F-(@;8gm|) zd1D5-ewT*%pc{Or=&32cKqj{(mpyCT<~u83{n>w4=)MSJd>cLj5jduFR7qSLWC0M2 z6J6p{ z0TOrAIH1tsnTMnPw4Y)bwZe^~E2#E(nB4n>KwT;ywIJ{>u=*4k~P%zit`6VyB^B z%)<1Wn2)%mJsEl!<`#qB72D0CynhYewu|vY$eZ)D$3XXt`1?G=c#$M`8W1J>=-lKI zKU4N~d8R(XN_Q%9H6`TGLh-If+xW7m-tk2{3_30|)o5Q7dn)t?bloc=G=4v8P6|dH zI~54Bw3)G-;l^E645u9hd4=>&85_cF3)PMmt-L3$`g-DynX)xC<6D!_p1A}Xx@RD7 z@M|^MO(;Atc7)YH*>_f<`|Lzvo&REK^m~ajwUY8lKI;W582Z+dJ2k} zQi=c5Jp4hN;z^Xzc~o|w2-++&x76g1Aft)sp_hz;{&Up9hz)dciyTwI%+o;?Sms%r zIpA4CdKrWdrlDrO!B~5~xSyL&Nu(A6qcDvdwvC2ZVG^Ma_MA@KP{Cui)TFCVE8Bm> zzmt;a_d~cf!XyYs){1;7j8c~A1zw8Tojvn#L){Sx=(R&aGs`;oE}#1EEF&*gkS$ni|aopDd*?U!K&+V-r-fhuU)PR+1gLMqx$gV-(xJ)1)qE$Lm2 zA46$v+LpWYwaHg1DiVJh;&G53A{%-*LpL5It0xtWOjsk-mqXP@<61J=&TA%(+@JgQxB#{+7F;C?XlcYZs`7U&;QccZ`QLeiE;)Oph+n(-( z-{3!Ywm$GbugisZErp-S05m~Zr02BL=Q-XlTlowk#pv|gtV?bc2BA|$53_)tCH-8nd;7{=d!5j!_Qf@lw=~AIu}Tk$!qiNWE$J7Ei`w;$ zWt?CnG~iP(4no3c(X}!5{{a*yfSGwk{-Pfi9b%$BlR6>s7b`8wMHWVz8zue3~yid!R; z<2xp zGk%Q)=Vlfa^?Djt*X#P@8@J*sTla~W#c=d_Cnn;rFV#dN_1?(?(<^v~JTE(O6*E=4 z)w^dEKbb`Q_35$*DrW{tGkFEVRy8(f;UoK_Dt;rDk3kj7J@fzXX0Ta{QgPykjRF7e zQ21fK@#9<@49lLywFY97 zdIMwHiWLRkjkb9NUrM_%5Nx5f)v+)s(|-bPC<_-$eY96ZW~KVT(sEqUEUSsZa$X;+Ok4;r!B_X!ZSo0L17 z8_qi1JRBY$KOT2+$1ewY6+ zV9>7;6E)p}a?HmTjl^WDOCQOKy4REwR}(g|A}S8e{Dj!0hIT?VD^PE|jylUP5- zM$BzO3)iY>zLigy2*mHg^N_Aa`L~?(j{vRV;TwZv4ukdZ=cP(ka7#4 z*M^QsGl}F{;jq$7I21kxV-AJhVmC$-DK+4OKQT%R4OP1$pNJfhTJ(q{0h%@A^!Ml} zsWBcy)r8mWIeNfj49TwW=aTSV?^_%2V{^*7lP~Gv<6oX88uHbCbG2|Yb;s0(j{zC^JY!I z#41U#=EcD&M2($5Nm=Dcm?)O~K3*=L!S2;#4EOrdRdS#{cWTw>Zsgj zr7B*YE?#>a5j!J)oa6x%WO8TV)1=_b*Mdc&@~RqGzX|a$-mlM{rp{PlH=`0*;)IgY zh@rC-y?^n7^jOZNZhX-3^5-71*5*BrShJ6a=U@YrKlhyCHJ4H(wq+S7nU+8LmuW&1 zMqZyl7z_gQ%L4ktZ$1P+ofGOE=}ocsb#4zPu`rXSICM@6c~rjD)`d&R{ps(VprwC- zsnvTXTpxX<9v`PGvoGfr+eAqFvFn_U)1QIt!J^-*fROeR+C^N@%!k@@?9zuW0C9X9 ziQ)6qx9ESPi_Ao~gS2MkS zh$JnIboLhKVm>q+rpHpymk}~d z2$gqa2TM)HoST9c(p9ka?ZCcwcm+4Cjah$W?R)JmM4jt9Kl4UGUls)OPdR8y)~Mxc zQV1|_bpQ|6?m9NPTG5}qAmOhe4Ew>GHX_oFuvw#QH54?>@i}w+F3D#ERVr$R;Rwtt z68+z?p{rVuA1Wx+=l!sutH0G$R7zNTJL7=eZ#`SEo=@6dFs^RY;G;6 z`i>Ac`(OH>&;S>>$ls%ESs>HfBjVAwGJ>%!1F7qGLROG6E0?0EMkm3kN`SV~m-HD^ zt00f+uNKS)>|4-0>E_xe;pyS_@By_{O1&E~f<|oC)HLm8$(#nUnk<1GJ_n!4R5!RY z>{+)H9!X67hF!pSooT@C$*bF!Ph;T40e^FP;HlKC6%+`NqE|2?oSCN<=;1Ja^JRQ9 zY7G0c)C39^?3e4!teBa702GTQ5iW@kJRc@J^B|x=|KeuP;Ib;k90iZl!QG?@r9gZy zJjf~~IxYguFaErH_K8AG%{xJs$Pxu78Q3wCc3gUQv3ni_=pt*~Ffq|UGH`J0yY#Ei zrFg;cV4`+6%(nT1B_J$E#wf?#a0#RE98O@#NsFP8=rWdK^)rLrhaAf*x7X|J{>Wg? zJ+k5g@5l!ODK8NEqgTKS7?huKQY&yu!rpTBt%_VLn+(w^JoO|fa!Hg3bJAx{e=)yA zNsea5UaJuLX#eM@LLWAy?X~_*R&-vE@U2Sl-ViqDZr{(M$~db6OD)2@GUB7S&qh9a zKN#lymyK7tl|O;09szBKBNhQ#rhp=7-FbFFQf=Dn+UPtMV$if|G;2HkG#HzpIPAX% zYby=#OqN^_7yH25r;eiTkoc>mKEh(jaj|Q&qBAud--;g#Qo8t52~-S+>q*%SL57tL z(UiF~E7Bk~YpnWyBNclG2!5WHiI6!wu7w;&m$jWj{Qm$GLF~TzK#lPu4Wi4O?NEE3 zAyFv^32poal;JCaOz=+C!Z%$fh>5}TY>DwhxyY1A(eKcFBRp9qG^%nXpfc46&$l44 z+9gN{&XnjIE`ctQ4|VK1?K>a(1ZPW>z%Wokzv+1WrO+o?aJvZ})*_jq?P&aS+p%^C z3xhLp!)3a-ycv@c9l_j~=dmuQ`;xPbI8%nn9}o2pm(k*EiQp>TM~mHX&a{d$Sk_4j z>S@Y^1b>~+C4*G`GzLR?bWdCs_d;*@pO6v+ZH&%4UH~JVI};LLCnZFd#CiFqSEK}& ze0oJns3Uy6<#17dhNy1?^E4*s+To#dVuE7g)Pj{~L6O;T=lkP$@RKYa{)7VG&xWx2 z)Q_=48biz7@G^l$=iE0^1>;~jw0umOT4`DTh8)v(o!I*@Mca+y`13Jryre+)p&v`n zB3PmM^>-84{2+y$kA`vl62Z4XPPfyOPD znWJ$^w$MG7BO{V~229*`Vex4MTOSN!_u~=5Fjn7*W8rBCbC3L(edrUIdEgP`2WLzS z-qeZgi(CmO2|`RBQXAXoIA(f=nCLjB;amm|lM_r#ydouD6B0BISx={n?1!*-j!U_0 zItIuP+tr zv9LcA9C@_P4X`-3HPZzD$KOVPNr|W5fNJ*JLi-^9%5@Z8FF^5i7F}ko1M*c0Do}Kz zL=Y1!cFoxmOiok*jt~+`dkL9Gh^7C&*0Af zI_}(D!}@F*vm^Y1--Dr`4GFIaNnamQehUT(c1;gjtBX;3{W9_{k{u>r!0UA2!JXUq z$q&AdfB%pFAP9+n|L1?i?|=6j{P6o<;+^MD@chwzydZ3^EMg=c5#@kXovot&e8^^^ z;{~vi8N&YJG)~s$aIl=k+GG-2vx7KV%iz5SJNW9oGdwz4!0y5zW{3S443K>=O3?2% zVkqQ9%wLSwtx;Hrxkwc zA0wT2TWysPMlZ{w>nqBmHY*Y@GFuud(NtFkSx+l;N(s7K8mLW6P@aDsHKoO9uWx{) ztpoCIDWu&!koWdNr`N#7WDNCFdMbta%}Gow4LyO77ObsxC3hRDjUdOEktc?5$bA6&{SVdZB;L_ zPkLI~An)jc(`ZK2mmC^ zklV=y*~*}C(mKutXzUFzxjWzr$dO1{F+LW+bS8$yYzpf$qga|qVPQOpy`^c~T$#lp z-E&d51+w-A^fXsP(n>yshMt{fIr_9+1oCGMU9ix+S=|YfstbBqr_dK+f%Mjj3iLEI z2vS1Y-b8I#gN~LmNV+PZQIU_~>_RN8gu~JTwT#-P{wj@)%hZPCW7d{K*46@xS_7ZO zj-bPZnAeAaU z?>nd{xPY1x^23=-X{v^_tsY%1bu=bx1#+YW-P5i0sI99&QwuGl^ODNjq1I5l>&gGL zD}_$N%y<;*i)oQ95hwfXa~VYT#>`|2GjzUl(?c}I7Q{>QwWSPF{T>+T+EmgO$Z4OF z);c`1e1+AO84#{N~r6G}oSm%V&aF+{ zzq^Y^5B70#v?fT2)zu7^xOCUbD9xv_zE00m#@d)5A2=I=%QVeoqar(kks~B>SrUtL zNm`bo`2ozHlM)jdT8GBpy?gt3`OZDO^WH-|etL%6cW>g>y*-@V-NM1?Dwa1g7|8@N znh6O~VubGX)UX$^gcH7?S?EH<`+dkxjnK6xsm&7@8Xcf@`Y9fd!s)R>rIkU-A0|pW zpj7n|WRS^wXjwOU$hNh2wxF@Oo?`z>)YQ?KX0o}v13l7iw2}R5=5o$t@7rnoN_)GY zQj@=KpnJn+gw0`s&Y%<}pt`#0*`Qa7ObRc-VK+fV&kCuu9lgEn&}yVGo0ZUV*(kC< z8XEIfry60pmhAixwhk6Cw>p9pXG*wed>X5u)R)6xrFhRxag)6nCQBn7uMRzu5>!>a zjl#me!_{m58rSo_iIOt%?b^s*D#?afRPY8Zh$TI6`VE4VP@7w!G?Gm=))UA+1uG7%N%79+23Oy|RXVk(O_F;Ts z3KL5+NY71*a!%d!ATFt^!llAIeEaGpK~DVL+i&4--}(;WEqvpxw*{ea;mTD(I$Wh- z@LE9up%7PS{xStS7q4Bzg{xNu;qaYHmkF2fw)lM|mwiF__Qgx$KPESLJ@G%GoP`cG zYB+)cgi}d)q9GWaHuPu|XeH;NiJS-}ox7QWKm!GsYNG~Hr4;SmZD?q&Lv2GfIUE$2 zQvg>-^R@qf_Wr9)lIzM6ME}6OJzd??MS=iQhSnZhc!Ybn)>><=BEmy!t#w3dtuujy zB1lMr00lsTpe|Mwt84nsJlvkXGrwca-p3;nsIKn&R&V*RKQk9*cJ$fjEL(fEw+K*z z0fwd){;idq%waWnQ~g^z1tdIh~_Zpf#KR~nl6}0+Z6<`D#gA?79w?3*jX0|Xe!J)1g9Ac1&0V~!X zi3rAn0*NhdUmQ}487{4G&C){r#N2ZXO7tOrsK>}PJBn8rV9*Qgg2JH{gU2Oy1ApdF zL3}>I--*q1FD7mUFmlz6{DDOP68si_aIs%7Ciu;N1}M^0pE>&d)Wk+Q18nO``ah?a zMYFqL8RJl4^;F*swloM}!ah!Ij*e{Z=~khQz#*MD91(|iVoeEVNw_)G(|99%GcAa( zbYpN|C0G)ZSLoTBGDPOv1WST-A1nplguej&2`CYpZ%1OO6PdLh6n117WsQkzdQ4o> z2#_MX-XlN@)}!!GG>TA73`DT51Y2^sTin+^R0T`ET(BeJzS+9sv-R+I@}CFNv*dzAei`3)Pn! zv-iW8z7wFja3Q4`bMSo39_o!FzO%w+h&MuZSc1eEqXI-2M479{y?rkH6l+vu}0;81dHc4@%4k zwm%-8gll5)YW~c>?cw7Oeo1g_Gjpxxdm0(3o-SlJeQ5+l3^VolX1Xn(p z!mTeBaO0=*xccdo08|*1U@&6gK}0YmCU1HK;E~&-ezeJA*9rkh8jL{+1|--xR1*Ue3`l5c3{^4HA$sw}yufqB>DYHV=7|u0^qI##8He?w z@s^Fl8&(eo>q8Om`yw z;}fRDv;PFs@++u1e-YITNR(9zmIS}C-%!~ofQj0QdQ{SP3`~@rWiX;be6Bc0^YiOx z(b8BCqfUv%nK9hFyocLY_i^j;E^Zuc;@;IgJid8|C$|o9>u?Qg9I~Vk6#xW-5kpZ1 zB)k}ixRCOiVeapOq~aW^&z+(4TofUM26K75`Q!<{`uWfCkAL@f_@}@BdvW~w%U|N- z4}OF<9^J>oJ2&y*<~1x%jU(>&h)r&04MfNnDMbAA%oNrpia1!D!qtrhp%JmaG=`n| zA#BYSaR1T@e)#AJPj77C+RijqC({^=+Thl8BVeYn)vgm^rDAR~(g6pi29r2gqc*#} zg5%8<`kX_A{1CmY7p=9`IQPB3MeT+2Xyve%67qW*C8#a0L}N95Zs`!9L~VHuYRGCU zsI03R1Q5Z11eZOVU`ep{#Dxl~mrDAb{>$g*%Y>#x5BW;!?jC5QQmDxvQgwBRa5cvM zKDZ4u*E1Lq@KSnx$c2MK3_IfS!fCNXr`AK>r$BdS585PcXsm5SRaun)rI^LhT+f2o z%|e{pq|w8!H^HLTK}DbY=^8eRS_`km2D{DxlTr;$uN;c5UIALLzD5=Kk&WcTwNzK5 zjr_T;hI+x2F!s~@V=@Rm2o|+=>NPNu52@gH1)dFU=3fQ?m ziTiJD;G>^k$45WAh97=k}d@uTH+I872v z4qLImmB77Q!?<<5fJ=ultSpm%mnT2YdJcNqd0JP{JmYVGBhm(EybF#*H|z;ICdpEr zureqSZ9Xvx8O{IkX8KPHjNwM;0u9jl8e#Caz!acyHcY-vLW4}fh0)O{W+$_l;kW$@ zag63-7|SQHFg_$~I1@#}?|{cl{wIerijXgp<~Plqi1=v?4``8%Tj)sjW$%Z>*b9@Y z3tHCd=w{7_cENVgQCX)dDYd&ENj+H|+UqK*&0auP9gUgI zm9X_RBChYogja+4pdQN+1D3*iEYWc}Va06JjG|wMFs0ohZ-uG9lb+i{btV;T35|m4 zPu&fxQHEsHDZq#2`C-A9U|?cpVN{$mi(+^nB0!07fYvqEURX_Cu$em%_S4)G(jnmL zhuuKsBWn_j5J}amXsM-nL{bHHZ=2ARP)ggVok*xpG@^^Fr-QXm=zB_!Rx5|yL47ae zLOem^LN+9xIZ=#K9mX&>o+8U&AmyVvu_EX(A`x+7bSQzzv8)K+bhx*K%SSYpFO3WK zhf&ij02l>_XzFaHe%pj@TJLp|wbAoC_%pLJdRn0B?}o#oh1+R>%c(~);m7cB7P)*J zGqa<3{`N!s_V+)>fBirI2_Js&1RHCk)V>lJ%DE{2qM3bo7W2PAl~L*3KxlwnwnBQN-e68q-q|j0|}x|89&8(f`JR zG=Ib}I~KyiB>6n+MeK4Yq`4fGNgQK?L29>d>brKtLN=s$4$H?-V5Ublj-g^6qvJ)4 zjgMe+o0$@i@c9=X<4=G0HU9YLU(xX^0ZRPiKmCS|zs6t5{{A1n#Alzqh39YH!lQ?m z@#w)NJb82#w{Gm>=wKN;+cVhQn84QNB-sSEg^go-qr{R}X7TNrv=FuCZb$q@{V6fiK9Lt!Wjf5 z8UtHfC1{|ry_Ul_SCb!6RgOwJ*3?zgx}MrfSG%ybj#jZx&_>ot<0juj+S>`4yax(p zA9Q*egAFRk6;jA(99AfMq17p1r1?RsRY0Yp`GicVp!tBtP_?=jI-Q)Z??AVd+Gt-3 z6q+s=ZRA779T*si(OeNgJZpv1-vg7AL5X?+O8BGXV}_(~dFlV=X7tHvj%<1r)wSOj zp_{6x4>mNGp|`IMW~&BK>Q|{8jW_u)+(9#p4mk`C8owEoa5lrltcyT5ToIZFWBvbX zkLabnw3k-0m!QN;dujj1rZ-!l6K00aViKk_>Y*?)TS8BhR1jl}(^%SF$NJF@hG?Ph zjs?)8=|^pQGcMLw<4jcoWASoX(#7Gf@X3~TUpSW9Sw3g8YPW1sn-Zb zM3baRfDsZ2IV`j|tF5IxP#Vi9J>`_Hy81c+L@;-Sm1b7N#D~VW1>tfB4iVXYhqC1 z1t4+u1t`I>)P->wiE`n$g-^m;oo>$g&WP|M9Ae2-q(w0qg9prJD4jP7P(qfd62OE! zS&jY_0}hEz8tDhFnua40QiurPZjv?@n*T|srEBvS~ML|~ZZK}O3bwgFv2xU$JtiI zHsmNA88LFrLFPOOvE&q>!)b`77_~t*W<)USfi(?=ueeH}#5G!UQCo;p{W2I)6949~ zQj`v=cNV_R?3Fgt^Yp(QwU;!99TMX0EZol8Bkcl^&<(MudW~R9a409sXalTlV~z08 zfBf@Z;wTst3`)?^KTBJeY)Kx(B2+4WxJHv2Gqpu+T34&S6faj##167j`$0ZN=|N5tqF){|fppak8A zbtJ5XN&!eXi**8&u;i;@&YdzPn&4spX|fCMi7o`^WynxFpSTgg>Ki$1yfr|_JVvhj z5T`!ES|Tjy&e{?Q>MsmlFhhlzDq}ain7tpt`tvN--bi8bQB;KYVPGP*M&rgp54^lt zJ<$r=h(zcL=<~dROl_I^GjC8ExldEt7?jYb%V5lu!ICS7jq)Iv9)sTjB?eAe5>+Rl z1m)`mC~=XlWu`MFtED5e(QO74H0EuKJjfv#~lqiY&mrNSEAm)S@7B1;UFiVF+ zHZkDK$I|&JFv0DK#ySQb=$t``)6XS9qGSwSFess75SH%8Y(5!{$=nvLBi{ujN}3W3 zO7PqGtZ`6N#+%^P^tl8|G*(Mce*#P}W8&0mE9%4scG=nUXrsB@Y*3Xzi7R`!f8z)b zZXV;|%_F?^@EYEGas!WV?BVj}EEYym7)|+62-$^x1OpPqxDVNY0|B!Ns!j=N&%cK1 z^XJf1T??zhh^es&y!qrQe)+}E@RvXS34i?ygA#wnmp}UgKYs5WJb7>zcduW;_2Yev z7BX;=?_pN5=qioLE*l2PrflJo|ho%QkO)mmg4PtH+QUN;_#`3sxX&Z0eyN0(O+`|6aB8sUv zY#J518tYN^>MH`2kdW^sK#7JXRGhmYzy;QnVDaj@N-o1{D$g1L{xp)E0ux*hbrn?3 z<<+P>UxBI%6?9&OYO1GNvevo=NL$;W=<0^DyIbf>aHynis*C=PHW=i6FE;)eEQx#F zNcg;ndj0S@+%W0QkoESXMbZjMJ^55M4XCN0dgoA4RdtZmlE2o_3~j#}Ub`D1mls}( z9ooKr0ZcFe5v2PR;wdBpVR3HL8evpuppz-k&iZ83HX6#x(MmojhjL=^YkuS1P5v&Y z$w$7gQ?G@I^(K`4uxeF8+`5l^L=MfQ?CpeJ)h9x|IBnz`J4|p{_2}&+|FNc$%CC&d z?gEw1d9+aZ_I7rotGxp~-Calx8_Qr}Viuc=tH{I>u;}%IA;F=WlzrVWYnAZWX?_p-kcVh@i21~33R$~zf7|2;MGr_U>sf~uUf(>9$wL;ZPKB%;X z+6!;MQ~u?Ye?=>F+BVp1-H64tn4I!rmFjF~FN?*cAO;EsSS`)y>nW!;{W|(O>tWW& zsqH$D4t)zs3?`EZyPPnq6_8V3>1wK{_DLooYi>YWeHA2C7tvfn{$S-9^wyk%sl5hK zbq5A*a!mVmmPn+tNjc_)>P22rYu!NDY^XNIx3IF7Z| zDeSCIV|#TB>k9*z9!X#zlZOn=S*-*xb(E%SOM?;vIjALm&OKBR$ z$`Xq>hcPhdrS@+}C`#i@%!uL9Am$gd*w`8s;g5EACj~IEyp*NuV^rorj1STMisXBY zgfKfAp*|eP+8i^0a#);7)9)eVlP>DFW&}OV%rR1Xb)t}qAWL~jrNhVJidz$K6)2l{^~QbpWy3neu_UcF!7IH3(bsw{@;El>{q}37$1D_6wjVq$D@Z= z@bvLD+_}Av%g1Zj-<`+K*0iwg&8ZS7u`!OV^)aCz!N3GFC1$BlO;ehu#$#l0$`^wa z)W+tSIZ?#g@(5O!Mg&u0d@PL#*4f#Z#nI6Qu3bOG&0EK~dFL3HukT?0cm-=)Q<$2| zBR>>Cevsztp&)VvKN4v-ynZ7rRu$ANXzsBhlTBcFWB?e1QLh&~0)l@>YN0R#LIBbgQsAC1!jlpsIc*M>lhe7Naf_OTFAhmC^Qw_DL2Rd69^o};@>Aofptr7gRW)Jtm z6P5pq{h^ok(q7uP_7aqMX)o>H*kmd-`jkraDir9F^`Tu#3#on?`e;F>wiv*|*Q4`O zSlQpi-t}V<$|*ZG2rCOp(_*`e7Avi^aBHGPP9075HO;h$Z*E2-GYx2A+TPP61gSfE zdxZ`}D}82bqw`LBUbmuOSPvij<>I?G`d!k|fqF_`bweX6YHLx(Kt^>H&XKi9X;O9A z;f~PaGnIrV9){WHLcdXmmfmhuk@HZ?A(`5m>G`xcCZ|Dd&_GUU?IOp3or-31P#KhH z<<~jyW=-$kNU{*vGJ&%D11|cdcD#ZDz)zI%Xl%|?mI@Z;SYg^mN(V+C3EoQhp zF8BjpTC7;eQBorK_$H{4I3FdRQh};O3a`%Q6v;NrY!&M#QF8gfco6 zeRjbhb2(vYawT$=Rz&?L$oksq3cWulwdn$Nt}WbFG4q+Zn}R5l;{ax z5TTn`xY;??B|r%uKXbAJmeCf$jL;7?LOW1T#|H740Sn(kAEN7O!H~%8)533EB|-)X z7RM~7wH2nZ7I9=zY!27N42clss{}+Ckzh8&wgGVt?Xzzczyw?7z$%y$3`nrN`8hi#HYzGX<9S}&E$sfiFKffG9^ zBM#lfzyyaQ(d8Rp9-+lD>op8D!!%5J8|x6~s%-rWP(lC_Ct!pC8^~VhOMC~AIQ^a3 z5~rX9i&R@i+l5v|DJ)ct04RDnTve)4yfuHSDWPPLhK}07Mk=Rn!CVQhus#EernA0B zCwz-krwbi$&#?e`Gu4BH>Zh67RV)3*j2E)`4#YP4kvq_1=&}_f*IXFA<`H1S?7avk zZU%&4b#C7x-s)$DM4sx1&xbBK#BU;e)1FDNA~<|ha7iHm2|v|2pR@2aYfdnWB1&zA zLpVh@R0y)}$XqvU6Rj`|H&C0d7N#Aj76655l*;_X7@Tm=w82k(#yiX6&}|}olXtom z!MP3uXPJS}3eQv%0<$ehuJ#CEVrWk#G$kTb24VW$JKhLOp#p}?1!x5*!NS$u$T2Xp zMdh$5qiZ;XQ;8+PIuoop5u-9=v1|_07z?1MEZX-U+= zDy*J<5Eh*tPR0ziElv(W=MPsNR${7d}K3ct6-$DNT1+PSd{{N z2~k_j(-<~-WX04~7pAE#&E4{2>0Stn_kvhttprNv+#N3#?)tHKKZs?@3;#BMCxE%z z0ZiZUVf>0q*u*t2W~dF$vrzTJ1h$_SaOJ~E-1&SFkG|T#<6mv!@vpb=^y_WB@!MTI z|NTDR`Xh&EI%PzB3rf5zjwL|iIfD^jZ{Yqf7IE{ZGr0E2I4*xUjH4e7V(WPliwu_B zaA4%vR01NlOCUgEU540dp8y9~v%|;X$Jl1NUI>;4Xnagjy^UP)VDV9s>TML)elm}{ zzgQz%#l0`r@bK50c>2vY-u(R@9)G=wJ3n8-;g3hL@jQo>r%B9Fd5vGEzIAA#d#Mmz z=@U93ero%{xh{kkdJy9IgFbsETj3m)2;C6VKppf{586zX2+_r+rm;hvs(>m{4kfc5 z$ogXpOt7ZJMf9E+>*jEnI-wWAOb2E{&=|zwn*K+|;{5!d(~wQ9AHl{zgkVN6(8_u_ zbQB;4eb1qwILx3tei0gKKP>#sVXopo`dh?5{Tp~6{|BKdQOTj3&R3xNVil?{ltKtK zRZAeLZGoh&1&uWlG*mYUW00c0ssXhXG;f!cql@N!t4WR7i6LA)+`@yKM|gDm7>{lp z;OX5XJmC$N?OCi%BVkqW9K4=qciLq1w#h4EXw;5JN5Bgf_(O7l?ja60XY-vNl z?Zy1`EbiaFi=TY-G5+okf5dBtn0Ru16K~$$!(HB( znaUyMGa+D6!mXDf?lvMDc8c&#Ycs=mcIPradG{&4_~0EpxORlaiDCFGMga;mlwU;M z#q+2uyNK5M1~k{!i%?e;=gUNhBnBne7~H8TX8@>y%A3Bcp)wZw6690SZ`EbYP$?Io zvdYQ0j_S&5(ALllXg$AYcqaw|SnqCsm+#^p|!CI zJ>>s(w6%&ia=WGNu(}Kw7*CQvoyFv84&$pyOmC&Jd36}qAI;;<_i0RecMEqOFJf^$ zj>3oysk{mKAt%PCqS)S@#I4&qc=+%V9zD8>yLT_+`n3Zb?{8sYW)k^y5?=C)Oi#9nj!z;H4#UF2+d4H|RwLYGd~{N~bWuM2P8<9#2OS*b@C z=CM>S?4AZ#y^XN?$&U=T3qZo1=!H8)en6Tm(+5{Z3VX5xwsSa5+&U%s7e?|s0(RuNZ)d}p9Zh3v zX#{&~quAdV!TMqvbCW@g3|TQd?Zf_F0jtY#jEz$MeKP1ZO^{Rm`g_RVraUtkqm)Tt z(9^u{l_QfgQ~h|bv=+wtb_`p4ajb1dFg@!=BB6xE+=8x-i{cuqUQYF5LEP`9_7xBU zb~c@dJT3uqIQOqgZx>&OSxb<;S}OYK($k5wmFJw}aOFn#)aTgh6WQ+2^*Q;ALf(V@5i zC+4OKV0{T;b8G{co6cZzEP|-uVSvheAnQW0;1g__Cq7e~JmJvjJg)`6z;3iwLX6dE_uryoH+yAdd0T3`T}i7^L$Y-Djwn#?Iafe)aX|_{-n_248>u87>{K zA`!Duy16acF_>{;i1VKFVCd8eUW^vWhnY%HyN{qya3h_uBc8MfKq5?*U@&9Qi^=H( zmX-&wy*)wqp2xMzOVpQVu(evG_DK0+*3U>3OOt6~Q$rC9XQ`ay4n)0rs#67xg>tG_ z8keZO`@Q5V#Jxx+14yQV$TDkUFh%1>8uQE3xOwLa-h2NI{QMUm;}^gD7+-$%DSl1) z`sTM^;17TJIsW?BZ}4CK%OCLdZ+?OgKY9btp5CBw<_exZxsLnyj&bwG4lW%nV}ExJ zdpon(-JZeD_7okbu)i~f!@X%bmclqOFfln6#RP|$BAXm50TT*>3Q%HsaTs$m z0~i{NA(snbn96^G^_}L&u(m#jo&8m8?kr+uV;VCHMT}Az3=Btv4Gyyqc?ik07r~GX zc85-|ZcJt^oGu$eAwQzAF#JIu!qG65MMmgDuuep0XNLeKE^tWb*I&mgue^fSUi$&g zo_!tX&Yi(Un(u3Bs|66jYzawA$r_vL(9lTZyrdpo-EGil`)Q4Dq&DP$%ViZ|oJKUqkJ$5v?svQ1ti0V$s7)|JT!a+9&T2V()656eg-y zr&kAGn1Kn(kH3fJjuyd`aQfR3j8p#(_rdO>eyplRM;DD1lCzZ73utbsKwEnqdU{#~ zTf<`2BN*|(LH>-!pnzQ64Vk(f8cPRsjyAG?2}*chf)X$7rTtIsB`ERIUfRF0)k~UD z*Cau0V>QUKHhvu#h^w1)V*%GYHP@EYTpv2*=D}pgGFf{^O&L%pwtye*XawGP49-Xp2Dcr3dNmrm+Ht<75*NskFR!UW zt)u}h;Td0SF-`-~N>6va3yWS)Ki3S*k z8U;gw#dmEJ?eNS=MTj5GF4k@zksQ34{Ue5gE5t>+Yw_*bCBS-NK>bOnBEpLGuyuxS^7gl(Kz94&(3 zzzhinCQd;KVGK5;dGn509Q7qY;slgXoH8Z&?O_Hc=z9h@924CF{9s^$!J^ario6!7 zT-k=2s9d=2n}l8mhiyu|U>?Y+Epb_Qif~Q-B?c!LfS|ftXcK^hXTFVo{}z-8ul6Ca zr4qu^99oG(F>#2d;$>QNGFY^4L28>dA`D`qJhi0<3oY}J^&*%d!HkITDz)7u1$^@| z0dRR{OXgPBv}ANeg>D6dIT*p^}RP=%pgIr5uQ0ZOo@gogo%p(@x0DiE1%MQ**1ewQP) z+zsz|gJ4Rqo`iLvn*LJ)By7}Y9Slem8IWj!bGQYrQK~a4j|7$32$k{l?GP3oCb04} zgVkqQ%s+@@`c7CdBSx>Wz_ABgZxw__!i~@7aQxx8&`@ANfySh&9kP=eYNjU(E0Ikc&Z(5ElLlq~~?aALu0 z)|7Az)QGT6-+~e)K*CDbnX}a;P$F3leX4@atEe2>kfP@>TVnc}8}qjVShy3!!rdU| zZuu~MgVK1_j!{bE=p`#=ZhEmodEk&tOZTIgyAu*1#1!Ry;a&_IZ{)H6?l3O1Q1wSM zxb@RTJp6J4&%WNl^WPodt=}J(!ZQ7lj|T#jc;mOse&Ene+ky%4)*trqHreyv@8XSb zw(#`VCt$>9)424(Fx@|o?dNHs8L{>>iut=fOkA^J=unT`4ucVL#7}^T@L~^w^E9T< zP+Oz+%Ny#x*&ZQY9a&Z&PGeZ%z=r8tVQfAh#AQk|gAtD?z0ZEPk0-y`!Q2J63kkZ4T#HEkMvG?Af5bb7N2?m*p#}=fw)B=71`;wgrn)w>Pz*Q__l_)(&(uHB)`D9tG<%RG@*ZjXulTS|KIhvy1(v z#wN6r58Bm6K4)h)db@fcm-a!~D;K7sGG`!yP0N}S8Xc@U1_`v#%awv5!N7!_zKeSN z$j6d`DG{){1Q?;0tAwegGW7HPTUv!6H;0&F!QrIeM`h$j$YB$J1c!2Bri90AK$6)5 zWHFyx0240qcZ1|-=2KD3P7I@viNo)*y#OU79P*=<#lmaQ(b7zL=|ngAo88@Q=#jR; z?$%*=Dus!q45rsJm|Ra_b~}lU%Y(RbZw61^+Q6*`^VmHe!qBJ#p(y!*Aq65a1F|_9 zOXmwX*k8nzOB=XxZ6CL99^>w}w&tGIe_ z8EXqmDCTnT*exgQ2oFMD2fTI@ELtUuX9VNW1ExRdpidH&c4TSenk`U}FNej+bzag@boSu)Chc z+F}HA({8M;gmCFn0Xw^CEG~zr-1Ts~x}Z_kLD5U&SZ_W0$&`vldX5x{tO4V*KFqI% zu)G<>>UI$8yFsk&gs`~k!|1pbp|Fh7QwN=f(rS=V`5F=PyOE1UFq+R|VSE%519@a4 zAtI>+oBLB4VEL4pZuyi)SujoKX-3?EF z8?3z&=(^~6R5u10&G(vKY7Yun^h)T}GALzTl!rFzXU$N_$=BEQBIq?C9jCD{M}Eg} z60;mqXLik)|ZP|Ss29f z+#puwhOj(K|D7seBp;16lyU|nXwBEzLPldz zM=QF?I@+7j+S-WT-gfA8)b>0kWHX%pqOh@%G?ED~{C*47dlEBNj2e}TXJ{nz;X z^Y^j2F$IrH4WCQ|rOgAbnJ>C@|Y`0xszJh_JZ_m6Sw z<_<1jTE*f10uJ`(OW?%r3>{~1xHpSShx24}qAjc~4+^%#42x2aQ(GB}kkg*_9-o)$AO^4B3xmmkHX8rSS)cOt*YSf_ zUcvXj|2@H$xJdJ3S@}f~!l|~t1`SPhXq42SSP76|lQh>uChw*-KGkc~k4!p-NW>4H zj|Hx6LaTy9JJr-w;FVYY7C-pG_vl%#qOzhKjSY2ZZ)<^Gr$H#_6(ZR#w^gt_6g;L< zo$9GBP1b&R0y+euv=;VDVRN^_WN(C%#?fGm#*k1SY))$DiW+owSD?M45*?j<-TpADlab+7<~q`}@$#Z$|lDC`=Axd2a*9cdlV^XH76A zG_qU>67Jz0GOfDx)pniBlA)4qS@I|BWMkBN!3Bg7SL6h4B zJvj_on-vkWi=c>^YVW5FQi4q|3{}+^??}Two@#sZp@^wOBnL{|SF#y4#n^gS9 zEr)p-mWcE*c*1YHM>wR^iUKUAY@1>xL`Ml+S)heJgAyYQNSuNav?${HPL}e;X_a=0R9OE3Vyx(=q{77^CQLS|)Q zR|Y@md5RSMKXeAt@R<``iSs2p3E%WD0f~~xs{kZe(E7W81f4S=!6r{oc^5c@5ao5U z8;%Le%LKpSPmY}cB^uD5E&&V-MldjOdd?sO0}}rllqmg&-$-Uaga6Cnpj^|^7i@`B zKtex23x3Kc*A0jBF%HvWyhvrh-%ZhCbX9@ep&9ujT4WtE6GegOCWi)Nk?TJCEJt!z zPUo!W(IJ2dW>2_Ti-AKQ@g^&W`NNaS`pD=mQzT(8p% zXi4cv<->K&Hqi+?*XtN9d?~H0RlZ=`n9 z1j`uNDCfU{?$r$ER4eS`&9IM2;2f90H`9*jk`(ckUPPCBz~P%b6Ag5fAT-yC*kVVC zCBb2;7O1SITVUt#P`PsGGZ*0=YoPDDkX@G}!*9VacG9^N!~04BN))L4SO7abOV1pt z1Pf%dg=bp?AThkB7Do;ZftIj!%gkgJ<MAlEQ{4=v}mKx3lC|*O2;KK{{7(n5nTUl7T13=gUcUHVE>0h*m#~5 zEQyJmZWNErC?3(Go!Y?Ap$P-~M&x&O7&xHMN345bMS4poHqaTEFb*`pKz&s4SD^Fr-;mqM6FO7lmy-#xFYrOJe4R z7ZX=q7`@=3kxMQNAGY@aAt>|AE6Y9pjxpUV;#;CSy?I`S17e>^GZu@Z}0_e=(1HzgWVfuh!@q z1}C=Z9_w74RZyH=v~6*BcXw^vU4s({5Zv9}9U7M)!QF#<2=1Q7-Q7Jn-2TtGbsugO zuU!S*T_1bxHOH9kpLa6rZ)4mELBeqxZ55s5at+Sx6dA-#Z6cCGL zR!oDkK#n!aRpKxxGNQ)}Qp^$#4wXF<$Db1`A<<`$)xu-j+j4vD4?{>~@4oPV8M~a` zPp~#W?q~(c_NK&0w#N_&T&^a*t-l{Mg3`f&3QdBT`OKNgd1r3<>)=Tsn|fjcZWi{T zLP5A+kqiW;zj;$Ucfa&qG@S;d#qMq_N8RVVO8+urWgfpjcJ_~9ZWH?INT(WZ*_)?9 zGc0Ii+C7&zu_ciAJOp-&&4e>E3bgWW2Npn`5<(vitp7k1<)r8{$tFkwfdW{#d-&-I z^i9Np!(@$5iHZf`uQOW+WnfO2_LQkg-RL`g_5EQWVyd-`wUnKi&}x>Tq0XNYXx8{C z>*~6&&N^b1Kaf%^bX}ZbeoK!oSF3Eb~9<36an@}>^<=%H&HmxR>{z!amMk9%vKIBI4=Rcob#oh^n-Y2$p*n{4n zML+M&{I56Ho{rzWuFrQ!Nv<3z@X;mek|YlX8 z?qP`eyi$UPlm4Ak0$!`z<(#R#lPL%P>tW@$rxj)WErUTFy5RN^`A0P~ip!ySW2n30 z@6}*+k(~*OlUQd0yVyIWsQ(AT(x}yh?3?6V2yC|9bUwD}2I{wk|0w;RJXF%&C4#q! zM7lF-8&MtOzAviOS+)uX2D3L5Mo}va<_jcDzdG^KEEe3WC0G{{O9}~jY49r zMy~|@Fw-RciWIE1=hNLX%3ZmaQk&@&f~Bc-mwQa}e>EzQ=n)Zt*7|lrz&j2bY`D(P|8U4e^+x(iF_os^FcX+en!IAbnS*i?(L}tJRD2S-AQMZNvx%nVHN%02 z2{~`qPcqNNMUK>o0W+_D`2(|=?48DT3|CkV5zdIP8WDT8I#W|`9cy_Q5j4o!l8S)v zbzU8A1ECK1{z*)WI1QBuP%#bcb7s+^4M4U`qcBNBuZ-ITOZ{cr) zCAipxLtobCpi@C>ocTu!3lQt6ZaKt2^YUro4Jxummrn6X5>xFIAT z(8YA;jOID5(vyGg!r7|w?bZM)qn@@huqYlBkyU`qJ3w+0%EczfZzoMr3*20fAhTgT zJ)175NqdV4L^L(w!Ykuy_XGfee2drTmvoLsWj@A!5I;R#`Il8p-B_b)YB2tx?=6c& znVHc?p7@|Q`jDQZ-S*%v96O378rs0lufm1zGNGvcuCK=&p0&hqvtwg%?5J3Ttu@*IH-y~r+5 zEskw|Nd>7gbH9JBl3Ua(@LXA9%fKQT{!(`tG9?|DJ3%1{fod+5LGT56=Il8W(jMg9 z+$IuT{BEN!kk^-{I0vpR0RtOIZg*eKFIBd0sI%tC$Y*Xa(66rc`f^2t+q;0Td|ob( zFK8`20+X}vot~%|2F{e#Xc_<4KM2Y*^`P5lP(oyit7HFzOzbBNrLj?FUQ_ zixM}x#_#Aa-%`4)zpnRsPLG8}g!Lhdb2C8eW~s-a>S7aZ&N>mkgl*RV(o)VmIF>wPgN>5WnN6-00VXaD&Ec+QOhCZrgsJMd0;~Nbh|0NZ1L~uTxTF~Dr+{NA_&@Mv)+EN~z zkBY&YP7wj1%d7*6`Z2J~laT1uaD1>K5W>@A2gnv65dz_+jm^?N% z+m4K%`!Fywju@I1c*C(v$;qP9qwPfy$fQz?J(X;MpuHawv_(f*Zg>)GqqaQZ)>yL- z^UGQ#avGoYViR-~em^!vH=X!8nBH;X#?_e;f33_zDSsrn?OP_3(^M;MU4}c2iT9@# zXD5bazym>v%X>z7k@n-K?g?H24A9Bcn5u0imSAHU`!G0A*{oaFIBBh`m>*Z0Sp%9vV>rf^hZlXe?=%~TCNb)!4Ct&MIqqbU!UdJ zLT_qiDCIZEfS7SE1KQi+0%=dFFe*Dmk~NNYE6J<}dEQFYuSB!e#ZBssCNBXy5-5uF zJ_i07y{B_5o?C>&Evkpt*AuM5uTx}sT-3Xda^7d?)wq2WgOxX4@ZNjb4#FP`L}YKS zh+aJz_$*OpVwwF9s^!kFci&C;L~{oh5{F?Z8t#O{7Ua}fHrXMus);!Qi-?ogOj%<^ zG4Uql9Kxi+f2$5I5XNCpW?N>kN?gR>5*ca40`xWbq;!JP;hU&0-%UwX88@81W^GxD z@6Lbt$F+U9NAaoj^KN{);(8GrrXU2s~O@$^e9RQ#ty;Ye;GoXe^i9C$X@4?u3R`7--B;^*$m2_S#>ipM1R%7oxIv z@-aM8FwoL)Tl(~-VlS#ufwx!NzE3^kJ=bj&%yp7d-&nJ3pW*{HDV#$0%~Nvt{;p-M zf_L?DaEwo^pJg4g^Gk~e9Am*-A(ah~B$w6OW4ROUejdc|XDQ1@gagz47>jhX8N?_i zG&_UNaW4v?FNT8QGv)~DLdg1$g+KkFD@zbLvnE>J6}(9tS*BUG`z~Ie-cs^+vyB4c z#XdjKpZ55AhMc8sTaEAj zfT1}w8w$uJz!l*!f%oQQ4gF@%s_puCm5$9xdC%AbMb+_QSMIOl_P~*s^O-X)_A_7> z5>22)j`DQ)-WckPOQu>G-Nb}D?9b2ElOFV&&Aqku#->Pj5VV66KG8T^LDt)!@g^(v zzYyX)v0B>5@lihTpjJ%(^!EnyIa2$we%LEvc|FG!Pj7Xd@Y5^ zwZFYvNsbKvP@MN8@~eCPgBl;>r_m0ONi&vfUR**Rh64^&nem=R+_@V@*IM2RjrKI2 zpg0pKITKCoTF)F8oN0@1Fk@2|`DU$wR+d?mR%g+C`q5u?gK2goO>61l9Js52I%c}gwGiT*T<KzY+WQG@jls`8jA6gLNYQHlkWIiJ_zr$mJ-Ywyg#PVIy~eM;)s+6B}OGi z_=;Q$WYEr_Td2bOGQ6`K*PK&|flQ^@Fo*W9DL8NH5i~63M;V-Il3M51S!s>F&A_E} zq@0#v)8S4rj$2k0%f8eQ1(4#;tht1Y9}0H}O-t0&hK+0?2Zg`=gn6c9#~fhOg-wyH4vvHwcfaV(#1dKON<2CJGd?Uw6ozG@Pe!cLOhi$U4LuCO&^(>V=# zOP?J$IRp01BWA|E5o_R6QIZ~(?Y8>^BCH;HZ{9xW@-~Znc4uK~uh6#-Zy;((EgITL z`~Rhr>j?!`U%}KjlJ@Rqk?+lEUfIyvC*bKq>x=jNI22UG{sBu$_p?)H8ObDYF1GR; z^C54w&U&kf&q&AuDf*&ksJlo@t~0s6Az`N@t*HrdODXuMx0q;LpC(Gy zhvED;b#mYLZ#e<)@a^6^EaMZ?#Z|Xd4=t{cI^3>0^o?4rRk7AJ#)pG4?hC1fe`-k# zJS?p1x`G$8?yPG?5*H(pn)w!riho0HIAGm-wu)~`eR#09E$~+ClLD-LD_J!}U`R*l z-U!CQPfBSHPJ)3agr18$45u#kNxFvSr2ch#lsRyF{olcc-#np0USP%i7-gPVPt1{% z;ZTa4TzjAoF7Qv&vLP}4Wb{oT!8#snOSY#V6GsM`sg(zu-5%%2u2aixxCXveq8;lhu_pF2P{^()r=#dq5q8j@Y zQry#6me0;dE_3z|%cX#a7fQ@W1kacW8MAIFbl@Drmnzcg)iCz!2K3L2CvL;I}5rwf2zYor4LSf}%a z!Wv_b25(xH4Er*<>S6$jB#xCaFW)_salg|tRTwQSenSEj%UO^k{lQ3l z4d?e|Ih0}84_|Y@gSuRp$7k2~Cbjze29bu#eYLPKOR^HaNyey@ikJWMFii)BEKvi% z>|3(`*FCkFc2($XMrQBVLSe9&(q5)E(l79El?{WYO7Bm33lFV%gqF33^N=*lUtYlb z%N#GfN*e;p_15Ucyo)wv&Wl9yYh7scK>P2CxGvjeVNL>4()xDmgqw$c>{B3n(G&S4 zHkh&p!z}+B56fOVJ7V9SjELp;OQuuTt!||7aPy+?z~M9@`h!?#Phtih=sOz|H;6}c zgf=BSO%eV@p$D+A)ua~wt|P8-WfZjLJl7hhT&j$)ZjHp_V`?fiZw|&5hhcre#e+`0 z&s27tE!3{V8-6^q>fnF>tAyRUau6Jk7xCeZlWebxpa+~~^fpz0!g6`~;o`lExhy40 zpwCK$v~$Wo?KN|`&sIdtv7K!L%eYRY0gPWxBXQI(bR1DW6N zAIqfnC-u7OCtOJ4r&0aJ8}U7zbzgdCRJS=HA&|BT!*tgE-F&qVu0i7OB;=a=&*gS2 z-jJt+@3$;*q$Geu4<GSZk~NLbD!yCo(~+Yf^m56?Qk5zhI0yp{?qy&2IyGJJApHLfL>Fg&dlmWzwOn(KsM}b5uZ{+G+-01o-h34f41b_7!NxJ;;WPcKkd$ zzE%JJ{PgtF14ElZO9>IZG@~+HRENTEjid}fZJXg@R7FupYCwa5Mh!q=yC&}c4Oh`b zt0j#XXB=DvBaWa2lL&JR3*vXX@b62)sBOUacSfc;f|dpE-w+A}=Ek0=<%yZR1}Lt{Hv+_GsqX68 zdsjO3*=yfVaxw+*DN0|C<5Sedl1eAQcdXq=ry)evaCU{vi+vQ_v;?Wvk!Fo)w_9lF zPH-u|%XL(X(h_QRFFepTaP*2iJC@^nm16%(mqml@k>BR9p2}&W01O;!aDR2EtHTxm z&J|RG9m7P&V(xV(cg=nCN(^hNtn>Pd=02+$@IR*DAFR*4~IO%0-nl zKmCz2YFs8VU^ZY%U~`^51Z%pGuDvqIM^?{B2QkB1D)>br>IEA38C_EelTF#<)PMX9 z|L{sqA^XAn&MWf^M(=qph2?0O;|subDC7+ixWCjz=C||Br^QnTViZTlu12 zv?WC(4C22j+m4(7?#u*dC)>7AB~1d1G;7xPMo%NurkRp+9-tnNaD2GbtOL7LwwBxq)%? zZw-bwa@<|vt44Jpbo#6`ze3oXdN=EQ7@-#agl?in1MgzIu9FDijVAa0saiST(WkV3 zjKL%Xa)-ZrA@h6JnfqPsH@td+_fKhZn3EefCjWS$u^hpPFf(hT#K9^QlST7P>&S2R z9~wfGTwm9?H9no^+KCJN0egc&b5e3}w9T3yD%HZ%+qXb2@B3d4ka?YVRtk0Xim97l zvm&1UPPf7RBti zhRwGw`AO4MgSY!I^Z2PPE&35O@Vvbx(RQ5=!!V=s4S3i=*L)4X#Q=>qG45q<`Kl~CtOtU^Xa&}za{_hZpwd5v29(f-}!9~ANzgZbd@jO%U?5E6Y zYZi4k9!gha`FA6yNv>zDU{JYhcoZ`j!379r390HZ(1HpJWhF=OxaWC`^QO=2Xsx$9 z3O{)k+je(8s(q8OF@YO`)l_?- zSx8e$y0TevAr#oA51O>#?klovu>Fkzx^yV@wV@D8sQszAP*jsJtGh-qy>^xjVzrUc z)`*2*BFIpCxR+G^$Y}gU95c<Wu+^wJbHqky3k+FuDt&3RPiSAiLL6?cGUbGJPCG>RxW#+!j9{@z4uBmeH3RH?x2>M`fR_Q z24)%IfW&XmZQsL^Vpo+xvBJ+?)T!y2JD9dc9PKQ;zOAysSdQ5S)=tMbL@#-LsR)+C zBlQ5D5D5h@s%;67MaUOca19P&F4n0Xk3RkpXj9xQUMVJHi&{K-EEx)pQ@#B{x8ike zWTt8JdHvJ9H2YcUO;n-GGF5m&)+Ri_I742EQ#;Wk^;=o=SC5Ad> z4viR1sZ^9iILj0|G#rf_E5Z@aHJyd?NU1q@YnktkqT_24(M3(yE8Txr`Lx1%Yox&)IyjRY6n>EVOyPzsnJA2 zjz5iP1YahxBj_ z+}~-4ho8iW#**NXZ15lYICFd+a6A8nX%7;wQ_;N-VLKPSLD@31f8Aol*2Vr&s7{Q+~)gCuVt+CDoIw(S{iA77ZuXF)rbSLlkrP))sO^`|xJ_hHUeF zNBQj<2qp|~l9w|M`5tsNJ>RHCkNh#B@mt*l$4VTXOeu|b(` zJZ|1%a%X^2>4KnXHxP{ z#`L^S)ZHuvz2qWnHTSfI>kOi`Nx{OOdGaqr!H#~acqe`N`hA8cxjud|QB&0YGjjzh zT}u|g^>gG{8f#AzkNM2Z`}&wbHP3M9LeFn`Gp8^xb7+DlmAqNl=c4@l6%@7@VZ%COJoe-bAFxXxZD&O?gFoUSo?H& zwQFm4kF6o);P2X9Z6fSjU{pw05Y%?({}DQ`Y-6a%RI{OW@w2g`80Q^so`vrx85_JKAFA74HZ!o zgjb z?bmTuBxkede7|+t0P%eP;c3X&B2ux8m=0~x{43G_%H8_r_!d}+e#-#Ld z+2mTlq!9K8wIsF&Cz5Ir48YseM7Nm+V~hs#uT@gvkh-Hifsd|^%$-0xl?hnt6#Ez2 ziyMaAfLMNLyU-0jR>^Op*}1@PE_7BYrDsL~84w$tgO?ySCL6nfz2^o;v+n51M2%T8 z$7tS2Sklz2CQl!shBs2`KKp*|E>^xqD+&(<=_)x8B~y$58|Exz0IHflrUgdrY4P&# z6n1w*)(VMX>||5ryF8U$N%74?7$nzV`f{QT4NSsp!YtlB%f}ic0n9=}5YhYwvtK6D z0SVl(^?X^9HGp?DaBkVx3}5<*4pITePz;h*Wf`l`?RZDo1X3Opq!K4ZmB#y$J;){C zKaU&`Yw_C~J3o;)vYAd*7C@k|y^ZWf%yOzr*wxr$N! zYSt;|7A&`x;E|1;H^rV`v8|7?CFi2%cSp?S(kNo@|8JeBV9_5u#YjOZ9*r%&t5-Hi z*q6TT28T*u4??fcgXV(CVC;Spr#128$r5C~j;$nF{w)wR87sRvbmc$CHzh2_ z?GY9mjZIwO!0)qWt&572KxvnxzZa79wZKu>-Kdk!osa7NF0%M;^OVQeKj-G^o>jeMJjUyl_U?x6 zW<(U;L%mi3fGD2vQYn!CwuE@lhR(5uvQqYjNzztJ@leI3Sao97&IlHY{ZA-}Ky1{}W&P3YUjqK#(z$ysAvC;f{gcN|Z#cIBd8z1O_E|`N-dX93B`Xx_ znL^1#0X=w5rY#H4J&m|XW$eqsVvlP~87JWJVb8 z);eR^H|wknejK@pj@0@zJS;-61@K4f8L{kavM=34N%6dU8ik8s84t!zz0bmZ3Qh82 z>|~*ZI}WCRLHil)U*K#Q?D~s6lC~%bCdJ?|F(RaBwV0yu*%XfF=D6`)d6T?VADAAd zy4>LJeUorB7UI+s}vz@M&dfs4ro^O9Xofo5Df2=v}$~pCf{1po% z|9iRBd%6xY4EL3RMk<4J40&SYjUg$%q<9o=L%zL+Aj-QzP#~P|Qoo=6N_dc6)EC=H zq&+-aZlc}I2UYcoWV_hwa%Ux%`uwY)6;Ojf;Ym&Di6b-7)WH^lcrHvQdvY!SNhgz} z#2=3%S+&oJM{;H*A+j;Hf}I(=0}VB8p`s2 z96Oe|T1w1}bB+pG3%6xqQi{b&G5L(KyAj@BXDGQlMvj<98kC0>_K?q}^FqottG!xR zRTp-CLkcbec3T-2WuI2-&7%1D!Mg`=_Qe4hUlgI%X34C_;#>*OiEwiSH;*+2s#6Dw zOyMHXL~n85_qlw*cw-7AZ!Vl?7arLQ8!nQGsWrx!Glu7jlao-}1kt!6wRx_CTJqKU z(n4e&8Xi`9pKYNXscs3UAxkZq$)h#W(k098WeSgQpo-as(5v^8Irfqhi?L@q-w6uB z^SrrkNwFv9I34+8zmwI>r6Iv6`;nT4N*J01kaSEOL!z9RttoBREOgFPX7ns9zq^TW z%3L!+i@EWJU>F`bgU-m8`!A*Is8!2x!R1AG+)yy%`vq#LKR~bFfd|Axsr2P@U9%E_O(a`e@=)SlZ|4+8t3mZp;aSYZ9jIorf%=G?z+6hHWlJl^j z0{nkC&*@{loM=b$uyRH4m*(W}+R^*Lh|fi+QUfa0HDxY)<1}R8NTOb%)(zXr9PwQH z@05|QFbUxf&NzBLIp-@|vRA#p>e|(Ydh`DCMp&+2ypy#8fUe!ar%=*LNHo7$nAl&K zXhFzG*l?58etF&@!1Qien?FkN`HSA&~JB^wa+r-eRQC5(* zsIBRHxJM(=f+R-vl*GlN#a#coCh15@ zx!lu<>Q=96;4O?(mk)0CS#btYteH1OR9`hZVFyrV3H2NMRNX1tpg-PZf+Yu^?1de- zT>8+xJf6mY&1AwsJ-5c-tUD$$H?IoXk=o=?a`fC&rsYN~3Z7+T{cpi&V(m8P*B9Pa zzA}aY*f_jB0zw6Z_^49wG*dfeV&;IS7;Bc1Gj8TD9A7!s43cX12_S8Ast%LM5|~s2 z-|j7y_Ma;mS~I@QiM`|fS7Z-l5Bx{1-`yF~=Z_Fw5%yAsY0{Xq6;AP8_)wacSlom{ z>4Hu6;K%T!KIDX5v5roea1yD}_o2Hsr=9Grz?iMKLu~)I87|*{Y>Rku4Z=d<&xmlA zSfk-N&c`&j!ZM{FPPm-qEGUY_V5)f2zCa;Np7VtT&o>z!}w zT2vDIxeO(~-&k&v_P29N)Uhm78+`C?y_h)7{-;i47{ z4ka^3I4BhIV-yL-n6%5=z14>e%hTe-sN6rKNn&`oD^S?f%GAZZX~g2GS3M%y!u!4c z(kT&euE>z&KMzeCm#;aM5o_59L`z#@$7UyTy$@T}MeAabu(J9ILDNjq7h>dpZia_j z^Xr1UcFjF>g(7)A##s@6VmjtS%fR4^Y(U*@C!RLst7fvm5lj*hC@C;$2)GYBGPE?q@p<)Mn#Lnpn%}>n zKmLD%3Kgr`MAc}O4aaxY*socWnT+7`Tce5vx$oGG%MCHT+n$cdDjxV>F)f_su<^a% z%rEU|3>A{`=!iNC?wdzq0hAQkPa(4O}NgGvDHIS6Ig^0+5Kd&Tmo zxERwkm?}e<3ZMWRO1wCkZFC?80xTxN(~i~M^LA-O-N;^KwgjBui@%{OZ_%jv?C4>W z`F@Gz*XE>{Ui|C+i_(bv5!%VK$7Bs@G+SYnX>!(&lR!(n>+~_oi%VHmZ9W0|+9pJEc*eeYUT2G;<{%Y?Lsvnxe;7%ez>NYjd z>8m*tOU^1RE+9iW5gu>ma9;#TXR|^Y80C00p1x% zbSM8hhVUpCf5q6RvVRetFlVxW(e2E$vd__DKAwISSCPNLh+*jT#xSG~DDuua^nHg6 zHWbH^Sp|gF6u*F;6%qhy>5ohcjyc%BR8D2gn8inQo~YN2>BH{$p%X|?_y?09q2tox{ z$U!nSUBfoa)Ut9TYQd26Jj1z6`(ni?v6eKr-VZYsOg8eu14T|lJyJ<#3bkH>z+zi^ zl@LTod4KrS?Q3O!RX8ez4qOAt{E!EdH)K~xS?6}TMd$4o<3l9iY)rM=F&!?J5L1cg zb0_*tykq#%8m6w5S`li4!~YBna+hjfK2xacm28MD)z0+P`gP2wB6)pf`TRBifi+kT zKeiIIEUREK)J+vr&r=2ZwxPM`_>EAiokjUkaP!?ZGZ^~{r17CGi#BpG!5Jv>1E5dm$@Wg)5d%<=NZ# zM>S9x#%_s=0~yTJ%=o?GVdDc|mIP#NVF#$1Hp6ziv9NzW^egm+V`cI%7O@m{4GQ9P z5o~Ik8UGKc*+^7VB zg$cJ>5xA1U!Qnf^+Ak1qbVnhTA9ina#ljUXSQ%g6jnFfs@<^T%)i!nKC#aWDsq`Y%=nIT_`^G>bU*n*&PtEsm&?S+X8b#~1c ztT5Yt0_(uuhpHf`z!EN#FJTh)$6U<2LcxPu0r*MF#h*@lH+4%l*Ao`PPX|<&{-V?n z(Oq7yI(|e0{Q;Kg-VIL_QE4N|SYhGQgJd4qbe;MeE`TzD0RA$k2=?snjc@+0LFw!1tC`tI~`M$;gE_!Ns_<}1B~ofPsa zkw6Z{*_YIQo(42YYM^J8L($b}zKwlkN%F8|3sj{J2K<`l<`TM#g%j)=_(VXiV(LPZ z5V3<$)@Z0?*_lC(uxIQ7gU;@>W9@;*6-Kz+q9Cv5-J~D-ugucd68YX%WH%XxSBvlF z>BH=8zgYG9b?Xi8^C15t#;Na1df;dK@L8 zExm!8Bm8%=@Sz+s!56tC(JqS7{Sr}qutL;S;+&gS4)5+6>_0(wfZ#D2Ly6#M1@=a^=J2?uze;uy0&K#hB9^rVeRbDc$1DN z_V(eO#RdRyK}rn-KZ+}%=KfYy$7lvqJH!o7krKht;sAGvweYn5!5X#d}HwY6AsZTE8#Q$Fkq`i zNmT0M4Q@cZ;Lz`C2=`0mz1g1<5e_gTZ@a49F%E*_(nuX?CjDJP8j(s&{fr^&YJ#J& zPoK@B=Gj{CGjE`9h+BkP?w97ZE{k(Et8*sH^(qNMyKvM?SU=dGxMp9U9f#17J33r> zk)kTXqu*;C;;&an%3@fP_8>m95z_q+ZBBW)ff->mWh&7WVmzJ4d( zCFI%_$O6JmjV3H}@bAbn)I?4#A!=8^_tC`T%0NFq2ui!Te|DnuK~1F%1%^lNJ6m)Z zt0t>vmHh@Rz*;qCFJc)qdma~`#SvtBngj~OF>A|S5ARuYK6oQKZRC#-^OZY)I%8;S znYH&A^=2;(Ums3!tpE8jaw#~4i)^Vhbqe@x+`IpS5PJeIj(r8tZ7mn51QZWFj8

    t@_Z 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
    K{tk~0J;QT4=Hf{v-&HIvP7&JG~B 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%0DjY6A%3>3TvK#Sk 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
    j25)UV_F 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¿$RiX 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 #jOXZ-cgf5G4W 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%0Dk|h^N>5ZQ40_*~pDO~k`xj2azHa^SlR4#t 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

    d9^Z*7uI5e>3ZkMg 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 z zjHb6;NO&3bF12sQc@(4X>;~dL*+luCI)@EJ0Y6@cc?|6>+Xrn`ty+5?PLmp4MHcWbf54aN z&#u$;VI%L?+VT-i_D+ip4aYp-{1Ng<3VLtn|RG?~}5!DdyVbJ6NmUT!C01#f@4 z-!YHAS!-CBjmn%6v}kLC3h%q7%87V{I6mBE!e^`ZeYJ&!S%*%uxUl`GdcVJ}7u>F< zk(dEH9x*M5y>VT))?23ILG1hfj^1MH9PI3slz~p!L355j0^EOf?!9iaa#P(epx1fM zbye4@V0AV03tT~4(PA*6P<+lEK)n%-@D-)sAb z=is%Ijk8%@>Rs-Nc5{PIrH!Cmy@h1%G&4Sjw~&wQJ5hjdC5eExE~}W2ryt&WJG0Hm zGM-(zYq8W0`8eNnW5W`;Os2T6S1E(%_@KrD>H6jUl}-2H1MBL&ySlKQeUB(n&O2hp z@dUotyXbL@vWVO{vc+!7nii&cge<6?(bx%}5r#LKl4v%b!^vsK5wUC?8ZfC5ZpR7! zL2)h1b=7Rgv>DXgd2`y(P^~!H;mvTk(^l9)hOaO0^23hV_BW$`EHi_MvV^reTquKi z57b>i2fG&u-o9v8@rpGIwKO zU$S1~X=UMQp0)Q6xNPU96fkF#$Yx~|ZEXK}@-}6nR@c2sXm;()h&gH1=77tO-H?45 zQ<&h~Z;Zsysp&r5qd2x0g; zJ@_&Fm;B$s1s~-LV?J`$x^4<|YAP?FV5iwJZKludFt}pQuz_=sBcSyK82+uwcG1Bjh%E`&5(K&9Wl~J+CdveU3SM zUD=NP0QMNS{D8vx=A`j7@}@>G8j8Uje8xEs!+YI!U3slP@>*lW!uj;g|MX+WIgiJA ztbK=D!1C3cF&xO@YZ0(H#&k2+scu?}wYqBGW6n+AoAXr{QApDQu))zv<2L8S$9ztG zs!;1%S!2Zf{3|{_j(iiZ_q`{!<%4wc&Ry3kLiO^>K4%Hjyq&H6q&6Zo6fpoGg&tX? z-`&&Q4QnT=nn+#u_nR`lH?s8mcl>&eCU1geE?TWsq}#`AbaXw!s)?)$u-s*GtHTLv z&6>yI{KJhGtRRv_!=9Pd0WdJE*g}3zk9*SI+p;lv(hqrqW!k2&QZR4wK?N% zE{*48Ou9uW=xpm}!{nF7m_jr6%l7wHzTKPVYpv_9m?LC<6en#Di|;lgp9eoj99O(a zz}0b#afnTo`D}+T_-@p|FyqdYcMW1Vhr194o(FfU!`uwH-5x%s>)pB;#xcw*d>nQd z!(!(g&M>Y9qAL@ng32tWc~|$|))l$eE5>uLapxu!H&|}gI|9EI!dfvaTKj|tC}Urgcy)k{rvGSFAqM<-%#}$ zfpS!@4jdTOb%lrdQMrWlIcqOfrxnT{?km_uBwC~estO(67$dWk-wGo~)CKRNW3kd@ zL}%rq8AhiEM6U})3uq{Bc6NMR?7!^;^yJj2=GCS-Mt&4XIo0KSOB;>pKn7DNLWY zJXM}+@0OQRZ>n3LE^8mu9Cg!5!)(F#K>XAkV#IK_eMk0X{_Xalhih$gg9GldMwx@F@)z3bIE<2W1P;B>zBeeI0ni9SMLUh00`S=!>X)^rf~%C(I%B66>~uwU0! z*5iNP^+V-9de!${`WY69aOas-jpk6eyHsB2R$%(@h$a;gxnHXz&WTvXj`K0xOYfRx z*tV?OJQ}H55fjb4FLT_b?lqtu;99$Y!v-*xSEG@;3lu_Wkv}D@de_ZS5IY&(ku2pM zSFODF#5sP2q3(BP7JrBm4StnwbxsB~9vX)9@%&imsXc1It@aMW-=JXDnpQy6x3wK;sa4->Xl z?ZvX`F|9#32hjHa(ey59nk>tbm58dEx%(fP`#h>>(1A8{pu-55M9rPAfLr(Mof+}F zo2jbMh{GKGX(F;#^TQ&>3|80%ypMUF$4{ARZ=z`)mNKlDOU+?6*c&!tOv}!M186r3zt9rH{21)h#X*9eb9j(p4jb^1eoVr=pJVoMm?^s5+FjlVjXVZ_@kCy}J8@8%V)ml5B z-0!}hot1g-d*`$6{Q8~GPNw6#6d^|e{LYlzj5L}ZF+7YWf!KQ9bw9hrU0AsQb3X*Y z+&#YoFzb~i8{>HSdH6UcXiBM5+=DTvMLZ_-I7o{z=Qsw!tVIHoF$lTXLS>dUOgk$x zA!ctOjn%ykW?Qv(f*eO!KhNj0kaUV*XY8aP1H;e|=a1{}KYgNeKMFgJ;Ywxf3-r1(^y^-b6_-oz%-~NyPRlR-4<}`swSgrLu_h)rC z3%$C7w&xMUXM3}9r)6c=JG*6V>gw94e~VkJm0DkGp}V`XV1wq;>Vn}L9-^nZpHnPH2E5ri;0hx3TbC>TCZ4ekD zs?~&ChS7~ieM3j&$_|HYJOE3M23v-dm${7UVgXgHQhyUT!Vsd1?F}a@eVJDn6RWDt zF=C;&b%z_n5dQB-?9SY|fYSC76I&{l2IJpCj~w$LyX^@aw$~?DmI1TfL5r5zfE_7G zbfDQBv}o40zim!AvQ3wpTi1Qey1t>VIL+&2M)n>i+Q(uZrGT*&^zwfVK_x>!z z>+Rr3xGAuEx2R6dYh7UiWNXdv*-tsX- zpbD~{hYdxgc2>Umx$x+r%h{B^KV&*nU67RA4JjEGKIkC3vA1%S^4VP_4B59Ra9RK; z14l#2K1Kh=QZDThY|d__!F+W1Al!dNu3n4Z(4}8a+smj0Z`(FFVthKdk8s!6| z11D6!@{X?iZgu3}C&!%onPl2w^;GGJV+_qHi#U#PierG9R_~S1PFYlAp^rg4_2BXJ zY1p8N=NJs>$u10fnD!`k#qf~Tj(bfNusKHccq(@kxrSEYGfw4+A z%Q$52qoTZ%gWqhX-sshRs;r5wE`*QM(%D%~B^_qI6U$h}!Ac5;*7v!+4Df18my-s{ zXoNpIJ3ZzBs*&{N9@cD_2xlqa#vwDB(E^3ewFfD?%yDr-9q+I8*I&PP4m0ynKHOQ_ zJJWr5Tnt1sPw!oT_4$YQGg#7x^IrOb5Ikw8DZ7jI1zbc0i`R4-x*ImH zY5rmHdhTacA7L##EeSS$SV>ueJ?IxJnmZ|X&uMzs>9oH^Y(~ot--YL)5a;giqR^8C zp8|5#*52Eq-6F${F+vgqfm;Qdx!l@PxvGo7Bgav*KRQmFb2@$XEidk{9CpcvbJJ*! z**p++QqQvL{x(m`p+T5;_08X3z3$)d_q)nwaB5{=pUJMjJfAT_t(q3_Yn(B>H^;%J z->PIkC4*n*&z80J0mKndWXun@xbIuJ+zp=IZ287?G-k36mE)4W?)+<)uU69Q_~Y;A zd66IhCwnV*mes8Nm5wyI?JmyjzRvSHr_d7pq`w0KULACKS#A0sZx z-l#qLtjx?WGB|X^3j2GFp5saPmf@+a%rBu2jTe+F?WryO9zlyfgCpDxG<3iFNu&FJ z```bkTP2@|AKx?RaBA0H{XELu%X+!Rcv(z_MC)#J!p`tv9(J5Q(5cK-PM^-0F)%`5 zF9*yz#yrj#G0DI*(zTWvb9&4e^JUd}f0-Cjj8r&%&OtYID~&RKAIpJL76Vi(y9ZM& zi%|7`epCAHw@Kol&DPrL=h}Y+S$tmS1qL(-J&(z zXkD&cy;TY!ptfpmr{RbK@9NFAcDg53L+w!ohhjw1&xi}bWH=QzzWZ*R-lU^Qnjr?^ z7QAA7FfvHG0gO0&9_RwtQJq;m<=&tWuJ4xT#k6|vy;p0c0dY8>t(~?|usJPumPk7y z+#Ll7nsCP%hdETsX~PR%EfZ-ClT@ndb`7*D-D$_z@ZE=C-emw4`SreQwfitH@1`sV z^i5qd!#Sq$D2xqMb~U?m@1@EZ9x=W5%H4{fV!&Yl3Dat0jPv8iIL4CizQcL?VXED| z(uyzMTq|s_+qckQkq%uBh z?Z5u~{dK3HaoBMUj>F}%68qc3CDpFgSwbAnwd=FdgGjZy-M7ym&k5ORnPYoQk7EKT zqU25|2gHOtHpJei(|uN;92?QWc2Bo3QT=e>=WX z&5)Az?C0x#7H`FpX#fBq07*naROrelpEtn~=-&79{`&p&Dj1DPD>~>0I8g~M0*zVU z{B0oxZK6|3wUy>@p0VZCNHf`lJWDWcYG;ozUoQ`+{z(#QWno z!hWm|pgf4F`C=tXbMB zrJSQRqT$vIGoV2^N)5McSqh;qv^Nzla{%u2;j{N@|FDDR9&%7+GMPnmZqqQk(jT8+ z#vdyB@kvf_j*v%nz}ku>=JvN2%WO1M0tdk=V+k*i6{wjv0sSBuS| z4r{_~c}VVSIU1pO#lQ(0JQ1z@8V(#@XoD;wJw_0fce`693hv_)YkD=b`T_YYDr!2^ z?qP#aHrE45)#(F-o~#GC;qHD_;xldYxQ5km!qv%(L*5VF9sZOD_t9zA)rG1ZreoBz zs}-?#qinVZ$b0p-CQ=Fa7(VG#?yUE7n8xcx58j2`Rm&J-{xQ_G1=E~f$%^(i1I_HU zywS}sie2ciIOx0}uln@B#1-CP(fl|++#Xe;BlnXzxJJ*`2yCtVqK5b2+~erc5I-(I zn)tj$&z4;GI3xFKN@3+XXyEngYCmd*a%HZzF)(3{#u)REa{cx7jZL@Ai$1SEj#=Yy z=`uzfF$EA^1dK{k_VfF_55mLNW)saArE&>T+%CtcefwA`)Q1W z(Jh3=B;GN&DD?CZt@q0NyQ&hspDQjZ0kxbtw>L@<@vsQt})+3WOjH0BwHmdmV?)J?JcDR?w zWIVgN*O0m*{KtWnU6Ff#dJe>Cy=wpK-GBa8pZ(%r&b|7@2Ur1B*Rt|btE@3SVWwR9 z``!`9507P-{e*uPBE~SLtx~vokkW#sw*~FowS9EH(a;DCOnLV%vfA6|<{ZJj)CAjl z?fO3C{8cWqlid>Bx1SeNeuQ;(@5OB-K~u$0TsF+m!;CZTcHht0xVxXpLl{DDcFWmt zZz!X7k~PA868^0P$1u1I)?waD@`T!&y=>3Y>XPfs)>E5qfQAo?$-ZfWywIIoKu2vD zXZ-Md+8khY)99}l%ip&@`V0N`bO$t&a@goHpc;?0RA?dlw|CG!?C9@Ey}fK3>>TH4 zsZFvUs`mLWXF8(D?#((;Bda>My9XV(%OIVOWd9aSeRL;~VITA=Yj2n_Y-pL} zZgXjyIICcKlX%~Fs_Zyt%&Bi?`5f+ss!g@iC4Z!+%wxzs!}xwj?`Gu^YRD{z(}o+e z*OGN(TUWmE>k$+Q?85ucw;>(W8>rfT`nuhgP0%7t^scoL3^#EitnPpaQ$XxPB8-3p~=Igw|uo-60_kO|%bC@b17+XQ| z?LEe{jIbRLY$O2-v+)XVqTuYe!~@MBx)#}yxAlC%Md&y&Q;5$ySHQ`JV@=4tkFo=R8_ zLvu=?#ml>?^!IYYjMdy#EMS=Vm({UVJ~Gnxn$vUsnD@Td7r2pYJsXw(mtjD$b1Qq* zj4!@EhMHRf@7yY##xmP+V!)uQ&#=CuhEt8I8s4FVgd8jLwsB};?MD6XE{n+#iWn&z z`*KHlRo@j_TguIi*-T$)sy2|}rv)HwB+QJH8B))gGChgj{UkI97~VmTU%yga>iykf z^&YF^{rmI%`#-n*H|;3_i}+kR4r`wuo;F zdRx=Wo_6%;#jxc_d1!Th#ZOY)Ob~V3|}gWN`H$A!U{bNKzLv z(4h%4jeYibo>={ePuGOE`>o#cgYIC(q+1zI+GS(serkQ!IxlfWynDh02lLLo!_%uj zS9X$0?JehFyD^pprk$>1Hf}LR*qZWY_mT9E5cHj#M{4>=@1mOhJkXbGH4n|xmFjFg zT~E=-f(m8^r^@V$JbnC(&~T(zYl8J4QR*@~Uc(FZrnOz2X3Wkk(@s_Mq?2=vvJpeheR# zPv^n~vl$bnv)icd^8gV~S3==FNP0W^+sfYV(o$9K1yes2RnlQ@C)})QtLR-eqChfv zMCicY4N|)yp(5lb%p6-q$WWE68`CLzgGO^RznQr)U2v3q(0>eZuUodqi%yf7AJ>c{ z(06X>f3T_^lpQ~h^ZNKBUZHyDXI36hv(_GvdKKhmR6vjE=>{~*ASI-4*FxC6_vn^+ zOJil1KCkhj4UWxlLa^KE)EPXjkJKZ)^P=}g<&|2Z1$tZu3S>*r#PR!NE4ff<8*(~9J(zs3$bZamC{!VjbuC zieCHoSE=NHEDfm;1b_la=iTiOSro{ETDjAW82*3$Z?Dhy*Ry`T@67CK-kMEbN2|t8AckaGHW3UzjMWdkKqD6?o{_v-ajc4k4Im~GXHUEg~$ zn2liu%#>j;<{SZ2j8?>^&w*lmZIP-O7;a8$4wY5mOTE&vde!^6Ki88flSBaQXYa(e z0AQHmlZh}s=jcISnPqm483sDdjtGVil%Zq}kCeVjEjkJLLuJ3$z8CDc+y)bVxSx_% zvvnoC3dgW{g&kq$Y}8lvQ;1vF|`3SHl~f~l%TB%j{D2>STYoNc3h&YwSGe%!zJpYLa> z*51uH;xcnEJhgM(BGBr+cS>d4CUmQdATUI__x^@UyEUDwxz29+Vq2n&aut?c!6uXpKbVlCwJl*-(WR~#=pC&B=a zjHaWG^W*h#o)i3ju#5#czxZieQ6D8iqIO$zjV%5`N=|7_1`UvSzyP zUcc|P{}PY!<2wF!%rfi2K=v&r6<)iMkEYOGSsZX5UA7;!%0H@#h8FVqmwy}o>g`>V zA03_!?sv;nUO>={Um0eGU^Y%m+1MD9yF|9_e)fLy{j8@*zZgUsax`y++@_b56p^J} zJr3G>>NP)x=N{F@NQQStj_HG=8+e$ge5X41ls_|uAOBE&+G+t-(5~JR;t2Zbup{!W z{@fb-t>5@laZF3$G`_-7t(LhTRfkyNrMB(6X|5@hVZYk4#%(A((4r%{`#Do>p4LMO z>CY_>o<0VS>ToF{;0~y}4vw0CD}Fw|e%HE8n#Thd`>MKhr8>wKo({epnxcOR^fBpJ= z|Bv5|yLG#-nqG1&gR$YJ8|+d!OdW|~&XS;e_+TGG7lWB*yO<^g5A#=Rcf&kHkFpuZ zpmt*OAkwTn(AcOYn?1|cZJh0AbXC79F~%o-GAHp2MmYSi$A>>(=)th&HW;CHpBmoT z?jli1%H#zS>`(q!S3E_p6-Y92a!MxBfR%%>Xr}=gt&P~HX<(p=7}em9o=B1 z_eq_5d~)p*fk57aX?*z=5l@Nv?zAy4w^nNbMhT`cnl_h`{Uj-r@NBR@1$#nz7VF8bnAad_i|q!pc8_Dm-30nlt(Cv6{p0Y8wlc6b zhi`*{9w9+34Tib(FlyGle`9Hw)hFX0|NL7b>%Du^=uLFz>xh5;mw){8zy8-5t~0HF z9P@(b{j3&W`*Ww;96sjY(9)0n^aRbr&wu@TzW(2TeUUNa^*Yzs(u(`ohC-`U*fP%e z0Ti`Wwd>36RdMZ}C&GP$qwyoGU>ntdF>|W7SO%HJw*U?s$Vo?{)_R`bYYX#?%dCp6cUZ1_j(eb9az;;GV><7Sct>=0JKM1UOrlOc=cX}f;{ z--Wq`Zb;Zz&+na?-tK8OZM=qx`wceZFe%s0S`kk3wt;@wZIP(DYnRGn1|qw+vKW}S`Im3^#6SH%hr5t_??Hik84D;RZ=CHE*#+>btN4tXE^|WR@U0C2E zueg2;Rc_15bmtI7*1r{QWj(JsY&42`t5|trRJ7PaWM@E(quYFcDH~QJIMJ)?E2W)N z*7f8}b@uLB&;MQP{`J?tR8eC9y5Z*^ zKYkd8Os|X9KIrCi9+{rYa^Gz!l-bOAko<7NG2$PTp8xTmzdpaV-g@%aHNqI5EORBZt#K)RZ2?7g*8 z(B2PM-`E{&1=m80=XE)*c>aPqf4%Ro{cW@O+aIr=KhM(d_xrAWoY8kovR!C~c@eYO zp{L$E8wG#v%6yykm`1i~mHXbxa@yNBcDrJqW+rP#Tp0Vh=CpPx=hX0lUGKH;XZLmv zVrg&oxl!*1;&mGP$-SQ&B%pf!Lgv5bd0+VZ!vZNL7a*=_qEB^%XLaVDtC0PTTy` z!icLOhC-q-V*0T5-g)~TR46t<)MeZQke5WIHOmOAZrkQ$nU@pY~69BEM_>{F+eF z&;8l5HNQA{t?J+VQGd2DeE#_3AAkFsraxo)`}UP9?qeDbe}HPj(S%B=?FcWa-os`srtZqNIFET9-KXElXV?Ab@BjGxD_-M#UFZDq z8vf%C+x6;=+)GA>O?9pQ{nuUQ9{T(<=wl2!KR!QRG0cKN+}&GyX#qR5vyIt#F!-p_kTQJuZQ8mh($Z_AzQ@Y&K6f*jjK(b?`l+#}b{6lJShRk7bseHPpd&*%He8V1a3 z{ydIX9ARjnQV7(+R6$i`Vj8W&z_%tUhlv51C3~RTUD2Ilb*+=60tkf5Y$ScJI%Bd6~w?`hAvvRi&E0Zo0RbXofQB|D)-Ra%5?e^Uus3 zfO^n_K(0gp1rX3mLY2E+S<-FECnES@H@0c&lz$rC(L$nNLv(0x| z!Z^agrERYsCORUr0Iz+aYPT00gYSHv^_uPGS}Tf8K5~2p} z<~;`M3IC*E$~XFYSz3?$H~#f_zV3Tp-_NhF>*fBvHU0gLUbER|ePZ>W`}!mD+54rL zpMC$_|L?gzUUBkOHF;-8TywcD$^d-tAG1=Qiw~Z69+__jSDx(sb60cNg<0$1BOm9v z4(Ze$aUD4w!Tk7m5ZCo}R%-&g?%H)6%@c7hLCggLfxW)3o`sKGrYB~!WDxMj;v^|f)|H`jTH-u<a*CCuA`G@)a_4@t$_t(9DUO!*|_`FI@jiU=zn><4+D>GmI{8!s9Il8CiVFe&fX z&-eG;C-X8Bnaf7Pp?^b$luwi$9rHua%GI8Q86vVcpWgO3se~ z9Js6N_2)Go(e1*T>gLb$$ulTEiV>1rJ+RXpI>K(0VWYZh&$avIJ~2RpJQP=CEv~uj z@)3EgICv}~R?*uHB^-NonbzyP9|{MM1!7^|0wy zs9M+dbcST^NWzD0U=ql4sLkjDu%hUMHDn9H6(|R(^LQ@y%ziWJhAI~4PMi~;R*egq zzz7Qq?LAnTh-+T`*i);1BC9r0!({?{`^+t^V8jrBb#^?bbg+3#@_Ph{rLQk?`!Y7cisB@pg!#lARqbHzdlc$*X!Gr-NEnQ z)w7Q|`P#4j`|I|qI9cD`KQG6>v~Er&zSjCa&sgUnnRLdjL~odn^El39<;wF>hcc0V zynU;y=W`r+Qk- ze4fvR^z*i#zw34V;5Z|qe*Uoz{n3xT?<(4H@Bi4f2ghQj)`6aNh#yW%#PtO4YkpTx z4`M|)BJ%UoKkhj&f?TI ziv8#J)z|*IwrSIL+rR($g7}xeJ$@Z0>haAlV{UyuPp-LB4~xFOSGY@a@0X!u1S1~! zxxU>yW4^w=>$}0}9Na0TT7lyXF4vZC3mwYe9bNtVKmOUqeGkxCYp)a;Tv}8-Y;PHQ zo=NDwV9lT}gP!h2QkXEX4m|SksU!WYe$_Rjb*>oQTX}x06RNtt?(eT3nCtPubDyb> zyzMn;P0703^D47`es))!4JwbKH%HRb;JR2o^unpQ5uF6_tw2P9iHfU zK|MK`<#y|`WEF9=m-`-|E%t5l6`G#l?K}>+x@%X0N8;!p1iD5fjp~kbfd?84q>;mFk3y5F}b%|{a_Hd*8}<(cb>ogzVErN z8w9nK3q-#Pu^yiv!FncM_r7=E>+qkRt0t%RkGbu@4onfDaj3Tr5LZbnMZ|Q$Y56Yv4R8}$SU;;fk(uEGs(@B z+5i9`07*naR1=+{@aOSMVDI}((Q8IZNMX0|=lHmF8j2^L`AZo_$9$}WaEz}vKIfXh z&Yr%>QyCX^z?qy#md0HlAG7jfUzY@}9337I_4&CT&$wQm%G>(>zQ6zclC1|j7t4!y zT^;&39)BFA>UutZ>RU)TNl@jUhD zc|~~9yE@2w^UtrZ$MZPOM@REn4`hn_Lm&I;(G2#U(InRyMv&z|>lxFS+P=T{zPf?r z`Q(GYo{z-YnG8i}MLxyEn2L#z9W&;|xV!Uxnr;xdgE>~?E7tS#{7--M>!*HR8`Bw! z$Ajm|$f%#Xzkhyz@2{V$@q2hue0;2o?7lpWjEt0Ln4uo;c1+{v>(7}w`;X(1UMeh&o{P^er=WqP_+LU`^YLP|ej{r#G2X4NYrDGy*Eg1d-bq1x3U1_d=aLTKdq9T*q4Oy^H5*!(Fqq@Tjg`gYLTayc)PCdHnhN=<5gegbrn&ndjZF{{83o z)g80!-aUEm4K^@c#~@ROde{8f(Wn?My?bQycMax_0dQ=AwJ)|)%YpXot*E7_qCHzb z2lLDXIqT`i6Yc_m2y}0w4{bQ~Af^d_0dn0nEo-%Tex&+y(Rv`a;|{&y_n8;^FS@ zfs!+fcqm$z&j1M?>*HLv)ERj*3LRr3){2jeeRH)LxWMt7vp$%u;Bb#gVljZ&=%JQY zk@vzWe@^@0)jju&MUj04ahtpDbEEC=i(wdCRcJXe2wB8%k---!9r*Uz6nzyB%M^*jdG z{n}&P&j-|F2BPPt0b9P-;QpDrzDS&Bp64gGLJ?0mZaDc`joT+=M&GcQ8A0G_1P4E_ zSb4{hp<`vl(vl*dVxt@MCT0uXb(ecL?m&QxFi7jR1B#8&hB(j$gR29{jmSGeN-HCU zNym!wh`T)A9?Zt;`?oavj%np`O1oxeQUOd+Gc@k=@o}u@l;umlaxoSIuln=xif_g@ z=e*-3Pgmcy`!$}(^K~3Y@Y(vM2B?ro42T%+JvOVQ1J92&%Uqibps1CGxz8e zukO3Bs3T?vmSf%tLuM-mj-Cc*?#Km85}44kqmoyTWx*fBMpxZhpBu+uFO-Y-%;Dy? zg|XPp_y(Ro_r~6g7&FG6%^BF>u&cXn2X?N|68GlrLOR7!ynw@Vnl4f3fqM?H5ijFB zikP{kKpyL?p78){?~dFWq-U=E`q}mo5yyujH#T=0G08@uI*ge*fJ%T zYX+b_Yo?mTO7R>az(;Ur7rkwa7+TDzsfUH(4YaRoSn#7%;Dnxxqfi*To;x6AEOg(~ zi&`+oyRku22{NViH0?d$xybw3)BD)F-+sprNlEwa-LL5w7akS8>*u-MJ+&E#x%how zKVLg%E*QAa6}6*_)*{qspuM&u!bye9y!H3r$!0skddDhAfP;~w5Fx1Q!3(e&`WyK0VDI5UUO);rsn z@_i1?*mreLN5It{irq6DDxx=ocgG4-yk`gIS1ejTn37C^yD>|clOw}J=+ayE?r+=_ zPNkeq9W%Xc45pgnwG11trr^}`;6~F4&0UE+$~bDXgXK zLA`q3a378l`Rnocw>SfHOGlTVFDl_=)sL#W@>s~AC&jA0uU!m;o|+imdGh&r9!bo> zLAkVeiiYWfmPfed(@RrX;Ot<|kEic;934LyH`ehP(SoHm8?ZhS9KXe zq`<|#+|$;WmJw_1yyp8=>+nO+1Px<0jM;-T)-ULqDoskT=G&08BJS!AA2|A+@n!P; zC5EIKxOEQ^J2~bu#FRDcNIx9krQs%j2Iwn;Rnu>5WHOD{k9PSuckC5&>fCi-yZ3cn zb~g#qm-~2pK62sa=G-%LRf&0C)z}pzEi4vd?*Iq#-s5Qp%2<169QsAxoUg=_rL=W! zBE-+pYmVk#nNj+dK7-5iV<52LH14a$zLV^TZu;jm@0m7&wqo&s%46XGJG!SCXUDNr zxy*_whf`0@Du2(}Y{H4PqpKmdY740IdBK9Y@7n!}fB$d)8$=(ROkgjYJ_=24^CZ*s zR`*;c?F4LWkKY1HyQ({8L~=#`&t^?TC&{6Uz7upsV}mGWV=kj72$%1B-*?qD?r6~= zFjngP5MWduI-kc!C~|3WWgwTxL-BUgk8l3*I37A;GBeg%flve;X^JGRN{&`&nHbCh zA>Kk_Vqg*?Cy24H8~Ylsu7M^LZcf3lwdajJo$AT)nnCZXH_vApP9EU^YMBqx8l;F_+)lMpcPbVF!U)Cdi`J6xvJ6k{U1!5ix7-Lug2yxt1L{;>^f z+(n0=H#;fSf-$KMYe<4!QS9Bd>l*iLO`BmxCPwcxX=6w7jEHrd&*$^}Oe!-Uc|0D^ z^W*d5JU%`jkH@hx9*@uCf8Y+JS??^TAWhgKu*60X$cp$0H9Z z{d_#1xwu&a*N>;AMcMNzdj_0)rfjtPzGv8qb{)P43$}*0l5n#?7B`#<&$<(0u$n3GPfdo*rOyi;XNV)I}; z4zACLlSe4eh&UF`Gm}f=ah~T|$Q1SJiGTk;|1%xpLkx5Fv}AF4gNTmcGz;Spt+k;| zL$u_X?b#eS%(H|q`hMf4#&%bUjWEDyI}uXOAQ&g}3653cy=!LHc>4TdCY)r8uy2!( zM;^I|12~u`abPCdV3Vdpc8iVPfTFZJ_?=Xo3}0eR?t0LM_69u|27gOP_;h$cW8 z;0xpF821LO^AnOt=-ge^@SK4wftlw3;6Mk4)5V!Eiiunx?e6*66Ek6;-$h^w56|%8djfh2GFO-);SXhZ%u?@k`c3aQWyy$d6z%chQBOFFQd zQ4u1RjX`BHat#F`B96ym&@+m(IpYkH(G+dzv@mZ5&BGK0>^QL5@rzS zS@aIY|MkEBFMwcBcH7ls?YU-baIhN}_&s<)2i#?~mw)V;ck^I_ zvDQK?AdY-~Jf0_qa+AC7FK%<%-Q6tS0WN4}cfBxnjEl9qU2oVJIYfKX9L(;7sv6kF-s1wc86~>6_Sc?&&64KDnh|j#74~%9tPKxldZ<|E zaX=V%z5g+W765uQBE)Wr+eFU_8QxP61fz!IEhJkrg(MZJL<%IVnOmzOS3264YCN;m z@4lee3c}5)%PdT)Wu4}2Z-d4?gXv{-w+qyRN?>lzR?PTN1mkYpo-WHVveRDdq{vbKN~NOHRiD zMfNu&o-q#T2w?V%r5xrSIC#Pb+SE*(CXT)Vv^Uv6voB zhx*hb*2*Kbng`cgSFT3XQXoF6#(Tyz8ttp*dsi0*MKIRk)k4Wc3nN8W+;#=z5DrXe zx4Kw4&83#h-L`E`x4T;D;0nl9zB%y`G1G5YfN%uoLWBH_d`LC0ki833@R$qeV3HzR zawrzHBg_;8a44)`tl$z?T8f#r9r1|c2Z;avU;hhqV6JizVoG?iYtW1%eCqCTN*lbJ z?e2QnpuA@&9qOz*OitOi&{MrR%mE?|S!7PQ*-hi!UuyTe(?u#f$A7F`k;PQtA%yd$ z1pZoz6rlt*wx*Zj7HejVo_B4xIZcBrj`vbx(DRMDW7hP3@6qu4vIvXlXkTNZmuIUz zP$M}c6(ZGLvQNaaI|J#D?Pxb^X=Dzd#$X(V$D@Oeeof6WbGW+t+P8b}G2xirRpYgw zkq5cn?fuNTeRyV6u;*qmco5#4f#eP}xac9Mcr19=Jsz1fkV-n)4coX;i#yE<`OwPz zpyeKDD|a6twWzltaJw6LGK7E!;=s|MJt)X7;$9ALiF8Rsx5dl;{hcPKdE`z{~U%P5^2y>st#Ji8ZpkA~cLog(? z`<4}w5;4TxZ`EPgN*xhz%6y=%z8ihcoD8`4eY=zg#*Hcnr*;5##9en?*Em6kF>?-! ziezYPpy93p7N&`gI1dOwU$bYL_K3G>SsWRtgG+fhZP{!wjNI}9Xg9XoZcJAo%(YX_ zlp_X9(c^m)z+oS`a($9WM=%6VVc%UIL@Y(9-9U@413HGo&D&BKEwDu`7=y=5iJO_}k;9y&G0xG)dI$>^6$FyNOjXZ#Vbb^Bvq!Jl{{Gghe(ox5 z91BLWjVxfM*?0#49LW_Tqg?lNgQ$6{NjWw9-WsnO%nZT-u+ces<}t@~|LG=E;=ElF zE7n?uv3DwwC+~{c`j=XGhLSV$HjYPvtUU(ghBxg|x5!=HsmSA0vZNPrfI{@_se!c%!y(kWR0i@U9=)@+!M7y6-0)##4rUkN zA$n#F_!i_QTI*oXKmy+6#Xt=4=5N1O_nVs&O7bDKyaQNrzRz%vnme{plBgcE2%-&R z326LW)w{T1$fRSc?&+|@HZ?)i21Y54L5$f2)gBDx3Bnhr?gmjwl|9pWEUgf^-oc8l z7jAcRnkg(Q4@B(wnK4{uYeIq!r3x;JBxZ+@84YNxVri<2;~oO9ntk6e#g!mE@4lP1 zREX&2cu)6xGXQTzy+JDTUYqzbfjmug1SQ2Wy=rfTcsvN802FeMBlOJmFfRz^!^p+- zXirh*Sl)pKgcX48PTea(gvlVOrLo%PXr+d|$9OC~xWEO`R*`V8aumD$Qs1mJ&Jc#Z zw~S!CnGFOk%|MH=S(YQ5aRP~`V2?T6YNEoK(vzrJ)zAz){qA;j0DAWU@4zG01Cm|x z%*38eMKq=cgkj?ZYZNt_y_W^NYVYxhg)ZP;6p_-A5(e5Huydv6^>THCCX{Hlonjo= zK+TaeOJ+XA4{!xRc(;v-W0B$eduGr!HuNSK!2RHsIiZykE048SV;esrY!KI(elOhQ zNo)2XlB2Gk_XJE2Y3E>^9%OZyVD@0YwQW+s6#&-fh$C99oG55T0WZLX~O&6J*Y#x!#?(Xb8-aEyW3NxH(cagI z*#ahluwh5#37to=lA>j(|YRq2G zT#WAha*ZKF_vp5zIR5O8|NFoGmvtVI!AZ|Yhynp5Gvg8Gk$EOH(IxFb5Z@nS>VAxDo z884$yzJZdnJ$4EQ^)gH)M{qRhhHyB#G|?Z@?JNM(Wk~T6`F>;qW2AGihO-m_F~>;& z>;pbVR_p-AC6DHi2FfZF{I=!>o~XbKVt^!}%;b}NSU|r?5HpOxAxz+HxIUU)GlnzI^dnrVCfFXE9q;w1)Q^^^UlpTw6M8lKiAPU;X%OZG$ zF?$c7e3I;WbMF{I#h4!N9&g^mn=rfky-Q}o>#&)2Pjt^T08Z?}pqEZXPkx(e&4DWr zB@9Z?I?}*g7pjf1ZvfD794D#0x0QN)S z5WoA+S-n)~-K=GEacsQ~(-JNf!pl8tz@Zd4ca6A^20Y9w~JL9p|(p<5c zOf};iYWYX5N-oAjxVn4x&g9AmYP#AEqfMj3H6*^u@&EiE|9Jq%4J`XGJl!T4lYGCZ z+-idY0QcDFjeYgp#F4SUfqw^Y^6~yf2Bt~^Eb{7Zj{tDyEfn=!)BggyVuU+aLcCli zVQD1K@-=^l!P_G}k^qe}IAcn)}|nByPf#!HeW z$g*q*40xm_PSBmD^$d($`2T5oyB%AaZaFI=#>kqp*SmcH2OwiWT!^(n8{Y?#h0GQb z_ipg_uI^cxBZ7lkzJc!6Y*o$7_<2JACJ64GZK%|Z`90C=h6bRJ1De44pM&*{LWbM_p?U{C}g5cC*I4QI5g)iFj^WgQlQ z%5>waSgM=Cm^s8G=P(}vW9im6D|LH&cFQ8E`%!CKE;}KS=9&S!@?3vld0Fq_)j%ZqYn8dS7zDhv=3oh*! zM}nE2&^$1c5KPEH;{`5fieSrJ%nQ>=gb$A$lFv|jqy)tP*n^oibp@nm>CLI}4XUTc z8g$ge^~|J|AjTfxfHRuRJXHMNI{+3%I)aRN&t;UZ8}vEG-ayh<;j58to^=u;@`Fk#hzwUL|-o-CH`*Memv00F)@5E9|Me>-N#@He3Nm zz?Tf>6PsqQa*YFQINLhbMU|qJ)o(icK6GIPB?_imijIzJ*0eUJJt_cP^#m&!d($_B zgt3{c_~tt7!hX$3mpgMZRbmVI5U;7?e3;B5D@0Dka|RNsjD0Go^)yvjNw5QVEhIvU zh4Us?uhuj0o&dpix6S2FYckIVc})U9Cl1Zy?9 zxbW(}RJXi2Vy}wMZ4U~UPtQ5RWZ!2(Fz3$sk*F@Y9vy^2chkiEJVMhbs*vG*YUTP` z7tV1qDy=NhcVntm%_;?)i8}qh`mI-c&f@KhJ2`ME7>Kw$#HzIf#JDmm!=RFz-oY!+ zMHt$(;~V?RIbf*3LRPQp6o+ZYAEvqfiGmP`MXO$y3jHi2b#+Ta2SpSZ$||Ma)pf04 z!Nhy%ufAY~P+}-m?eUHn^#le;rQ!pb>;jY~-l&uMPEhCy*tCmx9oWAoKb)k*5Je%3D^Wl5lkdrCB?(6#YU0p;?1D=1?&$_z`}6F zg6Fn>kQ!=y`gUo86Wppe@$+D+$i2@@Jp4Gpk;LgOCgM z$vIfC#4>Usprc7PA{o{Sud7mBL36Q`7$@g&meuUB?8|E7$h6~QPFKI0iay$@6h|kC^w>-5HO~M5AOJ~3 zK~%YFv~KK=!QmjT*Cpur;nc94;(W9m;rKiUWVT2-H`!vBk2jdA_sd!tR=xDx?)J=? zL9pt&E?b}3&|Q48iY=^ySB=(H<655uOohj^X|7dFs4kyEHmGIT2|Q zvzmd&2U@i*);{;Q``y3Z7hG5-k57f*cz&3d*oCZW>!K}_T!lkvFf%R%S~kr?^qi;W zv2bN@W8l5VTlxXV_ZMB#3E|-E6Z0aB!7Qm=19Z`@d*V4ku8UXV&u!xFBJ!6y{i1Jf`IeUVk1tjY-!Gzc|2?b84j)R2>#9bQI)8Q& zR#B_K(D2|)6gk;BF%bQ=@rGYYF+QQ zSQtYuT+95}2d8;1*1P4*b>?dkWS(sfuNhETEm1YO43f_smB9i|MRKIy5C}#8z)bnY z>OjQ7lWFBCoT4EIHxSe>36c^!ANwkoWhR_6nXn%LwYi!oLVP(8s`%H&1-aLVPz1}F zLeAhmA0JF=GBbr#>xsP$F>y|Uv=Z(+xKRt#JlI8DdOD{<7IEY)15G0xDK*j|hZ^Py z_?X!d^r~LwxpI~fEf(Lk7snN`;Ajp&x1e;IM;~O=Rpn;q!sv$wiNXe-Tb*mYb!p%K z-@bod{nz`~f2(Sp5faMBPwjRUC8`2rFV1vZ~k_yUFTss=Myw{+=>fEWN82I;z;1DeFyK3oP?lkb>s3Kff8jt6}YDq4k_l^koy7@&<%;DSzrZ$&L+Hd@GL$ z;1C&xpOD?d-uX~JWjYu=9C1{o>IE=3(Mn$;U(=?T0=SDJD^`Yk;%MoCW(hN&GnsSd zJ{hX7hDzwGYS#RGCVRkxDH#Cks*Fz&Y6i)wPNq4Csa;(Z2KZIXBq9dVTTOUMPIe)W81A{|tXJ7t}6G zpg40fjQa$pw1^OgObuyF%`!a7-Yp3%SIrNCz&AHh{kwa+=8P|5)kJ&{P2@=9oO@Pn_fJh(}2H**u zCADxMHjA7Ai3Uey))&<#@GG5LBgu#a$X_efR z_)a>9w)XMB#)^hL)kT`zt%O%_iKM9!dr+J3WYHo6ae#QR1D8|$9MAW@rSW#(PW;J^ zZJ^)=Q35XI>YQt#3EZEbA8(c}W6o^jp+54D!P%tQPG;|;301&qbRL)B$8%yq^~18H z(p&Ws&)gpm>uardjrEzoy-d8$=NS75mpqXpXPB_~bZZRta&;xGsOZYZcr&WH!gFdu zc+VIf`{1x3Tez2|$Y)U%wv(cQxxKe>NUPUK=Ckxp>&0pz>PZe+QkTMbHq1S_J=FTE zUj)8M_p7wZ9&b=tZvr(l-3bfmS1mTI{iR-rlP*og?iB%aA`qBKtEE>32A#49<*eLx(n<8j8G$w>r~ zg?d%JNGh29sm}-ZvD2F}tjxCV3^&GgGev~jreW#cxi;?`Ki(dn`}7%|gw~lu-$=}) zy0!3g?(>sA%4(kI8~bqM0m#5doaU;2-;ZqCi`9i(#Zc5nGZ`Ih^CglqLbsb09)FJ18Q9Id4bY3)*h+h9cmv0~#i-$9h}BnG zSi|Dj&afqRBG6)R1Z>Gbd7z@M6FRlhBiW{{tCraI@8Ka{osOS+DJmGIHPuRYHa&ab zVi?6NY~*B+g8HEPSRTHLcc<9ho5^e zgX*fUm!7t(Nckm)3mI~HX?U;bp$T_QCmN@7&VI zn$ICz(wT=!YMo@Fe2{G*qe( z_w7m~%*-oUPuvT9F6&3PXBbR821YboDitgQjnAX-J{22IBOH>cV<1_9Cd(=oHDDg$ zu*(uTVz3rS1w8P5+{q&M%pkc4RMR_sg2Kr#!9s*2Jr-=k+v*w586%A0%XvX8Vr(l< zf@+~BaGmF6>_ng>fGMU3e+h%fewqWs#SnT_0xy3=1KN)JPc#}ka?{qr7EIGuU_so`i%FPm4sME4sZ5f z%H`uZJCs!LN!`4PodP^@W@>H*e6Ab~fcXKFq0MK@*4iLu>R|WlE*eIz=;HEM>q)UJ zlFz0aW0ylxrOdSj|;vmm;c=u9=*Z#~+#MN7f}fLg#1+ zf<_XI@owV94lqf1DnVu^T)a*WaIfo1Dj#INjOSz~)Qj89Avd*FWdDpmKm`gu$p~SO zopWf=s!UoJE2~~>b?`T;(7&9QP}{S&5AG~&9UWzGj5`>DL;#JtiXc*IvC z^1EdcsS4(dqgt=kOCkNRQWjt)g+7M=41XIX7d_j^4vcd|sV?Sb5t8!(HV-h%f&ESU zs3rnR=EfXO>Cv{jw7TkgeZBs=n2%gszX(6&gbHNO?elj&zrXK&*zfgP7cafUW~}Uf zK(JiSlSYuwvn%=gxc>Ej`yT*Sz~DTBNSG{Q`9b+42xew5CjhP%sLvDa4Gime1-oXu_-p{~Fj~08a>^)Xm|b;< za1&F6b$&EIsKe@Vo)8qqXE@I%5p~dvhtQCU1>VLJ)VV=1?Hn1HwNZxW>;TCFY&^jR zcWHp_4Wv<^wpEkoExqylf>gL9%)#8FZLlrloMUVuqh{21;N*EN*>{Qo?b$Mb5>h!n z9d}hg(YMY}PxcfE4v8$E^RxGyPG%IcGZ-A7Pki{e2~UPhBA@^9iN)N+;8j7+=k|%9qP%;6tm=Ms zHKgZqJ7I)`2URNhBzNG+3aLe@jEO~D^v&8_RsH2N``qfj5=L04zDi%U4FA0c^wJ=x z%-)|*u+(8i=s6fv7nEez_823PO!l&I_*0UgWE6C>UMgG1@gxX-+q-t@PlXCTbOC*d zqP%Lo%5gfWbfHqxni9+P1C`ik<|Jm0 z|6H;#kq7h7>tFxZf42wbZ67{5ob5WOpLy(jGKld# zL$V2!qeoKpGcj+1Nfc0$#x?O)I(<38(9;R@S+(J>uPR zu6K#G7qGBK6|j4o)V}<^Cs@!2|=3tusFRc2XgTQ~-{z!sr0?m(s@f z6t!Cn-*4&7e1cEX3NuN}YeBC|0~YH`l|+u<;K=jw+(4oKqPqCU&cMuY=Z^P1yy2XT zaj$XoGMYI|0rkAG!kr@Zxb_JOytXmka*2JP!YxtPE)vK5yiwZtl)Hjgf=-jkn- zSH1J+xy~*gv53Z;;BaxsS z(yCfNSm>*8?(_E;9(rc`lbBV`?JQKy6!GSpC}Xske&%@mF@JYNEE;^8?^)rM{gaOe zGA%)tVmxxEqy$lTC$xT%o7sgIYo(A=#Lq;+wP*+|W|C>tufX7x?)X?>EvQhd#Wh0w zfjtZ0wvn?+wU#cuU-PRel{Bil_k4ExwO((sX-BxVN~lYzg<_Y&<#oMS@Od0_J&xbR~i=m3lh)@-B0bE6CQf~F)3Mwfk`3cU&qH}!4 zrNiwx(A5prpqJ{ps+XDs^S1B!Z&a%mamh>9LbJv?tN4~@XB;X{k|$XJ^;~9I>4Iu$ zl8g;F#X$KZD7~sAa#liI^K$B3s-=GuEUw{8jB@Y5tXJbwidWV()#`Wx)E7OM@g@@{v_gAC0=48=Ou{bc?AMCDC*bQohlVbng-=c+~V z29KpNb3gW8Jy(%4I51|KkfOdcuNC%N(PAVp17Bc)zYU_A>lAL}&3>UL*!0J=&)}GP zqm=#I`!d4(fDKYOa%Lkoh-82bWn-z9z?rS;E@}o^cwPd@)q3r7Hf{sr zdGEIa9v+7g}&YO?gn^93?!Wx!C%)ezFv1QLF@j}c1>Y0l|Vv0@7pC7RDv#4 zTpniwCji${U%n@ZR?bj4T8OK)q%}T}s0E-I5jutv88qf#L}sn&*NdzU5R9kGk#J7; z@G_rbH4P6nT5MmFH;9GxKq@I0O6WVEGk@nc21!^H!zs~qEnSyhT=mvopO5FBzh1BR ztInBB0`+9|QYqdBZHN(zUcn-<;MaPux6~7_HLm{Ic)HqsUB&)FU5lt%&0e^|cNJgF zCdMcZxpUzC;<;HPj=YmI5cRd{-3ev{{O8>DAOHEk8?LUG`10JrNjfla;?C2hD}eyP zF-4|5uZOHR^+MN^XK*I7lTA1jFwQHA?mbLGuy8VHZa#00pX9iVkosz7+=F#gH#(F9yO5 z7hc@}Z=bhwMGW~o)yW(ySpy6pW&360qPck8m}K8GFP;NA(~RRI|W>)hO9qg3Yz^gzRw=R^arMc z_)%c3@uW^p)n3%GCn+%0!-qP4(US^0aHb*$JW_D(f%*9>OcPb|0&|N zG`t)N0d5kmVurY>q>B{Zt`eh5zb81VD2j&z;|Yz*SB?!N@8rn@k-jbcn0$F zHdZZ`^5F63MuPI2e9gjQK^YkX3h0+oz-XURr zefEGeQ~Q%ABXpj<(*viI$qg4-LS~=ed;3^`{4}qin9M)!^D(NEv*#NX5V+&SxBV>& zs0W8KnNwxL^OOC9zjZhp4s2W1P zpRmdx#4drzWSdIA#KAe<0wu%Pz)37^rxumf5VXDpjm*Lz?l-0Y;ho=HHX4daYJ)pIAuh-uMcX zF(H+mGv{Nl#AhOfeUA6>Q*g8~RcrP8RVa44zK7>v@dkeEVymPaVTRSsovcf`HhmfkUNL&^e=$g+b1R&_U-uCHv&CVX>-jxF1+To)1K%v@Fb-YeJ;4EV=@`|%*SCpKVN-Pe=O*|k>YBpLq5 zE%l%Zh00`-F-AaQ(G#X>wsCuArmH+YmO_Uc2fP0Clw>NR_kPO$+B-aYG6tS7&E@IZ zH;{?ru3c)uzTN%m5Oc_k(L%Snx>pbR<(1C1fLbj>wGfFM-0(I88a4-7k;jUZgP_%Z(j&;ObnaaFQx*U3zx~Guh7FKFu;FbH zq!}h@jRGu`x6!=d2`*0miLTcuOwd!!4V&F%xWY5rg^egCEd)6==nL%a+0&XCa?C|| zx~s?@`D$xA?UBp4M@@_6v4xoNh!W|*Zd8vqRh08VL?EN=-rjwdTf71SV**WSir8b$9EE9*=7?}C6VE*$ z_jr#nyW94xo+vg z;3?*4ce=V+<|(X@?eqrv4ahnjg~9BUI|0HvI(2x?oki?RN`w)- zd$@0Tm)SZQljvk*D5rums&+@9;AZA}ePg0-T8HRjF0O?F054Hi&2)gVM#{mr2V{_) zQHjMlWT^o#UJS{I=OrrDK^T3pNE6*v7S@p~XJvHrx;HyC?J3DKjfi6%UAuQJ<`L)M zh5Z3K&+|B6=zBgtI2em5G-fvr&N@2}VY=&6QW@wQEioekI0Bt@34yh!@m;;s2-xDm zrSbdV4YQ|%NT_=MzUT8n&EC;stVliBMG7;04GA448`LOi7*+QLgwjh*vpE`d$2b@X zUi%(+k?<42Ml~Fnk{WG_IKam2c`W&|yC2Egpl0@5S5I4PGGEBA3}Ehirn#0CFj-Z6 zz>0bpCCnI0jH0~|yoikB&=DZVTWha{pnB%>^ose9-CrELduSMa-@dG@d)~i4*Y&yU z{(P>htE>0!lBGrQbNvn%Nvt3nod#f??SSs$RmK`DR=t(zW(PmpuNtidFHl>fkoD~Vs z_KShq*HyoGEZ|ldz+eOXV^5vIzB$_lA{ERLgFYryTyg*aAOJ~3K~$++@|TcYK`iP- z08>)fht3zY4XLxfV<26uw`!S<&hI{mE%1kry z++=BNY-6N_IKL-mo?wzKKY8RdPsGX`GS&j^`Z3~0^zNC}A+9`hfb?R84(8F11^)?% z+abiUs00?t_Ep`1jzEN`IaI6+B^vkGtYb;+-9JXA&ht1nbbam^$NF}jL2}9w%tOb4 z;l6%qZnUP!aIP&FLC)UorlngGb}~9r8716u$PkfFMvc#wG4_SOf36+|Uqp)JIu!?Y zT^~LwEb;`=eX(0y?r0~XRto&STrLC&Z#Xhx%-lb~rs$rb;cqyIiz#$_E`u4zL`*kW zsf)AeO*Ao9Iv2E_GjHZAsH%Nm+vox8o!-_tTrsdk<$C;=QJ8INO%dVa6ojr|+n{ch%MR-EwvJ&s|YlcNbgp@%!`l-FJQPdAmMcw?7|uF~sJsY8%wjOhm6J zb&a*%_pbYm>)u&oL_epf`xE5t$hG0zCNOB4 za;1kSujxY-_bjjOB#Pho8di4F# z%3vfMnw+kA8Y4L2kb^-Y7D<{B3Bgn%SbiEt8JI7!$3MkKqCq@!2a>Ut&x$eGjtDdn-3Eo098P$zd0Aw_KHZT<))A4{k}V@H>>S{LPwa< zHPR>okdb>=-#16y?H*E=V1kd+Im{FrWt3(LphjR@dZy=?wS8?rZdb7Ae*XG4GWv+1 z7lOxXlN}kZy1S=Owuy-eD&lJ~YP!?QhFxr7INdWl7c&oIX21eUgD-KORCYj|)6w}7 z@zwn{cHmGHG&A77l+uydd(SRH+-DlrH5VfeiE#J5FWZZZ;h4A4f!A7Jl4}>_BVGwX zTUduJwfpQY!BKtyMYg83ALc>&`i_4dI=Nsi4%6kZ%ii!}$bff;zV%wvjVgv#z5<$E z^bPrD(9EEx{U{Si7-$ZE_Wsel4jpsfcSYoi)ObJKi3>fDh7rLpASi_fyjc4QBg|k1 z?3I$7=wLcR?10Rppa=ywF&YRlh=ro6!7Rh`fenSdiN*K_-QK_Vr|QFfefItS{EnZW z-=F@g_c`77{b50wP6V3R-Fs?xZOocI_pS}OcWOcBukr+O|OZk65xgYkSC6WVeKSxWL1VCv4OR z#Ke3&h;_ulbcMQ)BaS7s<%Y*{9E7K9u*mGEE`{O13gvX0pk~X!WD!WVm2AlOp@0KyO0-bc<&|Pks0#G&k@IwT&yf4(%JQS~(z1w(x zY8&R@)GU#R{1eNwB8NfElEEp?0fh(J4?z8PEHcGUQDoCK;Bea*ADARX5vtt{j6SCprzUievkEfs1mlSpi{hWPoY+`6A;?xvzNn=y!QGr_obI~_v4-N=} z0wg3M5FsfNn5i2(WDI`O&%skrn62t*4-rY*`*VAGxVkUY9_8fCDe2{a>k1pT#eoV| zk{b08hiyem!6@KuHxMB)3>X8q0ak=PoMt8f`$B5&sP~WgZUy)}f3%JzEp89AU1NeX zeK*A9TFHp%!Dzgcp_st!;>=;5T6b_0%VOQ-{ddO)w|uBt5! z8z2VixlIESnt4VX3awBVuKTtj23-5Tr+X$m$@vWKF(mb%`gi#rfLbf#IP`tyI^~3C z-|x4>nc?l8wnofp?`o-z6%_3TTIn(8+MW`zD1nFrdR>FdGk5h}t!gZHKoRFJI#pM! z)_Qekf7SZ9*)3Z^ssiZ?9e<+*T~mHnNoToRWwYqOlIug&G^s%>3<^*DFXz{ z^pj;(!lX^b3Q!nA&p)%=YqoKLj>N$Mj){P88qh(mWRnC{5WOM{6d*Xddgh95$dCyR zs>)+`^myD-xMS2#a}rdelP+Q0NBg$-_?WJka*C|rgG2+WNsTdk7>8E=fk^AJF*Jst zi9PdJ83}_tv{G(yU`#E>2}M-X?^_qh6*q+hl6wOl(jq%CWfe-=TuqjplSiytmgZ$7 zyde?Za}T+K%0_^*umg3_oGb#U?kV$6mn14!1r`WbsD!mATU=TrF?%%!$*6-x`lEC@ z6{~f4KSkVOr$P6!(L4gr-B7fN8A5&0S5K5N*oq8+1Lq>l3ZSdD_ZLYBfz!AL-Ci6r z4<1eakkdMvhhr>y%(410%>=kWOyAzE#<1HP4KQ#3#*~;nVQ(oIM>tY$PS1ovhsh)q zxN6i5z+7j_njuXpil3@oO&j!7dWPy#=NYFWmwD+fAW_r6lq!cU9KyMf`i#0-Om%1G-#&LueXhodXc=dUFM=tk;>&AXoUZo5zr7AJfZEhPWU}pCRniQ5N zHOjEh&^li`b3!X(6Vxm&F-(vF#JBTUX|)ShLZksX6bh0~L}X;9BeD33l?r?*S7zoM zr;a1fjF*nZC2FnLng3Yv_534`$vCTjHC6Q{OQ2B?~Ah-6^#+DVmGMo)s!*)$Go%xEu z|2P*N-fmo&ttUq)%G)l+4eqC?vCZV>c;A4m2HlRC9@hXPSNx_PAX ziw5Gbe!+yL;}|>xcLUTTuW1hQ(bi#ohrUgDA=ZE!t9U&7Qo5R@pd9~$3mAn?1jMx* z#4gIWr*E^Z1HpLo%>_{k2L5NX?8)!j{>1cnMg8+J&RV&l=>luwhW4|MtGVqB#uIGa z+?JtZ^pxKQNZ`aeS47NVn!4n9j=Rm%SdM}Bw1*4GHVQ(^_)M5uhFy2_Sqp{%Z`F|T zWY0U+%>swRZm^AMKbt*E;1bAwzECmRktKX}6ZVP_HirP(Wxpm9GiXhJ=6-v}P-Ku# z2dyIxIXw?`8cHyM7J$em1_-I)3D1e~9NiMiiberWykd!h@YUAdzn}HyXT z#lyrQq>h2;EdzWddCKHetLY{Hc+Y1%Nuax1CL*W<1w~ql7*Y{0 zhN|}M8?%FQtgg)fPr1jp6?2}OfcLpV=T~Tf7*24-|7hyEJ$~ia>sZ6yjr*SaDmQ0( zPr1eT_Jl15`k_9sm>JpNQ^kF79m4p&uYlXOaZs=jli5={#?dm5@7GFn*G75fK^sZV zzP85!LowfRK>5c}W7B#V;~Xp@MVTkh#U&!C$@H=Q*U%T{vPBq8+gUUG9!3?Zd9*LF9$B}s)!GM|1D6w>|T*%jC*xe4bH23B4#x$*r zIFCFX+A9q5ZVs%q2x_jtS^S=EcN8r|l@@=s_xsR@HYq<))ujdoe&3 zpl;e;fZRRH{8oMj7aUbYN%4}D@Os69^jyW!3vWb2?Y>EZOjf!9mBHj@Jo5v zL@mU2UgQ$r=sj14@N_@O2r9*hMJT*Ej?vR*NnQ~*oJOoXNB;B%oj_0Y)7#O8i;BpX zhnVeX^^r}phZ)?S59W+$Tfic!Z_Tsuw5Sr-+%I4|Ie5zSTsUVja?1?RGKL~ki@ne- zw(J%W8J_Zia_lK}@d@I~xJ?Feii4b>H<23sU4}8H_)@Dh{xLyYFHc>zIAH%AgUUV7o9nC9c{) zuJg4L^4|MXXe2{Eym!W(k3eau{pq=-l}`|)dY)W41Pxj4C9h0QKAoAtj5rcY3{6jU z!4%JRygr5P%43~t;ph&`&Fkm7Il~#4Ua`1Vo8ERga3!blP~+9rjCe^K_&l$Hn2*Do zCKPevB+1$L+?NZH{64>rh#nFvf}9~DzfNZKjBA8Cjvs0DmW!6hmV+qw1*1mefHrWM zhZcjDj=}2go_qG}D$g+f7=42&2Q{F*ZJQ7THtH_p6ByTEtd)#&;l(3#=uobuSQ2#5 z$}eTm!^jYmewvF?m}ZRGyZ7Dq_5S_2ZX9`hpONcSoZQ;~{eAsx9c!HsIQ7+{C^+4p z^3_Pd?Q7D)QDsWEU-@5uhdt}yp4hwlzF?b%KB{3YoELa|mQ(O%@642@_YH%2BnoJk zIP4U7T3S(i0C3Rmt;im=TYx?73P_r_#)kPeH+ ztRd|JXNnC_FU_7k&X5j{h8HoYF)OE;N0Xjrq9N}g4_ijfa{!E>rv}p+7@TCN@}Hz>H_Gd9ySWtuQtKCDdK0$u13~5HZ|kImHIrWDUm1TWt#+b2vt-!?xW88uK+lBZN(H za6IK54Y&qg@-jBMRmGGNJw(6Bjea^8Zr96b&fEQDCVB?LCHKs}n1dv%C>dn$c`3MZ zO1$={6+FP=w4%)*$>Sf~H@o~DgST(BxPLqmE%MT6cpy&z>Bd|HvJB#pgn$@i#gKwg z>|+9h(ey-UNpm$GFklK2yv1wtk-R2E2+1 z9Mp*Pw5I73JQ+vu&1=vYpIAqzbepq@7#_79x&tfpH17mFf#Xe%+b?!zlI6T68U7Kf<8 z*UHZJ5PMaKO7(}RdipZ={4asT{5?~g#iebc(UYv;qpj{RPRw}XRsfCoJzd^}kFI;% z#8>2|fimNVi17hBK?ey8H=>MlAReZY9;{89oDE0sW;8&H zJmO{c^!vK*_s_K*o5woOUs|Mizu7+>*z1>HoW5P?b)p+rpQrq<_UFUGyzEWiuMDho zUHSJlO7)Ga?=DTt{B863T~;`!x-^x>8>qBOUo@+k19o3Vm1(}fp-J_><;)b))eJ- z^{8-j@8Q10WdsRjd0IR&*~#BN;8?z{$J;$AcC6mBY0!fwNZBB>NMZ&UCl1&8l9GAVyv7G>`}&W@aFs z3jtrdtis}!IZXd~OCP-)=!>qau$) zU!YfUKAs#V4>2=T3*}pU$_qi^E)#X!+Vox}*HS)4j(=VH$I>{PpuX7a@MfYYOG}iwsq0 z-vf-2PV(t*^dFTEuYflKhNDabVH4h|9Mg5V3r3UHu`q~kT%IfE^~Zh@Utn-PMLyIC zeb`Itw2hY(88iLUo*;PyAJ!!S9__E0UGTyzRx#R>91v4MQ~pHi$OF8j<#`R>S6%N9 z@}T&yQR-j(P7wF|7JJ`i1UGL!`2)W}HelQ&6fZ@b94+SEA6E6(dhsY;HPC#GFHeK= z;qK*`j=wSJdC^!HdAQ;XsLJ}<$Jh1qGw-`!A=~|7WJa>@c7TL$KNXN1Th0}_Gvn%F2mVWA*8iRKc zw5FSiiOac+j#s^_+$`xk^C4lwS3q3>Lyr<3&=luGCU|4y8vGv6K2Fv;m#U6 zcFB+Bvaa?hL|tHLAa6ZMT~==M05-2m0}$3E#O6)<;&2`&cO=2q^d_; zp3f;R(kTxuMqYoxkqk#fG8b`P~qW16Z zH*<^>8c?MO0!Ik#o@mE0(*sXlLn7BBU&8KgNc=-dJoW57IL?j(P%qgeivACSYp)Bn zH8PJz5<8!8XtCT-Sj_4q#?)-gYM3g zdq0h)VF|Wm6u@%BS3=4rL_LjZ(H4q@Vd|)o(f?10ws1{%iy^hcp?`j!$1P9;c zwg*n|aL}F+hZwHzR+sXP_=Wyw@ani{iZ1OLC8Ip>{qox4ZL=ME{SpeCuh)7mEcrWs z@99r}COUuTaRv_I8n7-*O1=E zxl!rYg3UgLV-A_qpwzS8)81Cx==b~jO!*i=f@8HZNX^)XIT4#ud)$LNCXIj0OvI;4 z-3fo$*ZsL*k{kWi$07}EUp0-!F!4e1n#|1z3^ZMnt_(H!UPN=6D;w8bZA}e(+hZAA z%LmXqTNi2sd}F3F2;94`5hBifsmp);T@hR1zG4PX8^o=N85ojxjmr%csNEhx6<1SZ zX^K0{m`M>auhfOP+pFwyEd~R#&3%k|ch%T#^bA8zcY~98jL>y&_r^x=Kvda2EbqIf zI~cV3(^RPo3hem8VctCsbN9aw)|p4H9BQrm*NJId_SY9U*iFnW&z{u{v!%>X&A86R zG^$YI|2#%Fun~v%y6PHys26`$Dhhj-xo6nDXHRubfX7n^5Szbcml)NU{-nY@5Fe55 z7hIShOD&;h>K@7GO6%}~YUV>L6|TFc3k*k`%H@G^Y za;Qj5t6muF`T6a>DAL5&7Ltv<3ly1D)Nl0NbyE{K0F58j<0p7yR&Vbb;`a2?KO?K> z+WH5(Ty6X^oS5ogW_wR1G9g;LY&ig({<&+lHtABW}Pl&jG zuKw)bsjn~wx4G7FoGZsIMt;9yX}rtG{EB*tfMjB3m`D3%SLQyyenDM-T{L0dx9{kG zd=+hBf$iDYi-{4{p<(F_jP(_`b__|@7ocl5(iU7l6QVtED*%&J_q zOWZd4$_PdLt}SYXFVu#NBRubN(38VhOULp!5o0%KS=n8E zj*cd};$=X%o1=}pWUbc%7$f}xuWiq6^xo8zU7wB1T~B*)c~1j8ioAAde!tZPX{P!U+83^4qDe>a221p)q$6;!@7ue)@QgIin8gcjieiyL0 zW8xKSCVuwDM5Ly!P0!l*r)>GxYb!%uM?LcwtH$Rn?)zQ;4aRkKcb^sK$(h53@>)qs z-g8%s;TZJNEq{LYo;7==9JrkPI{5l#tQa6F55#1fohGyD+V>ul`36wbjL>9`dEJ-1 z;&mRyQ@y1(kIj$AfwdUf(C_v+*PtA+{X%2(u6%nY_`*^N6uHx75X(9DI6n$WhxQ+NO$_z`eUw3%v$KfO#O zXVC|`3RlQ_BGgX)|1`Z_t|Upaq$i@PW*%`etGe$c2H+FHH*SV2;nD}>%yd`giEz^& z;X~A2fddYQxtXcR_xZ+T_RHc4MUmKdj6L-8zMHrQows4SNFsxffn{6#9ptzw)YT#bL51(OGRO}H{=(gF)3EAYgqnBONXs5vZD<>}RZdfXTp;rM zv6sDeGqYjzTw$Jz)$%h4Cm2&rN-G9phjuuQH(x*!PU3!l(s`P2 ztUjEzxkj2k19Oiszc8hIC&>NSxU0{7;t|(=_+tq(Hr&qC9*G(~8yDggFzZWCdwl)z zcRiBA9MPM8_iKm4TjiL{~E&Aat->_+)WSEr>F|dXbxynpeLSgEAS=@ zcEPw{@d;kSK(*}TTZQemROT7Oz(>)ctk+$4S2Y^z-`4|IEU(M4?V7=ZAMU|i{P{oT{CBTXy$?3q*2bMFBv5@a@ zr|v9NZ?o2>*)uew(^5;Q4-}$lG1|i$m6OQ`>3%H3D z9#W6I^1iD)w)Z7a?^JzLXlaz@;AbW9?Ox|Tue(k+@WECb*|4pPKw-jHGCH_cfCf(a zCPhsfbE+FF%*<@Vwv9TEBn<`FH~fS_#;k#~MB%&52`2))XX?CMHseCOvQAHm-PJwH zd7XD+*5-CLK1Oe|wJs!aMkd3g<_y>G$5#YF!khO!cQ*YDF!c$mEYham1V%aIwk@to zlQ9kjR&cr};gGRLM=}^@y>x94umD-zl~Y`Cv5VIifY-myxqYuiJg5FDe9IqL5AT=F zf-vW;3}0ZF8jYK4x;$%!{mQ=PdNMn?b^y^P<8lb}5_lu%f-*TIV@$fB;#AsJr%SVq%Defh zQ4=mRd{lPqyH!0-2Uoce>}j1_CriO=2)x~Gxs4i9(j78?%WQJDnw=lTp8)C|W|W_{ zp2Ip4a%0tCbZ55;IPeH;&la)_#Nb1)L;HFg(Np4YvjE`R+!s|Qu}#**$-L?Wd@k;= z0pHzm=f2N(N`cF3{+&a+H<~igHr=i06OQdm*!Pq>pO-Rt(u|MRxh3a?#@I1m)nCJ7 zla;XRi$DJJw(9`T{;KN%Q)mCmb-z#e4Q{2V98A7`tNVe)dAE51)8j3JzZhAy`DOL> z-q`Rfe7RXQTGUAm$k$-VZh7Te1t~GrH_wqwRtd0A_)bj ze%QR*UVk^{1vk?+jytLi(&ZY^kewLvk{@`R`6_F8*meqztjA-MIHzGv!^3}AT+7Dd zyy9Bbd*wi$vc5aB&zFDN%+dGsCx zA08LCMvaQ?Uv9bucwD;*T}830;{H8pLrYC}=HExp$&m?ZyfqlyP#q-_lW|Z0)<-~& zme?TuTE^y4Zq_Ki(q465-S`$WOYcfhc>ZDk`R9*o&+p&g_iGJkYt|kE z?5*z`_5S_7zpt<7BL->WWl;-F8X|1EdGTpr$VRHb!?wDG7n{K7qk@B)&~lsu25fJN z{m@u6=I+58jSlm!d7ZXUM2(!7RF|~1-T#Yh2#un8nm2l*o7S7Q3ZKk3ri3i zP5{a_m&WkDLIO_#Vgw0JPjw$vXBjSEn;#;oeUY6hL4GH6CO~n%GrQ!d7~ji@`uGt! zA<~~m!-AocSt%9TXSuCUG}C&#sd@JqfbHE=GkH$EM;jLDb(R~9GhkY(hZ7F#(MQu{ z^N}}1cKCseydo53)Z>_@e|PJ9%bc3YQO>LS?stH%uVs!$s#`Bk(3^hD9u7DTEIe#U zgyTDQobWd_BM`oJf`2nXvQnsUj1_73>))O0l*RRqYhCt`>h=EX{cUS=KVDPcIi53J zhKl#CxBP-32A|TuYvxSq>OA}Asok<=w3zN+^`4%%pD3mVf8}Gn_Y;oq`6lo zr(64H{8cprH#3v$MTFI|nZ9$x9RO$UqiQJdZRv>pFkUNQTmu8fd=F#*X343Vt|Nw+ z?2%s?@+z0w4pg+Txd_@NoR2s|vN!Y?T*5m51DE|MUBN{oIlGect(7d7p_9 zP@10bbOTFuspDLb1}T_K|=Hh2-^N;q1RH>O~atbFw^ zKM*l3eV`n#YL1x)oN%Q?T428OB%Ho(46kLepCxrACNP8bCV^hC(Bj&}be;QE8u25P ztx{2w=EldP|CZ1j$F0i-ovE+D^~dFUV701+$y4|H{*)Y|_fS$n_PzQG5%7}()>O>F zL4M@Xr^jIWwtbCg-{1Z}-$in#MF|S`e%ANvcYmMQr_Fv5wkh<;2Ie-m*~GOBtUk^O zE4i&%=yNK8komST(Do->oO?d4pEBy|jl7uWecz3Ho2`ZJmZ|@yLP9Rf)=^z)OFeVX z&=$d((3o!+fWk}j?F`EAUZz~K&i(GHEbJMh8a6^X?Y&e3vN<-vwa4q! zTaJm3vO5IG?=b|28RIJ6j5v+tgfEZkItK%UJyzwb-h)6}7eGTf2#nAc4Nr*t{o91=aWVG&eVdP856TUh-E}KA*F~?@ zDA@OyXC0G8ggHm6bB68r=3lH&Q+w9#WpfN}=Ko_}J!5|T6#)mcW+u5Demjf`bbatZF~M+u7IV-$lw-oY zYv9hXyT?U4DhNBCR9PO8qnT!#Rt#y9S-y0_IMRVxI1KH!f>t^p*c=%&&0prAg*F{) z&y;5Ra}WCgz&1y~n9#)SE5t?D4DJ|c6F@qYe9EM%%H0$gUj@z#MpJgPsE3} zWM%QjrQ5wUQ+bzKkSp8>U{Z2Y9`O;ghyD2Z$7Qih#(-4QuUFT+2dZyJ-Ga%j>zsQ; z0s$7fN3751d#qLCh6%dS#^!RTnYuaRz))xm2yt)5P+Em`%`B)e3;HsO-l7kCDyJcL zw<(TBEgR6?=uVpfddA!g(fq`Pj0?_fpnLUDZ9xn$j2TRY%^bwwvd6XJOrE=ZhE8BP z%|pH%3v=SD?S1+KB@3Wj4G#-bgyRD~f}>^3+L`)A=lo z)dxx$&IG1qbc5+wXb|fI>~o`Y&tKRadw%un+^_NWKu>9mKiPTgoirq6GM%&m7m@>f zbaBxUC}GL)Uw$K9(+tlaXors{*ss+eC=`FVhjj~tc5eW52 z0NfsH@5ffRC_n1CL38PJb&ezK>0C>P-tACWn@J{fb9p-zS<^irCFgdVk-lJ>u$!Zb zn#+B=vF*j;BqTi(n!2JS&Kjh!~3XicBs_(u~cQAup)1CCMW;C-B(cO4wsoM{LH zv!eZB_7xoWDRifa4?c=G6Uu44U1h=UnTk|5QmMRevA^akCDjR)-d1->Q+qJClQPY@ zI|uZpP3luw_?zxE2!Gwjz86@reXr+`9lj!Lg*tm+V?RvTl=ImWyx!#7Ji?_pr`TyZ zuP_B|?5o_@IeNiN;$8KYxYqZMhPDw>SGy$A01Q(s%89`Y++|JqV{5HtEe8-UVX78j zG4S|^BC5tQAg56jgL^&`?Y5aki^p}FtKXe=dS`2sEy4J z8N+&>qcnD@N(@~ZV3~^*1wKNZ%;7dH(YQ2|O)4-SIUxlM{edt=Lkr|A2bLSGhw#lH zrzX1=d_?9r!vvqEJqUMMg~2+EkYgJ5F*+=Wuut4&9`dx6O>gbkbetX~Tprr7*9Jm( zKAeb>%X(4XF$%3!dxrnszwgrqk!r{nhdHhe50aR$!eSxg-OV2Rt6!@v@aJ`PTyrfl z-lZ(skvp(1aFlscHKZs5OEEgO9`||%W|ISwrHr$7JYqktoUv=!8Hw$4Gsgd8e>G4V z$FQjgd3g?Ct#};e`N-JNrL_?D@$!U}X7)hOFEu73f9&f~=lA{VN~vw^J84m=JO$D> z-c!VL5WuU*;g4`R%f*A4Nj4Px;LCiQV~uwMb87;A`3L=75Np(rUyG_F$Ih@`# zBHh{toV6)TC&L~canAug!gfrIb5N^Q?`uV4O)PZP+1&$LEx~%~=`!;f1Eofv;AXL(nD@Og^xAGZaUY6Wij*>_|qKYpyA*N?|qQvI*LzW@8b z-tSimam+sPWD9fD5R10@K9CgM)ljU5%SG<}FtEE}?HGYTwle!^1H`~+_^_MV;;6`! zJLYnk#{o0@K{7a9-WB_Oq*ui zuy$d(?|cpX`HToB*0NeL(~+ei6rn+%93%ZK%bfmrnxJ`APw?RvvflS!=iKksg#Y7uY{t>t1UakJnxtkuuAkSk)55(M z!Kf*sc0?@a3h#Cl40(^u_4xUCe3?r3d6P93-Bd$h*$9HZ=tRHIYfffQ-^m2`TILJ1 zbxp(y#MJ-lEYriC7HyQzc1jq7NN-vJL@Xae<^a=IgberVuS%oac3%7G8;)82bgx0m z0@&yXzIr+fAPAp=p+Vf@e8}!N%lB~AIXb8M&=D7A;O(&>8rsSCM=K&=s5>#ZcF2r| zT|J|34t~8A|NQZMTwh<$wYT2ib)Wmb=hhl;5{_u43i3rsz*~=Mbxpx(D1rWwHDzaZ zcE`h4grwPny{s8NFnmgS=ASH2Hr?sIXCSX;%n_~N*O1zUcH+^kIs=OORyb(X3-g7% zWUro6BLa?PW*Uuxyt^rE`@or?QZ__On#@imvM9FZ8@vdVdNd2+4GLq{I;PV(G}HB} z`ZZ?_A^l=4$jKf60xe#7-j)CS^YP=K%kk*@e)TMEY|e)}%^}-h#Yy8H%~Y{^AU&z6 zn6chF9&6EO-ppM0J$6nk0}6mf$}WyPp$8`^5-!W3W{6MI=w%Sf-^;soUTlgTz=DMVMjIj2n)bk(h(-(;VTV`P#CW>MtJ}=M*@oW8|#oip#A{dVhEI9XLMox#SZG zSiqMgs9(v^7*7q}aHHTAAS+&F=--;^;}YQmryD+iYB~a-P=d=k_pO8{8o44R%~V z8TX+L!n8$$ZI2k;rGirPcx4lBiRitb-mQH3^@lyj!`)_xBMUb#n+eziFzXT5mrw6= zyf6$8JfYv_{#^UgmAT>~5DIsv|u%7sF?ox>{%1 z!jy;gwP3-jQ(* zf2%%u&IV_s*1)C1bQmD?{gB%CaV|`pvS9%6SoKr(R_m@Ap%dPShqvSsS5{0EV3ce5 zz?lgVMuvPb01nb5{`?^6?z;2+7OYk72{&Y_Tb-XW}w# zPq&J7h5s-kU6MRbYn{9Ne9OYFkll9L7nkieVA>QtmTc54H>aEDwR-w#>JOFhyiY?6 zUj$5CA#R5IV_m2EuHz|k@(pu5f114^nV!{xokb^B5j=BKvS|4SjVy0(k(wD5MnmM+ANId86vd`4UFxGDdXQz!=$6@=r z=w67wj-A@(=)Q~LYcDP<75cU%KK6%OXMx9`4#fKEF{(IKc46&CxW{!pPVKJ0;GKP` zHS2BhW34fy%wS*c0j@z;X;}NQR(uV;t!G{m9OP8V37eJKOW33H`*nA=>@hI3nN68S zt~}jdv8!I_+ilw*EcW%^6rt$hZ3^I@?g-rCKd`j>MLyf_*ZI{nQ@J6y2CD40=zcNm zRnEG-HSX#^?4H7R44>DZSiADb;LUE0R!4Ddm`r(4{%7LwPXy}ldn#2ZSB z%f!d_eK~t_FqrD9^EYyhTsIPVOD!K_A)A`^PXpPF2rca8?jnI>u!gc;G|WPTjhlH| zJfN`GYvzoG zvutciNAk7S$_H|^z7w7A*29c;31jwl2W=WGxy2k-cW7Nt8wa@ea=rw(!c;9clUSV{ zrq&)_&k#(N#-elkbGhF$0}kB=&XzviRsF^r^i%7>u;tB;7|&sOJGf^ezNaqD)7MQq zzBpX{n(BffGn5>#Xc0*D6@?KBdwMJ05x)+z4sNH6pfSJKFh||UBT7X%4y|U zGwGZd&ioZEhzOAg1B|wA%%Ml@@f0SUe$Q@h*60RE#s`tsh6OpSLZ)Rftij(hw;pQr z;gu4f3@-WOq3!;*wIi%=hJ3p<*U$H><{V1nD^_u-UV?z_1HeTzV^Q2algJLUal22n!I0Fx&2}O z$Wi@zn`5v2xr6L^)o9Fd`@8lIv+DcpW%dCh(q=mB4X0I_Yz(G)&O8jm%b!2~*p8-S zZkHT?(B^T$`51FT-^e~C{qtHF`&Z*>^R&S5obIEsqQ9qbYusgAGJ9vH5+3Yzuf)tL zIMc#G^RBvYR#_XJSHmt|)aouFKk6l4Y_3?#qRy?mhF5@VB+5qYIIR{*KHJ0mTlw_< zQ+9G%Rz_60I0>zt3fDt5+R)Kz)1o6=`y;Vwjz&%ly=RCDUQrlG-%Bn1YXcefM~ zwzAJVe@$PS4O7HoOk4~%`|wnoA9}xx7P07)Izv>jbmqIOwmtlDwJ-;b8YGmoedapn zy)Qlj`F+0gH1x@VXvSD!!bmKGC^~5thJ_gomM=HeIa#n}fK}#Dh@mHBY!16P*lrO} zYXrEhwbm0te<}*2oStUQ8gSAGdwe}@JuL9JZ0!g938$D5^2Gtc@Gy+^Ndk12y#Y@3 zsbjRYLX!G!&P+1rigi70SpXw%=dwXJsWha-nWCkfAMF`E+#5Zrqe+QoX8s8L;Y80} zogVRA=B$|ltV;L$U+4TaYMKc)AF$VW>$lL0yV`GKUkW~nABBcx>@asq>aM!G(KFqh zZ>#(JvG~0HAxK^p#_<_4_%UOKV{wPC9Wa>tx}F{$L|mG9y9ut3$BaWVlXq67*LmrF1-D_btLmLSwAc&Raw`BVOYNO+;!rkfSyq3%O-v)Qd1u}$KaUVoI(ki=KI>Jw z%Ou&F>-xjYnk6m6gO1KR*&-)jd5%b^3^%|;)GpdU2Zgp0i!W^9uu8tV-vh~A1 zq-}YZj}|}pKL(AXo$piUEqparjW>6@q~Tm`SB+qx?A*+8aSf=5SQ|ZEvHc(W>qk7U zY24o(>yPKx9DZXxy{rbJ=?5?ZiuQpH6HH?snC7YRU_=!Ym*F&n_5@S`?Yzzq7mV|NQe2f9z{o zY35_z(4}@pMI&!yD8h|Ji_601Rt%PPPMvOAeL7eh=n&|52ve*v(_EI;ER5U)M;A{w zO+ePX^X4SEUu}h6VSrQpwPFbGv)ae(c06RQl@jj1T3GuBg%?4X#@c5sUwG=|i@=&O zd6{dDN==Pt)lM$D@Oksx!+S`#=Z;~jB@EGkXtKd$EUSUZYgh0`?27&F@;uS1J~)^a zWq1Gv{1#wbP<83l9MNc*XHdZ(nmK2LSY;jjG#+Kv+G|#2pKP@?Gz)GiWv^$tzdotL z_xf9X0($ihBY%!kUM8mxXJ)*)5wD(Zv9i^Q>vA{L2+q*J3Q_SX*?%M~7GCmzeYxk{ zzfLxGm>UM48Ts}#TFkZp03ZNKL_t&<87*3xhBab+Dg6EZjh@918x7aOq^czrMEYYZ zGLP)HGpc;LxjzcAq(xP$s#_K$C`>w{Xj?>QJ>G=#(j&E)<4{@oZNj3E0iY48Z{ z$B*ZapZ|YnU%DhYj-&YjJS0CNGPA0>r^kAav9W!CegB8qA8Ru^Gu>5{nGxC1x0Q)}79+W6etB4LO6PoO2Q)1xpV16eD}b&>VTl7V<{i5Iau+nUskeB_SgY zDfW^>%FZyehxUx5IE(QH38#iywjzkOyPw%L*_aUSY0xY{%Z7d9ot{p8ACg9-*1{`g zlBA+Sq{b*2CNdTz#u>3G#*l-8&h4j{>xr{}e~(!b8>{TSRl^K!NUg;H$^ffcLtvjp zlmS*NNm5R*YK<@%fiu>6gOrCpsA2Yoh;(}G2C31MoIw&6BcRx+sIVVMl+{HgmBCO} zk*t9-26a&~b9PLW)tbh;3nQ~pp=^@zbjm~|+0cnB83zNEA;+ACoFqqUsqv?idGY7Q zJA>r=p_3e%rh#b)opWtt{eaGDaw_0xto5$RIVf{7L>!?Z4z>?DqW{!5Ruzd64F>j2 zZW=X8$^k4n8ArzX7q-gIXyhaj145)s7A6fL7-L`fz}t%#YZ+wWJ-1C` zEFREL4npk7kGD7-N_=a7^MY-NyabIg)6)S*>Noa0Fo!uU2uaAxsz7l@*j?1sKa zn`NvB07zhBzzRjB&`SaDD-hI^WH1RDC7J-^h)ynBRglY2l}Of*We27ZA$<^%kQ^~J zjj9*{3nezjDoO17q=OJF!!SgcoFb`&Ox`!fP!!`V&P2g`3o+e283uVq%r@)EQ^@Fs zKuvPis4?8Cai>$`8pZwn{c#@z*|ua8iBccBm~QUWWO!C?E=?0$7DZ#iO+tUe$uS_| zo{@dqyfhbB>0^}sX4|GwdN z*(Rq!Bx#IElpT>#Xv4-*jtx8GG|`Y^PBAGbu|sB0wvnJ+*JTq-QUI`?MO2OPWT**4 zx(Crr)>>nTRfQOIVrv^6tQYgY|MfNHlrgT^d1hyfT4Ox7uxy-A$}wbnKEJ%aHVxfAj0E2)OGr8AU1}ab(Bp`NR%@VtYlP#$hgMkN9f=Bs9CJC7+4O4KAGO5S;QHewmnTnUy$h#O*N zYb5FY{rx@kz2qULm{iq69iV{AJ@?(COJNA9%Q>iM)|A2!dL&V!0S16Ij@89sxW%p? zQb-y>A<*r;>-&4mF=hoaTVeL1n)Jb@@&4?{uyu4c?sQ`EDVZ1%x~`W1dotb`8;xre znk5jdE>8?8PU>7`UPD9^D(YbZ%RTNm*ZCFF@*swuOMZLnACI0I=j}-%4>>^9k|WPe>n(gz2$BkgA@yBM0?`-;%{gbeXH~LBLe6~* zqCub;hAop-Vi*fEu;=FTN|sY%u|^q^DQlY(#gHWTS%V-L%GNL=<}e5V5F%^R5JHDM zKE5c>q%J9P?vj$~_(sVr2BI-5NzNkgS^J?wjzUHW85)&b9xSr8#N*Fd8hf%{tW88G z1v4eKh7)1PYQ%t5l5#Y#ZG*;&K|)TN6yvXvur=y66BApbF^Z^Hmt#(%$=GPDibk+= z?S*aQNh$T+05VrgPKRVtqC5;S^g}O6iCZfMno^RO88(RqNn%(Ts{5eS94`O;BAN^n6f4%kn;}M#ZYa7!)GKfS}vIuev0z=@$WKT^?6o-Du z5h==`3Z*be7hz0)KHV-Yg}Z$3_53OQ@)DgjL+HAYY}0t#oE&Z)BzpiM3^Ab#!_bE> zpD(YUt!B|~5J(InNX9j3$hUrA(y$0#P1=8Mo$JdWhkk05s&=H zDKhEpTa4O^So^yfACJlM{pM%lAf(xBuRHufeW8mlt+&_|8vG!Z0gBcvuja!?`P7-*mFsdEjn zx?vd9HVfde>bem$SH?D_bCAkO${6Z54q3$03;4B zT1S>r2#ORW-TFL)*jRlrjd9l@#~Aw|a?Dl*K>OD9p5B}0%P{0$zy6+$`8l5+@BQ1O z>tZ^4=i8H4@4S-8&<&XeC7TmNy4G83+n7Sv_14+8iKIz0cezt-y=|E(OMZkwMVrPM z_9>dLU%x?Ba%2Ow7ls;y7`cyOh=U>17)uO@MlwmW%c*rvIb}gMkQBfm*MOYnjF?EQ zcLZk5Cm~h9*cQ3#r8i(v4tQ9!)?Az!Y@(?dWjjcs%rbCow@X2@lLe&LF019~_7KU55bIgw{e8Syctrk&31W?|U{H zB630!K$Bw<)jmT3$8aY5W;iu4j1=+xrjH2k()o6ijIL9qU>z}F|JoB{7*v4Qhq>CW zd*rA%pT1_%`$L9+lwp16EW)5F1kxlJ4*~>WijC_HBPUH6Q6M@sP=J89yLw9m?ILbN z4v$A;@aXm4t8xA599qLU<)nZhBuyETR1Beg=x?!qa)ZQ=3b$X4kFQ79e<+h z{J6y!t?<1YGSs^}kX6}&4BMEwi)s8>l@ujrRVD};3uZie9U^r6!A5}XU_4p_%hU($ zdIiAa?=+d4voK87z%V<$bO`}}gT&G~%tttiwHOMkydqPA61{mXCN zZ@)jt7~68{MKg0NB9X*4jiVffAg1-qh>ws|+||9DUM?rgkjMAOfBp5nPih=gR5BS) z1PKF_$*A_dbP4D7*OzN^xm+z{7~UVZ`1US+79sKuujk)LwCiC!{o#u_xuy@fk3$wp zkwP4Qfkb^nzuZs8JS6{?vt~upm~;C!g#PQ-E=FR<)sgyNA;m#6Uu$&7I;s#`ykl-V)5?cK`bA*FNU9^`Bp__R139 zzy0?9`$y! zvT7!1--jWyzn;!;KHZ0}U%#hFFJD~KoRf0W`|yZrg(QYs-{shoLiFX*wyjNrJcf{2 zJX=moHl5GbvFZ9Q>YJ)sK6B$$CFCHIL_HZZKuDu1=NxmC-bAC;Xv-kA(HTp0Qr2ub z3WP9Z5<%jeg$&3rl)REnLRPpP`g=^7+gBLtV1%tvRj{$faS9TIQ!K*`XM#YNsLwNM>)-<{O%nc_|#MG!HKGW$!X`rqr;Y{2bhHAwj$WO&*&j2Co^i$`CK|r2NKng%r0VXt_EHq^( zkOiV+6A+*>eO?$Dp6x>*g6jCYO%Q?T-1qrm04Z#;m}SjBi?ZW40!Bbrs6qe`UB(** zpr5|bAO7GCnxRjRF1+^=l1PLSng-61ByhfeyW)|2DT!tQ6iRFIwg%o2M6*H^B4CCy(2OA$LkLx%^>n@B zdNGdp_MYFntRQ3cpZ@9m=Rf=bNxPx@c6+?v!ppg78%y31Y4>gDVt}XCT7v%iYuESk z`Lj7$CF4v(@8A00zaj`(i=RIm*V5bf{C<<9`21pDulCp9hI=n5qT&x|O z{O!Ga>j%?N(@LynqKA5tD)iW1b4v6Lfas58SLIi>5D^ULYdu=D<8OaOIA zuJ2mFzQP=f3XLc9wtnm&)@&0{C zgYy?dDdmT#HRh$U64H%6UC)l;W=FC#{t5sR^m3*bi?84HZGbVPP(vV~mkCKrlv)r| zY6z%;VTK99ec6Hz0t}e(^E_xs}^AtA<0O6`j!X#Xyk&)0wXZ-4&Nm(Qn*T)KY@fQ2^m=`{e)?=xy8GMhF)-8V za#68ee`jl*gXYZYi5EK6*f7syAn589Y#o_77SSgRw znmx^pI;Da-7V`i=rBbBuo__v?oZ|h4m^DZ3(}W1)NST@G0gq`E=-I?z%sm?;9*zpt z^M)S}ZAozTeWkkd-#cKH(Mol9nR+Aeo}>ay#L%bHrkPw($tV*rLa@#kssd-L+9uXE zimU=psc9}7iiB5%ZJFr_jAhO@IS>=I76c6mX}(~XR5i;qZJMk>I5qUzQgbrC^+xrt zzjyCz{K^}qiSG5+$;d!VOXKadbu_v93O){HLX99bXf$pCE=6v&B=(w$8hg^ zoX@Z4lgmTS3Bvc#KXP)-`P5hK5RrG0 zQa0SX-N!ZS2Uj=l@-e6#()pP92h=`3KB(YkPpvY+-=0LOw6@4cG`<<;??R%zfe#*jCVJQZlbhk1QRMGJP747=&XMv^7GKhW@li&Wc|=2f^2^6mxR(?RWZ zb@w&n?b|;G%<9m&oUbTs2_GE=vad{!Jg)daDCP~7UOUkaW9`TYPp_^5RWp*g6@kYU zFoNoI8;OB)L!VyBJIX=Y)9I(rSHvM?^YY~dGJOB`{r~-E|NFa+Z_^yB2NgI=FE9A% zi~HxFF8A-7iVGOAPVQLr`OB5jH1buhn~3cily>>5+7T4sb-|JgUpQ- zYaRU$)J=ciG0&G5c9Te@yV0h{$5`}C*dHiS$0W^_$_m-z`Em(oM<3e=u6Z6xu)%_7 z>aC{>fG>x2Q}aEY46QWglC2;DfTluzTYCQkx%LTgY|XGVn{I*puu7QMJw|;OIjKOj zn)TCZ#7@jgzCF?&V&CRG6(lx9OPpR&`DnnOWWhbaM?=y+Ofrpglw5=Y)=^N5y$GU+ zI-5{IhNx8&p>ce22?T_3O#(0kQe=?faSowivVfAFTDqQ*0{Vc{$^88J<$9$!-20wX zbI#1L&I=plq#?%JL+%e4htHqQ+3W3H-aGyD`9iN_#a(2)O8P1t(+sht4S#qn-PST> zVY1_<(X zXZPoc`IyDuo6im~dPiq3+~I(I&}IMiBOwdG-XH&%vWF>cb7}k_g@5vVrp}#d^0=>`TVT~9clK}q`oQ2+%Qy0moi2wD4HQ$m*zGeBq= ztwk2xBU+CMxc3Iy$Wf~_W$pvJ*JpLQ+leTL*Q;Y;G%svUcH3BUp|a$1nrnGoN}{dH z(Ofg>S`*BoY@C?pO!EPZ&RDlHs@u?x>gK{)`fR+d$Ol#4tg5L43m)f{?-)Iv?2i*=v|A=ROdi{@%E+3L* zI%up#<1qy1U054`q@{d&HlQ;d!fK(F1uBQ6LcA(hJTCyK=(GWxMT&{_tOL>Z{_&<| z&HINgIa_CzW%|3MhZV@n|5t7RjcX~iX*%vF8rM0Pi9k%mtRPqhn`w=*H0k)c$bYNB zQGCFZs8?WemKd63vD9kQ3AX3TMgb@hjoFq|5d=|prk}K-@!cTCd-uZ#r=2J13gvVN zUSs=l%h9-}c-e+k(p@yy!t=(OW#L%f_p2dkS(IJ_yj*3aA}wsfU^HJLPbJrrinZ!- zSW(v|TH0^*-cX*$dt=6m7gZ-WWN9UWEr}nTn0xC{vr=E4PL!5gu>(AMUS*t;pJH@V znnQVw?b;fLZup~6-!&Seeks_GaB5{()n7kmO-Gj&mn0q+^U9MIfNpW8Zi&J=D|Vm` zF{%Ky{#G@9W;ZHBW)ge>ogW-j4{yc&!?nlKZZkAb(ohL(G)8U_<%>GYY-zc7P1}TB zq{wyTr@l+E%nZXA@5vBR5{M9kc(wVGlW612hRAR=S=2?J0)H5U@u84)Fg7ttOEeVI zM<`ThOh;M5*1b)8RB^8!gee;ohN+OchN{&ytB9SHFQl90E!}uCu**0VenuND$_6MZ z#KI)2W%nxT%Ho;&2jR7h)9h}GCoX!d$b@;Gb_grG^QHAl2) z`A_k68Kp7|a8#5R5v0p%_&U6M+wEjSS;%aTgUQ_CXnh1WG}15QxB#`n6Q5Gqa;@tL zsx7w8l$XA=7;`03`Ua>1hf)sG$-D>Cp=aLkkt%=Fu`$LENF4-K5vOzERQl4kD^)f4 zmfq2x-Cg4&8TXUIs-cpoP7kBZ I0g{73F74Hc6a-m;7Llq%Z{GUl##!uO@h-WIh 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 literal 0 HcmV?d00001 diff --git a/test/board_images_png/st1578.png b/test/board_images_png/st1578.png new file mode 100644 index 0000000000000000000000000000000000000000..51407df87b160037b0171ffff4955408f5a663eb GIT binary patch literal 370035 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 z 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