From 8eab818a1a3079c67ed615925b6345b482dd0376 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 10 Sep 2019 10:14:39 -0400 Subject: [PATCH 001/234] Update Amazon Linux 2 base differences --- base/base-2/amazonlinux2.txt | 18 +++++++++--------- base/base-2/diff.txt | 16 ++++++++-------- base/base-2/packages.txt | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index c6cfc2df..bfaf1679 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -1,4 +1,4 @@ -amazon-linux-extras-1.6.7-1.amzn2.noarch +amazon-linux-extras-1.6.9-1.amzn2.noarch basesystem-10.0-7.amzn2.0.1.noarch bash-4.2.46-30.amzn2.x86_64 bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 @@ -6,7 +6,7 @@ ca-certificates-2018.2.22-70.0.amzn2.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-21.amzn2.x86_64 cpio-2.11-27.amzn2.x86_64 -curl-7.61.1-9.amzn2.0.1.x86_64 +curl-7.61.1-11.amzn2.0.2.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-4.amzn2.0.2.x86_64 elfutils-libelf-0.170-4.amzn2.x86_64 @@ -35,7 +35,7 @@ libblkid-2.30.2-2.amzn2.0.4.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 libcrypt-2.26-32.amzn2.0.1.x86_64 -libcurl-7.61.1-9.amzn2.0.1.x86_64 +libcurl-7.61.1-11.amzn2.0.2.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 @@ -48,7 +48,7 @@ libmount-2.30.2-2.amzn2.0.4.x86_64 libnghttp2-1.31.1-1.amzn2.0.2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 -libssh2-1.4.3-12.amzn2.2.x86_64 +libssh2-1.4.3-12.amzn2.2.1.x86_64 libstdc++-7.3.1-5.amzn2.0.2.x86_64 libtasn1-4.10-1.amzn2.0.2.x86_64 libunistring-0.9.3-9.amzn2.0.2.x86_64 @@ -62,8 +62,8 @@ ncurses-libs-6.0-8.20170212.amzn2.1.2.x86_64 nspr-4.19.0-1.amzn2.x86_64 nss-3.36.0-7.amzn2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.36.0-5.amzn2.x86_64 -nss-softokn-freebl-3.36.0-5.amzn2.x86_64 +nss-softokn-3.36.0-5.amzn2.0.1.x86_64 +nss-softokn-freebl-3.36.0-5.amzn2.0.1.x86_64 nss-sysinit-3.36.0-7.amzn2.x86_64 nss-tools-3.36.0-7.amzn2.x86_64 nss-util-3.36.0-1.amzn2.x86_64 @@ -77,9 +77,9 @@ popt-1.13-16.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.14-58.amzn2.0.4.x86_64 +python-2.7.16-2.amzn2.0.1.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.14-58.amzn2.0.4.x86_64 +python-libs-2.7.16-2.amzn2.0.1.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-8.amzn2.noarch pyxattr-0.5.1-5.amzn2.0.2.x86_64 @@ -94,7 +94,7 @@ shared-mime-info-1.8-4.amzn2.x86_64 sqlite-3.7.17-8.amzn2.0.2.x86_64 system-release-2-10.amzn2.x86_64 tzdata-2018i-1.amzn2.noarch -vim-minimal-7.4.160-4.amzn2.0.16.x86_64 +vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 yum-3.4.3-158.amzn2.0.2.noarch yum-metadata-parser-1.1.4-10.amzn2.0.2.x86_64 diff --git a/base/base-2/diff.txt b/base/base-2/diff.txt index 0f22e291..12feac86 100644 --- a/base/base-2/diff.txt +++ b/base/base-2/diff.txt @@ -1,7 +1,7 @@ -amazon-linux-extras-1.6.7-1.amzn2.noarch +amazon-linux-extras-1.6.9-1.amzn2.noarch bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 cpio-2.11-27.amzn2.x86_64 -curl-7.61.1-9.amzn2.0.1.x86_64 +curl-7.61.1-11.amzn2.0.2.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-4.amzn2.0.2.x86_64 elfutils-libelf-0.170-4.amzn2.x86_64 @@ -16,7 +16,7 @@ gpgme-1.3.2-5.amzn2.0.2.x86_64 libassuan-2.1.0-3.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 libcrypt-2.26-32.amzn2.0.1.x86_64 -libcurl-7.61.1-9.amzn2.0.1.x86_64 +libcurl-7.61.1-11.amzn2.0.2.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 @@ -25,14 +25,14 @@ libidn2-2.0.4-1.amzn2.0.2.x86_64 libmetalink-0.1.2-7.amzn2.0.2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 libnghttp2-1.31.1-1.amzn2.0.2.x86_64 -libssh2-1.4.3-12.amzn2.2.x86_64 +libssh2-1.4.3-12.amzn2.2.1.x86_64 libunistring-0.9.3-9.amzn2.0.2.x86_64 libuuid-2.30.2-2.amzn2.0.4.x86_64 libxml2-2.9.1-6.amzn2.3.2.x86_64 lua-5.1.4-15.amzn2.0.2.x86_64 nss-3.36.0-7.amzn2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.36.0-5.amzn2.x86_64 +nss-softokn-3.36.0-5.amzn2.0.1.x86_64 nss-sysinit-3.36.0-7.amzn2.x86_64 nss-tools-3.36.0-7.amzn2.x86_64 openldap-2.4.44-15.amzn2.x86_64 @@ -40,9 +40,9 @@ pinentry-0.8.1-17.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.14-58.amzn2.0.4.x86_64 +python-2.7.16-2.amzn2.0.1.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.14-58.amzn2.0.4.x86_64 +python-libs-2.7.16-2.amzn2.0.1.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-8.amzn2.noarch pyxattr-0.5.1-5.amzn2.0.2.x86_64 @@ -53,7 +53,7 @@ rpm-libs-4.11.3-25.amzn2.0.3.x86_64 rpm-python-4.11.3-25.amzn2.0.3.x86_64 shared-mime-info-1.8-4.amzn2.x86_64 sqlite-3.7.17-8.amzn2.0.2.x86_64 -vim-minimal-7.4.160-4.amzn2.0.16.x86_64 +vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 yum-3.4.3-158.amzn2.0.2.noarch yum-metadata-parser-1.1.4-10.amzn2.0.2.x86_64 diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index d4ef293b..ce55eec8 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -28,7 +28,7 @@ ncurses-6.0-8.20170212.amzn2.1.2.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.2.noarch ncurses-libs-6.0-8.20170212.amzn2.1.2.x86_64 nspr-4.19.0-1.amzn2.x86_64 -nss-softokn-freebl-3.36.0-5.amzn2.x86_64 +nss-softokn-freebl-3.36.0-5.amzn2.0.1.x86_64 nss-util-3.36.0-1.amzn2.x86_64 openssl-libs-1.0.2k-16.amzn2.1.1.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 From dbb98a86dd2125fe7b2a40a18d926e3cc77fec30 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 20 Sep 2019 12:46:12 -0400 Subject: [PATCH 002/234] Ensure we regenerate request ID after seeding rand Fixes #210 --- provided/run/init.go | 1 + 1 file changed, 1 insertion(+) diff --git a/provided/run/init.go b/provided/run/init.go index 058e93b5..389fab23 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -41,6 +41,7 @@ var mockContext = &MockLambdaContext{} func main() { rand.Seed(time.Now().UTC().UnixNano()) + curRequestID = fakeGuid() bootstrapPath := flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") bootstrapArgsString := flag.String("bootstrap-args", "[]", "additional arguments passed to bootstrap, as a stringified JSON Array") From 1bae7988248e084e12bcf05b729e0b7a05e7a377 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 23 Sep 2019 10:44:33 -0400 Subject: [PATCH 003/234] Update to aws-sam-cli 0.22.0 on build images --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index a8b52540..9f9b7035 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index de0fbd28..e7750c8a 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 350be5cc..55e17c9d 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -17,6 +17,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index e89227d3..8fd895c1 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 7de780c7..5c03d82f 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -10,4 +10,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip3 install -U pip setuptools --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index fc283d04..8322cee3 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index b4ea2be8..7833bbb7 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 1abf53b0..d469fccc 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 94bd1e30..74e2e688 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 911fb05b..02c57251 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 8cfc7bf1..a0ce3ee3 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 8613975e..f5457f07 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 40cd063d..4f5f4771 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.19.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir From e12c86491dfa194f83aa9519287378c733f5e3c9 Mon Sep 17 00:00:00 2001 From: Ari Palo Date: Mon, 7 Oct 2019 17:26:12 +0300 Subject: [PATCH 004/234] Update Golang version to 1.13.1 (#214) --- go1.x/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 55e17c9d..e9e81e87 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html -ENV GOLANG_VERSION=1.12.9 \ +ENV GOLANG_VERSION=1.13.1 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x From 42cc33b19792a25e829e2d8d01b798d5bf2539e7 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 2 Oct 2019 17:25:46 -0400 Subject: [PATCH 005/234] Make diff output a little easier to read --- base/diff-2.sh | 2 ++ base/diff.sh | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/base/diff-2.sh b/base/diff-2.sh index cac42f8a..13fba545 100755 --- a/base/diff-2.sh +++ b/base/diff-2.sh @@ -35,5 +35,7 @@ DIFF_DIR="${PWD}/diff-2" cd ${DIFF_DIR}/nodejs10.x pwd diff fs.docker.txt fs.lambda.txt | grep -v 'var/runtime/' | grep -v 'var/lang' +echo diff docker/var/runtime lambda/var/runtime +echo diff -qr docker lambda diff --git a/base/diff.sh b/base/diff.sh index d1d937df..c0370c9f 100755 --- a/base/diff.sh +++ b/base/diff.sh @@ -34,28 +34,34 @@ DIFF_DIR="${PWD}/diff" cd ${DIFF_DIR}/python2.7 pwd diff fs.docker.txt fs.lambda.txt | grep -v '^< dev/' | grep -v '^< proc/' | grep -v '^< sys/' | grep -v 'var/runtime/' +echo diff docker/var/runtime/awslambda/bootstrap.py lambda/var/runtime/awslambda/bootstrap.py diff -qr docker lambda +echo cd ${DIFF_DIR}/nodejs4.3 pwd diff docker/var/runtime/node_modules/awslambda/index.js lambda/var/runtime/node_modules/awslambda/index.js diff -qr docker lambda +echo cd ${DIFF_DIR}/nodejs6.10 pwd diff docker/var/runtime/node_modules/awslambda/index.js lambda/var/runtime/node_modules/awslambda/index.js diff -qr docker lambda +echo cd ${DIFF_DIR}/nodejs8.10 pwd diff docker/var/runtime/node_modules/awslambda/index.js lambda/var/runtime/node_modules/awslambda/index.js diff -qr docker lambda +echo cd ${DIFF_DIR}/python3.6 pwd diff docker/var/runtime/awslambda/bootstrap.py lambda/var/runtime/awslambda/bootstrap.py diff -qr docker lambda | grep -v __pycache__ +echo cd ${DIFF_DIR}/python3.7 pwd @@ -63,25 +69,31 @@ diff docker/var/runtime/bootstrap lambda/var/runtime/bootstrap diff docker/var/runtime/bootstrap.py lambda/var/runtime/bootstrap.py diff docker/var/runtime/lambda_runtime_client.py lambda/var/runtime/lambda_runtime_client.py diff -qr docker lambda | grep -v __pycache__ +echo cd ${DIFF_DIR}/ruby2.5 pwd diff docker/var/runtime/bootstrap lambda/var/runtime/bootstrap diff docker/var/runtime/lib lambda/var/runtime/lib diff -qr docker lambda +echo cd ${DIFF_DIR}/java8 pwd diff -qr docker lambda +echo cd ${DIFF_DIR}/go1.x pwd diff -qr docker lambda +echo cd ${DIFF_DIR}/dotnetcore2.0 pwd diff -qr docker lambda +echo cd ${DIFF_DIR}/dotnetcore2.1 pwd diff -qr docker lambda +echo From ec3f2893bdcd97cce0eec87e962b6362fd019045 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 2 Oct 2019 17:52:35 -0400 Subject: [PATCH 006/234] Add dotnetcore2.1 pdb --- .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 0 -> 44780 bytes dotnetcore2.1/run/update_libs.sh | 4 ++-- examples/dotnetcore2.1/test.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb new file mode 100644 index 0000000000000000000000000000000000000000..620532bed8cbbbc8fd5fad74ea36aaedd05be8dd GIT binary patch literal 44780 zcmd752Y6h?_4hwpyjn@Sl2%$3t9Qw=B=_FC<=*6mn=H$=Y+2n!80?i~Obrk)H9$f! zq1Vtmp%X&y353uS5<;kfB>X>T?%maRF+A`4KEMC_yn1|g<~wKZ^f`0p%-rj#OXo~= zD2I|iAGB!t)cjpTst4-;r#7`nVt*L-^`}#|?wNXVruW8UD_bXC(!TQh zl@8@u@%CktVsn)))nVdof!-nCy)LENoJwVbzXU&u`#ywMQyp$O^e3o_z)`qFSL+}@ z6pkl;Nh1NuvcqvCu0-K)kmXR5A^0TUa%dUcUxV)<+S9~-HO`?vjB~1c;=%Dw_1~aF zC8RplfeeQ_l;Ko&1c%C>;8f@1UV;1O42SyL45vDIrbGQ=rc-@~>!0OR2WL6d z`MAqwJJjacPW3GA`?x==p}aLtl{?3whR<=Tk8r=i&6?*>1Lrx_<+!)u4xjH(Gv_-DLsvpKK(|BpLytkfhhBl+faLo{T#Xgx)!<*dKP*I`W))#aj0~t8kzyEfjXd5pi7}U zp$DO7pqHT!p--W&q1YJe0aZa`p<|$S=yd2V=xyjb=v_q5mrz!$L+yb=&{t3avv2~m z8`=+@1|5Pff^L9rXNLY8@-jn%P(D-%jfSSjyVRec&!GQ6Zl6mfLFrHtG#r`?&4QLf zt3^cqkN&yTX43tg zLg|u5KXr9RKXnuI5cCA}67(kYXXx+Hw@_;TeyRYP0$mKf0QJl4r_!Ox(0r&7O3Lb| z3Zdc9YG@a97IYuJODb>!6dMUqFvRC+B(8{ZLiDN1Xs&33&=UY8-SLbQSan^giS$^r#$Y473{B z1)T-m3jG5L6nWHm=p^V-=&w+q*rNtR3!&qoL(ol-t0YEkDUou=s6E;h|Nkq0F={{M zJF~>A>Po$8SDBP6Ry|o3tDb{ih2DbRhdzNmhrWdz<*~{OB|>RX4pa<{gf4>ag^~uu zsS}`oL2VUrY9DlAMZEePN*EZgWJq)M2h{U}l2zg0WK|8- zK#QR5&_U>;!71uJ=&w-TkQ6lnS_G|u>W2hX?9iY}g3_T}s06BnhCySYDbQ?aA+#J? z3vGh7L+wx(6oO8KPKVAJnyMxYOI0E0H_!)A#qdc41U&&g3w;3n z8(KIbO~sE)Q;VRBMy9K{QRylGWk7jQDO4qD(Erw7hN>Tx!Lu1^8`K8vf%ZcOp`YpW z`ZE^#GZy+Q*XaJL2&#aFK%=2a&<5xrbQbgk^f8n;roT#u^2QvkK$*%tHdEz6rBD?# z92y5rg%&_hK_5f$<1*E9=-P2v>Ko{L$TL1m`Jo_`1rLcij z@sfXz8ZjY9O@$Uf$3R;rNO-QgYeKGi5XzdEtID8x&_|GaQm$GL-3t93nlL$6-3Yx6 zHBHG?S3=K2{io)tA<$;%T<8+$O6X2#(6n520J;lGn+_kk73!RktB!+ChOUKfosp-U zGxOA7Xw*z8SDspI(K!c%C&`fB}EHjSjFI3mhDpbFL?tvbL zUV{DveFZsZ7pep(Z+4N|3-v%JLuW$g%`R5oLXMhZ<%Rk~CD0IP0#pO7t|?J>LJvTX zL9asZLSNLBs+u{aY7w*nYJ>Jb2cT1-^Po$h!_almozMew%9MX@nR#6G zLu;W%b|p#;P*2Sppq__bgWiTdfc^%30euHK=MPY^>|B(pP{+)#P#d8}s1@1`?StMb zt57H4o(7!_U83U;R9OoKszPW0G#DBMOe<1hbK`LqSV092W3%X>nm`}x)*v9dIfqH`UmtM zC~gV55L65efhIyTp#{)#XdSc}YKC?}`=Eo+>Cm~*CD4`74bbh-{Y$JoAG6&TwW|wa z|HP;_m&B+~pwFT2pyZ_{|Nl>ajLKXZqY9x4XecxmnhMQ-z8|r~hfzE<1 zgf4@wfo_5Bh8~8Vf?j~$fc^`WEsIfupi$5yXcn{(S^=$xwm>b*!u5<*yO+hPeb5P! zusC(vvN&}%bRl$UBs@u7wT$&ojizbvR;hW-G(3;hN94EhH8 z9`e)%l^+U1Sx_M~02&O9f+j*UYQtqrRr6|7)lz6RRHwsJRbzyosak6@)oy4%bfON= zRA*>6SKSnem#bc=%~fwee}?{|!(-GxYlo--%d^owO*=)7fiXcKv-|k*;5-8hKR*f= zMB&0HToi?iqi{(SE;Vor`IQ-1HVx%bct8}ch{6L6Jcs86J81#2R|KI-unR1I!WZl| z_*GzO5&4tyR7c@KQFw3^9ukFzM&V&mc({S3z9XXWNCS)gWt4#jfJcMTv+-HBnK1?y z!9Es@o~ilr{5S(=fX9R5Y<>!Of`K!^6T$H|zsJTtFlHt-1)2okZ}W$OCmXolzYCRz8Eoj!8ta*6nwzI zGCof*a6b4TIM{EH#M z?5mJdQdbL?fSd7;ws9$#qlQR&W#9tvc=)&Rd^uSDzP51%Sk_wEd<%adSjN7rcY-Uy zC*ZHJaTWM<`~}eM@Ty~ z$Ad?M$J%%TcrLii#uLG(f-y?#_>;hg!SCDr$>5j4$J%%b7{jTW48D`}r-J2g1&-ip z;P1dPzXeYR4}d52y$d|Ujz5$%?>2A;Y2E{#Y4c@0yVt-C@CDC;e;MgXn+l!{o<>^7 z*tiD#5V+UIbHFa1odUj(_;bPXHyOI$z;WOQ3@iq+2MsL!_YioV{k-rWHn6M@zcsM5 z|0Ce}c6`B)f*06W#`j|eP6R&=UTE`0K0g6oWMdhRPl6ZQSoH6wqVVrny~BKwKhGFg z)|1~GSoqHxSoqHwSmxvNQTT-@{9+V-$-p8HUpBDFqgM>P7W}G#opg)fTIyE-PsYn@ z;N^CGH^YD3z!TxWVPIK5-ZbzY#y}Wf3Qy+PA6e~I*y&0A-ZHTC&)WtT{+|pi{q>H4 zh5zR${H}o|{(A(ypJZ=YIvS zva!s^PYgWSz@kftzV|oytL^ww{=XYoWbCH~UQc-hA47a;`=K^o11<&UgZ}}4Em-~} z|IZ98`-OiRSPV6v8+Z`-3j@o1`_jOoZ+-<{XQwaxucPocQTSg59zy(YqwseImh}E@ z;9=nZ7&$YT)tUG6TzcUv6M2-v9&4c&jk*RPaCp zi#)6}u*jn-1K$U(Hn7OAL5`eA`J_BUz#HxI%KEt6z{%hh2A1_`rK2Dc--G-X+{p8y zuYF?kw}EBtc*(|1;D_+HLaT_s11x{ip2y$~W0?CA1yfX=4ugBluVFq(6ke6aM}9=Ri&1-FAHGza5SN5zI9ijl1BBu5y~q zKNkF7{8>;l@%P%#%lHx84VJMn&c;1pSx?Gr+zUQr;}+r{u%AyPtku9WzT3bj*!)T0 zc1KkN%lgw{;6?+B?5nr&L7o@gOXg1}bvn^bPuhQH6y6nu_c(?`;>&#KGO*}F#~N75 zzt_Oh2FH=!Nk)FhJ7Oa^3I091DAl$1s^u@JI^sCf+fB44J>#0E-rqwp0`_;3`yG7A4X3SSk4ua3gk zMB!_r@O4r6`Y3!u6uvPE-(+BsZ#PHbTMYa%W8qduO{6`!G^Kt6zR~WFlX(6%@NG6e z1AII94jW$zz5{%}jb(faegGUEpLc>EwE3cc-vxfi#sk6kkY^an__^1>A|LKEu<-9U zu<##n%#S>u3VzVQuiN-x@{_TBxs4wIKY%|DdWiUs+U2Q{v~4V7E#JnE!@mM7<5~Dm zfDhxJV&f;l|G_W$KMemVu>5@l{TBQ?8+RC3WV@^H7+CmE8d&&G8CdwQ8d&(R8CdwQ8(8>n7+CnCGn?i6gMo$rM+3|AZy8wle=@M} z-!ZW8|Lj;CNxuyIuECf1?-^L)zi(jSe_&wYe`us9ZT^vgW&i!Lfiu8=F|f#U!Oznl zV!s`0;}^gp%VbRb75m8@~sZxs(fi&-3rw&&wPV`~g^G$rCpI5WF1!6*m3|9Kyfb#vg;P z!#~@`e*wRSzdxj$wb&4-7=NN4hVifP${ZK`3H<+uZWk1?7YL+4u%<0XWvi2}COd$J=-f{2~MQgD+Tag*U*PY4el8 zH{)Ld6~j-lpI-+q0jJwo_8X;Oxlt~EKAbXerj6SOD+g!UcwrQtZsTnDGS-Wr0mRR- z<8QEWE_e!lX|D?Sa(i9=q`d}4;YtJVgp>Vx-a~9Wp7^pBNqf#BlL_|oGQW7uB7&uUylxS}!sm612p0ZaXJ-UUe)9}0 z@^YyWU!GrPV0pgQz`~c;FT&*!{t9PT1dG13(!f%ORR)$it~Ri&!N(X_;;%7q6?m@!Z0}FqHfrVdZ)K}K{jRs%h*Be;kZ*m?RsgLXz8w@P#<7NZPer8J)-Wr7) z4J`HBX5dorb|Zf&Pm_VAJUfi|Ql4f5uL8FiSkiAbu%s{VO@;eQ(r-7gq~GBTMffuR zI}I%TwbQ`TU%Lz}{M`l?{vHDhzstZPzmJW=dkrl0JI=t8-tkd*pYw!BdF4D`@FeDk zj6Gh1(s(jh`X&#&AN~}3{!AcD@HDWrh3F*R&QsKMn_mv@F|d@k*T4br0R!iQ57M6D z=OxV(4J_?@l7WSPvVnzvih+eM=bqv8gnycWh5s`H3;%Qj3;zrQ3;*W^7XDcV7XH}= z7XBdv3;!Gg3;$dL3;#R=3;%or3;zNG3;#j`3;!3+Ga~i91AH<38Fqh2{7Vch@qcMx z;s46O!oSqO!oSSG!oR}6!k2U9aDKwS(!j$1wSk3ym4StSwSk3yjq^|>y*=P-!L#i8 z$oedJHaLi1=Iix5FK>y-pQLw#fhD~g4J`bd3@rRxoEJo%7kPeb6#h*VzAXyh9)<6S z!gogDyQ1*jQTU!He6LYnDgS*2{}}N71}+CbVBmu`o=f}4-0OfIbY7z7+wCRu^PwpG za1{P+6n@0Og*^W#c!8aswBKU}mhwJsVBtRzg`bSVPetLU4J`J%-x*lO!!ypyBl!#e z_XZYu_^g3NKEL4PyxuOa$k!L6@Jj}k=U+Ckr2mS6<@r~m@M}@{^(g#?fhD~+4J_&X zAqxM|z|x0rMd7!j@SmdaJ5l)0QTW{`{9Y7(KMH?fU@7m12A1-D6oo%Fu#C6A7+B)} z)xaL`CsFusQTS5>%lh`2fu+B`a`IM+-M`Y`UmIA)<2MGD@%S$T%l`XY@Iw1}>7P_r zAC~xO1{Qw0fu%kf2A25!4J`394J`4q3@q`pqi~LaMPB6^SmNgySklioa0R#kyvUfJ zg;BUD3KvJ=k|AyIf}6do3ZhezQN2A2Fr8d&t*Q3jU$#=1%(<&*I^&cL$2 zA8%lZKgl&962BjKvVrCKDF&83`_w2r!xbBOUgFO*u&kQ1U1K7A+3(IZu*9EdU@6~1 z*NjMf*^e!X!i%Huk|?}13NMSowNZF^6kZX9S4QDgQFwI}J|+sUiNb56@VY3xJ_>J$ z!u772Nc%{8Z8C5cxWT~EpPQrbRs$!(-|ni7q$lH{$-vS-I}9xOH5*vsw;Fg1xZTyD zYVG-P7I>$DCB0n+mgjdz;XMYH_{TE7!|91Wu-EnL2$u07e;b*+PIbK$Pi;hqh5c<3 zpybz~ehK%7;plgSJJhQ#iD~(-*6CPJS!r6_r*upSx6*OhIa;|qt8;l&bKl~ZHyd>P zT~Z0PPN#pP_FE}j%3|bFe-@EzmvD;?k#M)#N+@q{!{z-YLcBVJ-7J2G`W@je-ro<$ z^yoM-cANmu^431TPIWhNXcPTZ8f9=QUZ&^S6PcQBH3ok_wG6ID-NrBPHxb*be3U#E z$tEW@Np7)=q`~#+R`TmO2})WcQCrcHbV=kSSMrtkPR(Vnqw8BrI&R%oyqSUDDyP?e z>ON9N>(svw8^43}v$^_L_KKDToUa4mcd5zzy7gHWI~dYr9VOpzKU)1IWwt_``erBP z)vaxDk0)hDg@}E%UjKfnp8~y0UZca?4mChoL2Wz>MUsCX@Cf!PBN3>wOPaa`-r|>b=GUzr;TKB_)6t=x*JJfbe(6EtyVXSF*_-vVlXUM)A$_q8$Wuj> z+^Mdjgf7J^;5-$hOI5-zZ?Y3JhLZ>>l|0L?N&oVB5uSZX`)}311IX9GnTez(Cq2Af zsKYID3;>T-VL)GmJG)ndxy zQ~#tce!c`DcFRWyPt@&}gvA^yxDJuB2>ng>%bU6kQWvax`gf@g7YnvSS^o2NuLa;b z)$d7@w-@Qy=0d5ptAsR(VQF>(nK5=@Pni35llTn7Kcq+*cgFYj^cxp1a_>S|(8FMeHWFlC^3@b}ZVyghvNLwcu$l6cjA zY8tD);@LRmp-1Q)VsfseTl+1-UEE=ikl)~Us*m|~+aXWtI1=tszvs7~=EkT8@yF^o zPW8i)?9%OEr6~z>S6%nlnYvZCP#!n8f+V#X!udu7rHaulCU0ZNpV-*=&WbM8Wb)!G zJ^b<=8h%}9*pfm6PxVtf`SqwtI)(oHVoxS_`hu9I->K~uF11+4c}Ax{m6+`JDG%Q^ z;n%4Kz;&s=>GaF_<$D*jyhptbH%9+*zNnuSu2a?Uyi0vR9I@NV?{@qSHHi3F+I7#q zqC+0m+!S3l%l{E^c*~6zuxz*vb*pZrTZ!pXQ+U>`E~gfJtAh{^I;fOkfsUWT*l?<$ zddyfW!Y-X-7inR+*Y(<`bNo!l$DD3Jt|SBAl6oFSi0or z>5_lXuTxo)*^;Qch(S7pyKK2?$=><8{FZdRLZ>Fb)|(R8b?`g2%tS{fCf~dv7g8qN zrCN242lZ3Qy6<%7tNFUctTavk^W-jRtS1F|UTP!ww{en?Bp{8z*NNh#!9-6GU4w7c z1ZB@AdXMO`d>ttx8CUjsV(;NQKsmC96g^&aYpj$dVgnMr%36bxN@b5AcK>{cuO^ij z;ub;08jl`OidzPiYkYl01@1toQsXrPt8oWGgEfAyawzUFNcI|>npKU&9R+*#0Ujb9l)2X`(sPvb8~Ex=s}Ez
hhfQDnOWa>UmqM38GFGpE4ntQ$`fu9O;_(wluV3HPQeW59F<5nW zwKmi=Z*EyOL^ZE(Z0;O36nCfPiSQ(hppnCE9-hXIWpy3fm#N0)T`k)irq^}WscjuC z&Dzu2-qN~$lLU2IPRB;#PwD7tu2&6v>eZepJC1E$)?QcNP_xNS08f3(mgdIJmPIWs zO`!IMww(89UYA= z&CBbW8p#G&-`>z^q0Q}eI~ry-HZ*NgO)Xot@HM(A^_|4Ef|_^kSh#tnMCq^sb~JQu zZP}!DHh0uf#KvPAHZAR}tKY7xpz3#abhhkR+R)xeM#na^*EDx@)-~5R*o=nuqp%vo zaVXKw_U36Vn;KL@dwWZJz4$t|w(M-$G-FSF(@qej=&0M$K+|t(*}1W)L2Yj2$12hS z%4mC+(UBTTuW3(RM@PesjZIw|=o+i0x*Z!g)h*dcOY&f2$Gp0Z&V|k7*xA0Kv2*LZ zM*L0k(|BJawIX&~M|;P76uz8&B5Eqk$XRbx5O?zY$_J z-jVFS_RrTtJsUZ?;;m*!*XiJ~h&Uso(b7#XI>zQ43O*6rb_S84D%3xX2(9zn`+|j^TwLL9Oo7R(T zBV+$)-9IJVPKru&G;Crl?rc!H9IB*QCW4Z(X-N?oOIpBh9+xV@yW%8x*gKb+Sy7YZkpe)Lp65t!+2*< zHP;Oe?-{Ux{jLWW+`7dlg1;VuvI5$?Q!t zcQ$LGH>JH<853x}7Iv~GL?oCI6q#pwM(bFTrk)xaiD>IX^-Yb;Rx2^>wP&CX5lO+= z>C#{`D-2n-T8pmTGuqYp^4n}0=S~Ru2uYvJ6c<0EU({f2Q=)73TSM$X40ZMSssWg6E8Z* z9`Ai|cDFOn+NlSESG)F{iDanydQxf|9))y3JEhV~Y|W-cox0ixW?4D~=_O;nwLS>8 zmx>5Wq@;c-Jl_TEX|L;&p`jV_kPHu6&g$e2bCt8!K((cT`O{c0sdZ2qTfBDYrt1)y zvXphNrg>^tCwwi=I*?(EK+Dn}9cgHjYjx69P9r8qNvo!IPA53n^{>L~+&Reoz z_}Jx%G__=G_l)Ed9wRf5}l+PV?0|U zEn*j>Lv3&9>WEC7g&Vgu)OU*Vq2-F|XsO@c&`Ce-Xld`7*SMpxQ+4cY)k3!haiVtY zZ0eNdM4a%_Xr;ltp*qb3>uIE9WuiuUgoqoK*OoX|q7c=gS~Sd~v@oM&pbl*kRz$Qc z+e2B*ri7+xGSKfgaAb%+S3r!oyN)KS|5@e%&=m^H2P`rKY}j_=aybE}ryQ%!`3D zm#POBUhce9d6sr{u+}A8PW7~wrY3rZm7*i_he6f$aL7FhYiVmky`|}GinZA_3;C$4 z!|TX$jC9nxT3S0}Wjc4XGD|b&X^m?stLes;J=0p+8>Y=$QZ=+{h^wQ$K6YwLODB_| zt~GAi*2eZtjN;BNw=`tD{7grKuCDJ$9Hh22?+N`pbWZ4(p=&}n23N;?KXT!XO^rRl zlCwH)e0AIh4S#&xLo*aqr-+j~R6F@2wUakiJJ}PplQY$FW@;yQj&|}ESk4md_*Vxc zm5L48Dc-D|vKH->?hNovVHMmPh~b7H+w*u&vQM_l#rxUarn-0gmGgMMF(q~^?xMw& zR6B_sI+^H$eh|HXRP^jPz9h*mICNo(xPj0m+D!^wrd@yNO6?|uuCc>!u-#jGG;fH|9Twv&-j}qWyumxlUDrK_VD>2Y`{y ztHw*5LN_-qk9D&x@9(i5k>s;OUj)Qtoe=sa96QC$Ba$NQlqZg53!KzVPhi zz9Z@QoN6v@8|+RE#5g+Lv{JbTD`c!QnP#F9o%^%780+=RZDFT!?Vaf6e$vtecdsHiD8bp% zc2Y2Dr|$Ixr$z_obT=5mkwkL3w-cOZrX7;4ZgzJY;VDuS>QCo6v6ygo8Z(^qC5=Vp zBVhpv3rbl3NSKbNi_sURddTR=>b}8mxwqQx zowj?Q?LO=e5U;TNDSw<}lMKrKo-PR~=zh^3YlUQ3A-UauAY_A^IOSd)C$Ia%aL52F zWPJBO{mG7v62}gi*!|ydNS+m^peNQyS$eyoC)Ka#K)x3%QBRKFtBPfS>~S+1Gu$+B zWQY+vr>DXnFQYhK25_XR6+J_Am4^3>^bcje7xawt`&6u3ZmK)Ef4sjyMx-x#Ec+7b zB1u&C%+sxr)3c1$*dVPDwCbMSvz9WilaLfEq<_z5LRQ<;SXwNzrzIRxY{kj!*%K9# z)zcjgvD3-!IfamL$}&GL?<(fs0cDU>M|JxX%ZD_9WN4HGE3^6$tSUWPA}i>CP9@Z6P%<& zAH)lDG0YSR(&9sl09~*?X`;(=G;V^(l^n@la}xz-yN`gm5pI%>9N}t6(OD~iMcBA|-|~wM zHLdqux-rJd`-OgY*I+d?j&9Wbtk=6Dn#htCtWhzRkMC}K|5toGk!Zy$kY@v4GG+`` za5W`xAXS<~dcM@%<>5^TBCtTSNJxd!WTl|NvJxu}GE2fOCI5o$T@%YXjj(=~Zp z>pz~k?HNZ4lSuWi2qegw!z$vI3aQk=Xoe0|Df(>E@DvFOjL<=RR~=1rj1Ec~tAh%4 z5;f6DEbL1nb*YY@woC`f_*`x`CnOm` zdU&*3!kqjt`r{lc#aAeihY5pu#*Z-C@i}%0WKi{^YWy$|j-{lfp&JnDdM;Inu*(*W zwaU%Vn<%;+f{t149!-@6E)_wD{1_|45@nGu&GVsq7HKp_=XO4;S2{mi_DN8T}N zn1?IOI`3F_ms2hDuvQF}iH?rp}I?5l@5hi>k3}w zY#SPGw_w_jmridEoICppmQ2A4f2v^XQbd2RX66yA}p-l%W%3=?dRgWBmt-UIL;IkyK9hiqa>9wSTzR+ga}EDs*h}dXu$GbfT*k zIyQu%>hEQQ4AvF#bn%1?=_aQ)!@1hq#mC*_C@JULK9wVqb%^wRxf>Oz+)3uC3Fr*N zSk;6#zcl*A`nG(EGD9FwIdIBeExdY(u@r|c^e zq~&8>>^rhlQ5<8DdBVpXDTH%_)0^U)7-7Kn(l|SiQ9pN7Bi9YTc;<DW|y-t~K3vz^{Fl@!k zUG@ewJE9iqy<{KMTAtn?=~Ofq<-*o5*{jH2Hw<;;KBy!2m&joTnv;95mRVZ49PQj4 zcZ723IYPM%YokB$KtvlwAxCP9_84$Z*AJkL@@Yr3Q3uAIz!BPLTv!{;6G?*5^h=|} zTUG?E+z$3)zd)jyVM(@x@H!`R_fKVcnD3}&b~EP0p|fcvQLkJ5oU>6W_g2_X}b*~^4P=*FsnZi|tjoQ)M|cY0muUpR^R@9ZkbKws$X@+XN6Ax=aP z-`A8M9+aid-9}|mrw=e3h)$l4O}!`kef_yQ-FpVJw^^iwa%|{54?)V7y7yw6c^Md$ zP-0f}UJYR4NQ|Q1n{|we-a80H!Up9IhtK8fy&pXfl|EH6Vkxl#pY;12+v2#>L9L`H z`Mods<0OU!UbjHJt#OI1)`u#U<HYl@#4x{nrT4;VIn$rR6232{u0y*~)cJxW;iQNmK4d%dDG*_EZ)xZ5Lo z5@Djh(L4@Mn|yUO0n?syZ$MgBKI#O_lxKrdHQid8Q6-FYVf2L!lCVN~RyT5AygVsT zAJpk#1qr9;X{(^#fzUVfq23s#$Ur0wKL$(Wf#1z4l`V!BHaGbawcAJ37}?&Tf5%AK zVpM{3tTf_#*%Bi?oLG`5j@oFbxBUGjt{w@=UY2&v2#8r#=bRTu&a8^;DP{Z2<}_J) zmez1~_2bp$xKuUJv!B&TBxa_U$h^+%=bcn<4lh0cPk0lS=a+qlHfQ#0^)) z9#%RANWjO&xKX9%B7EjZ`qRXwHqg75RNec1swAN;Ra6l%wIF4J?wy##yvO^kFkN3i z=2bQ?KbVCp^x@wRX5sm}f=@oO^plv{kAKn8a`ra|{CniNR2 zJJN{|WIoN%Q!I66-<~AFGT|pJ(42s^TPc>wH)w?=B1FmrSF^c99>$}IA+x=*1EB3B zT6R6shf$D+zeM(+ebX~ldNCaL82CB6nA_-0DJoIAFWl8$N3%2xyZtPggh`I60*AzP zX zD`b>-Q>`V6p^g4HaRLoulaMOu|zrSN~PqM znjSh#OQwYW%$}W9NCq5Lh;@op6a~<|AEgzu3G;~Pv9h5{6&pg7FUY``7QmirMsY?W zb66lsT|fprQN$2K88SUUrX58lO*ciiSboDzAtCwQC4`{K zde|0piRmq)yNWtf3A6PvEqVE3ffoybvrSBIdEH}(l^`>eMKskigjfv)Z(5kgvKWZ) zD)QyI`C;BG->vOL zG>?q?g6`|!Y3nlr5A%`iX30xF#TB4$rv_g}(MvBNTNWo)pzr&t@1YPXZ^EE_Yo zo>s|HvNm)d&u-b&B1ze-@nv_rqhq!3taTiE)jO|Y&rwvDi*E`(x_fD=D|yJza$l)> z<(<0Z!_OU>j1 znfztQKz$B`ZCO`GZ#R?l*tDdvUR#+1`cOm<&;dM{u+=|Z#d*+e;=GKdqy3O4HisN{ z=p=vlZ*$xe(PACrb%zE*Px5p@9E+2W|MKt1AKG2Q;=L;L5G~GkX4*p^1%}DaEte0K zu(Tlr^#KFBeot5E6j~egp)W8w33eYGfuZroA%)aO8+1*?mmKlw-LPJi)8#0VacgFj zB`SYdS+G;_d+7d*2aaz`Qohh>YB)6rbPpAk*L~FD2gLATmX8FQb+y%~?%4sm#v&IT z?VheGl`JcIU*%|kAu7eo!lJ|a7}2#x!80DSN;yFaIY+I~Wo$zO#{&01m_t6D7wA5R zx{o?a-B~}^hwFLy|4Kb8k6zECRcw}2Y^vS(PyBe}r>PO1=*E{>&N?-+`)#98PDks} z8$au)g|eD=sgz=*%F@mIUrNC?FJKK;4x?DbJr=LWcT`@!JlB&M=0$aUyl*04|XqyD}rTQy`Q__mfI6r z^FL|pp7+GFH&)C@D&)ULOC#ew&%9XK&IFpUrJy`H(Gm4_W_n|6#gr9G zts7F26QSzJrKsu|a-Vg!Ttw!2V)0K#waXd4-Zj0kZc8(laU1J9Qp1N*)}{CAdEBgS zXwPsQKF@LZVQOBB(d6)lQuo8(QvI|@_A}%jT5AjMJy84j$R(^R2L!*k=#Lk#e)+23 zpS|n-iVrgar!TTj4ikel%3-{$aQx@1GTvf6 zPAt^?-%{@V96U%YM$U4ycK$bKeJaX~vVEA0VnqQ#!ItG+Yfq`pxPIu$>?$-IVbm!z2O6K5ti|3SHvi@{mrD z{f0|!5G6Tgvbe@fcJnHbBMAj=nTOr-au36c5y*c^#Cfd@NdEgZEhpTer}p`)+2wWl zkLb=|FnDL|wAR4OUp)T#(BC$V|3~uYOI}(kN}M~0C10F@ z+DYYT6O@W>f|EAha^zh#li|>- zj;w}a-qy>fPisWAT_`=tMvDK>Qgn_Da_+lOtd+X$C;R9W4(L(RF)y$W<>+CF^vpo% zaV(g2yn!Ahd9}pTR#JAidF(Q>=O6~?eNF?DTFW%S!qNw)pe1bss4Vf*FU&S3$Ym40eiCI8K|?v^UCYh$YQ$pNoV z&2S^+#!6&HQk;BqFM#=)sxb*D6l(hA{sb{g$mN0=p_}}PGIgD5hwR;lN-gOab_6Q) zU}|ip3O(S&q}a@MotDn+Yh<~_tZ!of$V|EB=HMl}?|x+OC)clS9&op>Wx}>ccHMRA zRx$j{ieWcHL)+Jn*wJYN#%MMyV-jHHO9M05n7lH=S>I#n2sUqAs^gTyZhl@U^dPV} z*U~ekkkcZ@ToF~pDb9;wjELDe#ggQag3GF5j*4qH1#AEM@3TI6b>8SRr>(p7g|*Em zm+k%8Ns>xUI-`Pj(Mz?nZKOXhpZ5c21nfD}Pj0SccxgI4)e>nZE3Y5CK@y$ibHTDX zzKIWf^xXdI4}1O-Q#0zur*FIcR9*1k09loCa(Ml|)XjVMB%N)gdX!g7qSC#tH2BY? z1@E6y+_L$O2h#5^zx286-`qdAL=0;Fv_!EmVjm>&d=keWV=qq$dNGq%#5T7ak>Yjx zt~(ga`}NJgiW#}j`m4YLcY4tzMft9l^EvpL*_ z;(#_7CQ!0$1Nw+ZdvO+YO(Bz z=ZZY$W`jqhjF$sOelkT;V6AiWI*!n?*6g$(46vf6Jh#Zd( za_>)+``od7rjfcvJv7ThRIN6+8fS|6YHqw5nUAtCM9v2Ldr)0xc`z1oje3;m#hgHd zel9oh5Or>p&rVh3qhwm#kMv-ZohiEEDmk%Z8B7-mJhWP@tJm;Qywqx_`xs8twat{7 zF6MXF@r!sbT-9)M#9QY@Y|)aua2y|-i0sKihqD&!>z+wtFj}v2%8}Snd;Z3cf}8KU zB<6}S1@BDTa9i=b?Uz=ab4S_@GNuZGiL5tjwv5sVNgP~96HH7QhBGdi zDaKmE$3kRwv1xE)bHK;70-!7dEIqc}Q3}QmWk?CueFm?-ZK038GkGI?P$k73BcV*z zK9;mr;&AI?n&dlSjF#L56a7D}r`vCmq}viqwjb4f?*(?`Md>5cT6VPZf}FfUtJRTI z$IaVBBl(cGEovP%pW(Rq*N*F+@#;5|q8jPuKL&sM^r~rN-Z*jC%rEmVxb3DVN@M?U zOuZDgFps@5@4Dx6UX2yFfRk!ub)mKy78DKFfyFv7zeH<{*`-`>L^_pC7AL!0qX7f7 zrkP)1MH#3Avn#ceRi(Ab%<3w6AajuA4A#!NMY^dPSNo5Fw`F*2rsG&y_}9w_N1$c$ z@m7KIQzt)6l}xoa?Bn)~FeI{O=pX%9tuVqrvKXMkGB1#f4`;5lU;2tH&PSaZw|pPG z{mzTOx&E^kfBD6S*M3{{=7zTUbNin(bucf;OJ@%ei8Eico_R8JG5G2$U0!#!8(YAT z1Sa=r(P(CiJVL38QMGc{3&m*I5H^NlML`n!P>z{a$UnBMqG!w&`8QMK-z2%UvqYYm z#!>!I+6QUU6c#4=-mdYgC?O(DyyVCI)O7iJZ-0>^(-`{;u&(;lBFToq%*2&*N^IjU z8TNd_LbhJW-yCKpTO{m*F7!B#GUmwf75Q7T=vV(cvM4`asmWZ(OA~3_Pxih+E;iFP z1U5Rrv8r$yEh&H*Nr`!l(^f&^HA z`mK&<1Lz3d>*kvfThS0?JxS(J4^dVncR`T|PH8><{~~XA$r~+p2pC$Bh3+1KO=uyO zf9jhT#|135xlT1Nj)u&aY!lZpw;wpC<+@y@+o1bmhnzX$wi6)qGi| zmdVn^)Jwn+Ns&g%6S_2{Ug^<3VD(nj#RSdJb@?)U*3#alaIzqPsc4~&;r6784J z`c$XeAHQRG@T0sl@;`t6wBHW<)8rTTFZk!am^J^lw$^^`Uz2{arK%>EX_RiEbPMHJ z+HB4ce@*1u5m80I<52L~Gv0naQ2SwW#+ncBe)@%xZ@(57|NWq!Gy!RKw57G$dexFw zA5n;z9(O#7B$UY^C)^bYEb8USv@J(GF1`ZKgvip@EUabNU8ENQcadHo+~rnNln=}w zgMu)Z0vlyRl>}5yl@8fvb)({o0J7C#&X&`EtwJ*)?Ju+q0F- zAU38xwaJr~CZj^GpUbrj89i3w)-RWQwXUEGvLia5=z{D%B7$}A+Wm>!+7`yFbG3P}*bGvh%gHhFA3T zzBeDMMQg9N4Uf6DXuGS{>Oot{yX#n4)$Y0=>4=FCHGJ-RE_mAWd5gSnUGT4z!$l9r z>vly6IvdS0K%0zw1N5Xw8KeV!BlMnQ z*;uyl^v&M!oQzM#AdcX2IzuNRs6;o7mvbF#1Ja@7;gdzoFFyXSVEJKD^2@PTEN6hq z)z9tm=Bd3I=)qgj@*Sbm*fw~_dig)@l7oy;ls5kVJGU2mpO~jTG9+mK+zEV5Gjs|A zr^=a-qZ-|N{i6Rfv^2Y5B3t{=p3WfXSS>q%M|O{|EOsS;|+^jk|*?r zKi3{KOB(7M8h7!ExqNG8>dwuZ8`_UFF5Le3J+}wf-7_)nscX)-@|{a(Jsops{2#Aa z`)A8Uk*p1UzGTbLm!hqIz7$M7^mb4SL|<^SMyY!G`%?Av_oYoqlGU|u2p)PBgP+dTib{h`%^p} zMIuG+dpxWoX-mJ}EV6aLpvmsx@V8R2;=$G2^HdAyUf0agbZ=oCVvxI}bdbos{vw&N z0qAxOT{wkDQ1KQZ0oc3ei>e!lb8`<^twR5i5uvRZm>5MXnkdFfwDv6Q{>)*0ea#~b zRvxFCF5G5x1uO;ZqR~K;CA(O3G;bBR)w|~KpN}ximT@Ost&o?x$Sq#xu2;cQ8f#_WOV3U-eO?@u$dPHgdFt7boErxSuW)iW~5ZC(2f49jW1*zZwU!>)mX9j z^j9k-EOeGA@@O%!D)dXSAk|7Jrwo=-<_I0|5Xcq9rPDCig&yZREm9*%7At zwTf6#F1`J7y=)0meX4CH2X)`kD#Jc#!I8-nLlM;=qN20GdGr3U4jQ4UjJR6kA^R ziE?0OTgl_(zaYtwBZ62l<|V0VazHarOw?G@L#NKdFxGu3Ma+^SP7oy%`;0z~a&bxk z#9ZYPTTqPJA__9bDK6|wa>y=rbu#WaA#$=2k|N3Q3Z3A=@~3OTp^qLz40I>Qy$d~D z=dt3P;*lj(YD%0G?Bs1@W+Q{T|I99okhFcZO%Nq0# z&Ep6iBCZ`eU93(W+?k{L@TW@i@um+(dUTt)yb#wj+@B-6lUPUSez&(q?vM_jhkDjC zJrLx-%A$?vJGPRfAI7nG0U4edFH7%Sv- zfo(*r+U@pYC~$YBJGQyKWn$IUcAHpk&cVRM79%GUeisZL_7m$q9gqG-HqCiSC( zMaYCM7Wu%?Wfv%NtlCSzqP4;~PdK#B@Wo0M^6D`+z1h||n2VXJGOjDhG0*KSVyDSy zWkJo6snyToB3agO5}wAHzt@3{A(JP0RapCKWz1loc8gU)-*|Le40f9o~S zZN{L};;#0!#aliS-_Ll<>mAK_(|1{?i;|5b^~rG6mxyhM_U4m)na`4v7}Jtum)}nk z_le2HC%z=P*_Oo02ScaAb}n9Rld$2k)kW^*iTT~@pkSFIHna0-k=`{dmt$qW$Nca* zLMOSsrNRt7uv8B0x1mSqUYjTvo9V<@J{QWA7$}p2^D^G}(^5-v2%YWrW~*_$o~dLY zS9457Td)Afh*X7trSQkg?R@E#Of{BcS!tX&wNOtpvH9!NS*cPu{&lmsG1g<{LUpXQ zvkzS$V}zcKQK8GkJ40u8h1*+*^2jaJ(1UL8Af^@(P(^$1P4v;q{d*rogQisqma$Uw zKITtks?piJ|HE_4H?M=kzFZZw9vjfJUVmeGanDI5@y2?d!sd<-nDvFALIfg*#t*6) z_dt&ae|JOgzUr5|ht3aFo^aZSho-EWykM7BB>cm&e`*gY`d6*vK{XQ%fDKWazqpnG zQpl$?^gu^Y@;^|^dcD?*s_fwk>+XoS~4!uW-v9~{owkvPIiq2}5c4iw{ zbp^k=dUQi->^-ent`XgLWNo}OW>UY`1}{f<%SXCt`9Gemf{YP zOs@V5cm;P?gRL+}%zQ`7@txpR-+c4NO=rG8{=@U;&(D|;Q@XL{*Vgtu!P=rHSX=Z& zYcro%DkprRm5P0-DLHW@LX876Xl}EQBbM;`?yJb=Bf@MrE77XpL!mq^zhQ(n_EWMMb#9|vrkXM^|4Uta^ zNbDr3o&KS9gSE?Mjy~eMVMnRW>`B3lh2N`nP5W~ne)qJB&$6Db8U4|Y8M-z}tS+*v zv92Qotl9)hWlLI|La~!%Ei9Hp88io!H+NfHpB*D$Tg|O6LCGjeHO9P*qS?1V_XYj? zKFOT6?Y-VhFPib_?oW>U>yT4Qf3CA1YGpXIRQf7?I2jHXLC&bw%`%Q=sj-`A3VxIU z9X`tlpN}6&A_@4H8ciovNLcm5rlSh!)|h0*8DIbUkd1>C%^5r7zc|zm{Sd#WpW80k_~?>NJ!;7kmQGz7{wCUw6lhLj@bku# ze*Nj^_uP`TZ071qPET0-{8V%{Y5P zK);hKL9=G)pjkD2LBken6T`4o+L=+OBg||F=q-diGk!Zw&zVlE-^CovIm+4Q(Qav7 zx9>qU=c!=&eP92qv(!J97hT4--d+07@<;wr7`k;O*4rd8tBXp-i#=$)BH*LnQ&`O# zhP*=Ukrj>7{lJ%OhoPGMq%SqXJ(|xaujK~hJq4~#Y1JP`_86{IULQhpPD_& z643nr40EcAEZ(+mzPUrp9{x>4Ye8GH?Hb zYTk*#%zMwAGT`d^H~tuWt1L5X-tRXReWK+ERx241>^`&;XW3WdEK%vRcs`4lV4(yH zC0Qt`s_4fGqL(W^%y5(f%})w;t@C|*fBC=i&a4|Th9O+)v`r^EVu7$kZ55cFao_Kr1yKyUv-uw5yx~ms_`r^3_J9YVEtrahJh(__+{^O3< zb|bgnb|&Q=Eu)`kumv-M&pkcjmH$?{9_bkQ_`H*9W@H_Hd+m2RizF-2B+Dk1Y-Jd< z0)vzK$r^V-H3x))Go)E$En>SRmOko?9m&rI1|PO1yKQKP@-8`~CKX-(URtUFT+QdhNB= z&p!QpO}=DM;L}}G?AHgY1(s@3XbrUDB+V;G)=pW9HWL*FbKUF5SkTY z-Irs<7`NLywVyl4o+mY_%Z<44+8_P1tNRlJWYLb`@)7$MEdJM5SI&BN^6s0q-a6$^ zPyFm|srHOQU8mVax-v71HJVjYmBdN?hJoC~=RG_`x3$oe4AqrP9j0Ry57(nOe}ry; z{E_;UJA2e1y`+z4TaG~DptRr0$u!2e1OzSh;6o7d!(~PLwyJDK#2(?bt_bl=oYk9h z0-tDgXhepZTCK>g#S4S4RUGTuvn=o1xBjwV%h;-yQ+GE0?PDoHz;Bg6{AJ13wH}eK zgHkC?tY~j!B?iXIp6RK&I|Nkq)I@+|Q_q4_R!7;bacia-d&(=PW)w827fy$otK2BxNZVSjxrno1>K0v9`o`c#g={e1I&$7eMx7|x@_X^v+ zM!OX~H)*%J=ML?b_1tH>zt!&eo+q_i+ViY-(|b?Jmi*Ft&$8X~v!%XSy$_~pbwZf= zy-%k~;}!2>+MB9J^6}}KALavC2r0Mv;Na$U8#fpn=fUMBRI$3Gk~m zq0jYmh5Dn3N)?9wqj7GxQ@eTH^3_Dj)9urb=5_~cH%+@a-C5er>dx10|Lzj)7Is$z ziZ<{+8FUW{gtZq=@SXdUlxzP?F$OM`HKndx#~JnGafZ3;eAan6ZP`6p7iMPn4DD8S z&(WDxbT8Cye)lr%R&}q^{PON~+8xwguiX{hTeX|jy#s?0|K-DKy&C2mqm{r;`)0|E)};p^!cnK6d`Mx5i{195C|_ Xr`(!ZzBT5x>n6!#q1)=^ZP@=0`!45( literal 0 HcmV?d00001 diff --git a/dotnetcore2.1/run/update_libs.sh b/dotnetcore2.1/run/update_libs.sh index d6ca17dd..024c526e 100755 --- a/dotnetcore2.1/run/update_libs.sh +++ b/dotnetcore2.1/run/update_libs.sh @@ -1,7 +1,7 @@ #!/bin/sh curl https://lambci.s3.amazonaws.com/fs/dotnetcore2.1.tgz | \ - tar -xz var/runtime/Amazon.Lambda.Core.dll var/runtime/Bootstrap.dll + tar -xz var/runtime/Amazon.Lambda.Core.dll var/runtime/Bootstrap.dll var/runtime/Bootstrap.pdb -mv ./var/runtime/*.dll ./MockBootstraps/lib/ +mv ./var/runtime/*.dll ./var/runtime/*.pdb ./MockBootstraps/lib/ rm -rf ./var diff --git a/examples/dotnetcore2.1/test.csproj b/examples/dotnetcore2.1/test.csproj index 67a6e625..d6a026b0 100644 --- a/examples/dotnetcore2.1/test.csproj +++ b/examples/dotnetcore2.1/test.csproj @@ -7,7 +7,7 @@ - + From a4c2b94aaaa1e9a10d7ec84804a31d2269124a43 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 5 Oct 2019 17:18:08 -0400 Subject: [PATCH 007/234] Lint init.go --- provided/run/init.go | 124 +++++++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 59 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index 389fab23..4fd33bb3 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -25,9 +25,15 @@ import ( "github.com/go-chi/render" ) -var okStatusResponse = &StatusResponse{Status: "OK", HTTPStatusCode: 202} +type key int -var curRequestID = fakeGuid() +const ( + keyRequestID key = iota +) + +var okStatusResponse = &statusResponse{Status: "OK", HTTPStatusCode: 202} + +var curRequestID = fakeGUID() var curState = "STATE_INIT" var transitions = map[string]map[string]bool{ @@ -37,11 +43,11 @@ var transitions = map[string]map[string]bool{ "STATE_INVOKE_ERROR": map[string]bool{"STATE_INVOKE_NEXT": true}, } -var mockContext = &MockLambdaContext{} +var mockContext = &mockLambdaContext{} func main() { rand.Seed(time.Now().UTC().UnixNano()) - curRequestID = fakeGuid() + curRequestID = fakeGUID() bootstrapPath := flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") bootstrapArgsString := flag.String("bootstrap-args", "[]", "additional arguments passed to bootstrap, as a stringified JSON Array") @@ -77,15 +83,15 @@ func main() { } } - mockContext = &MockLambdaContext{ + mockContext = &mockLambdaContext{ EventBody: eventBody, FnName: getEnv("AWS_LAMBDA_FUNCTION_NAME", "test"), Version: getEnv("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"), MemSize: getEnv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536"), Timeout: getEnv("AWS_LAMBDA_FUNCTION_TIMEOUT", "300"), Region: getEnv("AWS_REGION", getEnv("AWS_DEFAULT_REGION", "us-east-1")), - AccountId: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), - XAmznTraceId: getEnv("_X_AMZN_TRACE_ID", ""), + AccountID: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), + XAmznTraceID: getEnv("_X_AMZN_TRACE_ID", ""), ClientContext: getEnv("AWS_LAMBDA_CLIENT_CONTEXT", ""), CognitoIdentity: getEnv("AWS_LAMBDA_COGNITO_IDENTITY", ""), Start: time.Now(), @@ -106,7 +112,7 @@ func main() { os.Setenv("AWS_LAMBDA_LOG_STREAM_NAME", logStreamName(mockContext.Version)) os.Setenv("AWS_REGION", mockContext.Region) os.Setenv("AWS_DEFAULT_REGION", mockContext.Region) - os.Setenv("_X_AMZN_TRACE_ID", mockContext.XAmznTraceId) + os.Setenv("_X_AMZN_TRACE_ID", mockContext.XAmznTraceID) os.Setenv("_HANDLER", handler) var cmd *exec.Cmd @@ -134,7 +140,7 @@ func main() { mockContext.Cmd = cmd - render.Respond = renderJson + render.Respond = renderJSON r := chi.NewRouter() @@ -151,8 +157,8 @@ func main() { r. With(updateState("STATE_INVOKE_NEXT")). Get("/invocation/next", func(w http.ResponseWriter, r *http.Request) { - if mockContext.RequestId == "" { - mockContext.RequestId = curRequestID + if mockContext.RequestID == "" { + mockContext.RequestID = curRequestID mockContext.InitEnd = time.Now() logStartRequest() } else if mockContext.Reply != nil { @@ -164,7 +170,7 @@ func main() { w.Header().Set("Lambda-Runtime-Aws-Request-Id", curRequestID) w.Header().Set("Lambda-Runtime-Deadline-Ms", strconv.FormatInt(mockContext.Deadline().UnixNano()/1e6, 10)) w.Header().Set("Lambda-Runtime-Invoked-Function-Arn", mockContext.InvokedFunctionArn) - w.Header().Set("Lambda-Runtime-Trace-Id", mockContext.XAmznTraceId) + w.Header().Set("Lambda-Runtime-Trace-Id", mockContext.XAmznTraceID) if mockContext.ClientContext != "" { w.Header().Set("Lambda-Runtime-Client-Context", mockContext.ClientContext) @@ -184,7 +190,7 @@ func main() { Post("/response", func(w http.ResponseWriter, r *http.Request) { body, err := ioutil.ReadAll(r.Body) if err != nil { - render.Render(w, r, &ErrResponse{ + render.Render(w, r, &errResponse{ HTTPStatusCode: 500, ErrorType: "BodyReadError", // TODO: not sure what this would be in production? ErrorMessage: err.Error(), @@ -192,7 +198,7 @@ func main() { return } - mockContext.Reply = &InvokeResponse{Payload: body} + mockContext.Reply = &invokeResponse{Payload: body} render.Render(w, r, okStatusResponse) w.(http.Flusher).Flush() @@ -241,12 +247,12 @@ func main() { } func handleErrorRequest(w http.ResponseWriter, r *http.Request) { - lambdaErr := &LambdaError{} - statusResponse := okStatusResponse + lambdaErr := &lambdaError{} + response := okStatusResponse body, err := ioutil.ReadAll(r.Body) if err != nil || json.Unmarshal(body, lambdaErr) != nil { - statusResponse = &StatusResponse{Status: "InvalidErrorShape", HTTPStatusCode: 299} + response = &statusResponse{Status: "InvalidErrorShape", HTTPStatusCode: 299} } errorType := r.Header.Get("Lambda-Runtime-Function-Error-Type") @@ -254,9 +260,9 @@ func handleErrorRequest(w http.ResponseWriter, r *http.Request) { lambdaErr.Type = errorType } - mockContext.Reply = &InvokeResponse{Error: lambdaErr} + mockContext.Reply = &invokeResponse{Error: lambdaErr} - render.Render(w, r, statusResponse) + render.Render(w, r, response) w.(http.Flusher).Flush() endInvoke(nil) @@ -266,7 +272,7 @@ func updateState(nextState string) func(http.Handler) http.Handler { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if _, ok := transitions[nextState][curState]; !ok { - render.Render(w, r, &ErrResponse{ + render.Render(w, r, &errResponse{ HTTPStatusCode: 403, ErrorType: "InvalidStateTransition", ErrorMessage: fmt.Sprintf("Transition from %s to %s is not allowed.", curState, nextState), @@ -284,7 +290,7 @@ func awsRequestIDValidator(next http.Handler) http.Handler { requestID := chi.URLParam(r, "requestID") if requestID != curRequestID { - render.Render(w, r, &ErrResponse{ + render.Render(w, r, &errResponse{ HTTPStatusCode: 400, ErrorType: "InvalidRequestID", ErrorMessage: "Invalid request ID", @@ -292,34 +298,34 @@ func awsRequestIDValidator(next http.Handler) http.Handler { return } - ctx := context.WithValue(r.Context(), "requestID", requestID) + ctx := context.WithValue(r.Context(), keyRequestID, requestID) next.ServeHTTP(w, r.WithContext(ctx)) }) } -type StatusResponse struct { +type statusResponse struct { HTTPStatusCode int `json:"-"` Status string `json:"status"` } -func (sr *StatusResponse) Render(w http.ResponseWriter, r *http.Request) error { +func (sr *statusResponse) Render(w http.ResponseWriter, r *http.Request) error { render.Status(r, sr.HTTPStatusCode) return nil } -type ErrResponse struct { +type errResponse struct { HTTPStatusCode int `json:"-"` ErrorType string `json:"errorType,omitempty"` ErrorMessage string `json:"errorMessage"` } -func (e *ErrResponse) Render(w http.ResponseWriter, r *http.Request) error { +func (e *errResponse) Render(w http.ResponseWriter, r *http.Request) error { render.Status(r, e.HTTPStatusCode) return nil } -func renderJson(w http.ResponseWriter, r *http.Request, v interface{}) { +func renderJSON(w http.ResponseWriter, r *http.Request, v interface{}) { buf := &bytes.Buffer{} enc := json.NewEncoder(buf) enc.SetEscapeHTML(true) @@ -336,13 +342,13 @@ func renderJson(w http.ResponseWriter, r *http.Request, v interface{}) { } func abortRequest(err error) { - endInvoke(&ExitError{err: err}) + endInvoke(&exitError{err: err}) } func endInvoke(err error) { logStart := false - if mockContext.RequestId == "" { - mockContext.RequestId = curRequestID + if mockContext.RequestID == "" { + mockContext.RequestID = curRequestID logStart = true } mockContext.MaxMem, _ = allProcsMemoryInMb() @@ -357,7 +363,7 @@ func endInvoke(err error) { } func logStartRequest() { - systemLog("START RequestId: " + mockContext.RequestId + " Version: " + mockContext.Version) + systemLog("START RequestId: " + mockContext.RequestID + " Version: " + mockContext.Version) } func logEndRequest(err error) { @@ -376,7 +382,7 @@ func logEndRequest(err error) { initStr = fmt.Sprintf("Init Duration: %.2f ms\t", initDiffMs) } - systemLog("END RequestId: " + mockContext.RequestId) + systemLog("END RequestId: " + mockContext.RequestID) systemLog(fmt.Sprintf( "REPORT RequestId: %s\t"+ initStr+ @@ -384,21 +390,21 @@ func logEndRequest(err error) { "Billed Duration: %.f ms\t"+ "Memory Size: %s MB\t"+ "Max Memory Used: %d MB\t", - mockContext.RequestId, diffMs, math.Ceil(diffMs/100)*100, mockContext.MemSize, mockContext.MaxMem)) + mockContext.RequestID, diffMs, math.Ceil(diffMs/100)*100, mockContext.MemSize, mockContext.MaxMem)) if err == nil && mockContext.HasExpired() { err = mockContext.TimeoutErr() } if err != nil { - responseErr := LambdaError{ + responseErr := lambdaError{ Message: err.Error(), Type: getErrorType(err), } if responseErr.Type == "errorString" { responseErr.Type = "" if responseErr.Message == "unexpected EOF" { - responseErr.Message = "RequestId: " + mockContext.RequestId + " Process exited before completing request" + responseErr.Message = "RequestId: " + mockContext.RequestID + " Process exited before completing request" } } else if responseErr.Type == "ExitError" { responseErr.Type = "Runtime.ExitError" // XXX: Hack to add 'Runtime.' to error type @@ -432,7 +438,7 @@ func getEnv(key, fallback string) string { return fallback } -func fakeGuid() string { +func fakeGUID() string { randBuf := make([]byte, 16) rand.Read(randBuf) @@ -463,9 +469,9 @@ func logStreamName(version string) string { return time.Now().Format("2006/01/02") + "/[" + version + "]" + string(hexBuf) } -func arn(region string, accountId string, fnName string) string { +func arn(region string, accountID string, fnName string) string { nonDigit := regexp.MustCompile(`[^\d]`) - return "arn:aws:lambda:" + region + ":" + nonDigit.ReplaceAllString(accountId, "") + ":function:" + fnName + return "arn:aws:lambda:" + region + ":" + nonDigit.ReplaceAllString(accountID, "") + ":function:" + fnName } func allProcsMemoryInMb() (uint64, error) { @@ -516,11 +522,11 @@ func calculateMemoryInKb(pid int) (uint64, error) { } func getErrorType(err interface{}) string { - if errorType := reflect.TypeOf(err); errorType.Kind() == reflect.Ptr { + errorType := reflect.TypeOf(err) + if errorType.Kind() == reflect.Ptr { return errorType.Elem().Name() - } else { - return errorType.Name() } + return errorType.Name() } func systemLog(msg string) { @@ -528,35 +534,35 @@ func systemLog(msg string) { } // Try to match the output of the Lambda web console -func systemErr(err *LambdaError) { +func systemErr(err *lambdaError) { jsonBytes, _ := json.MarshalIndent(err, "", " ") fmt.Fprintln(os.Stderr, "\033[31m"+string(jsonBytes)+"\033[0m") } -type ExitError struct { +type exitError struct { err error } -func (e *ExitError) Error() string { +func (e *exitError) Error() string { return fmt.Sprintf("RequestId: %s Error: %s", curRequestID, e.err.Error()) } -type LambdaError struct { +type lambdaError struct { Type string `json:"errorType,omitempty"` Message string `json:"errorMessage"` StackTrace []*string `json:"stackTrace,omitempty"` } -type MockLambdaContext struct { - RequestId string +type mockLambdaContext struct { + RequestID string EventBody string FnName string Version string MemSize string Timeout string Region string - AccountId string - XAmznTraceId string + AccountID string + XAmznTraceID string InvokedFunctionArn string ClientContext string CognitoIdentity string @@ -564,13 +570,13 @@ type MockLambdaContext struct { InitEnd time.Time TimeoutDuration time.Duration Pid int - Reply *InvokeResponse + Reply *invokeResponse Done chan bool Cmd *exec.Cmd MaxMem uint64 } -func (mc *MockLambdaContext) ParseTimeout() { +func (mc *mockLambdaContext) ParseTimeout() { timeoutDuration, err := time.ParseDuration(mc.Timeout + "s") if err != nil { panic(err) @@ -578,24 +584,24 @@ func (mc *MockLambdaContext) ParseTimeout() { mc.TimeoutDuration = timeoutDuration } -func (mc *MockLambdaContext) ParseFunctionArn() { - mc.InvokedFunctionArn = getEnv("AWS_LAMBDA_FUNCTION_INVOKED_ARN", arn(mc.Region, mc.AccountId, mc.FnName)) +func (mc *mockLambdaContext) ParseFunctionArn() { + mc.InvokedFunctionArn = getEnv("AWS_LAMBDA_FUNCTION_INVOKED_ARN", arn(mc.Region, mc.AccountID, mc.FnName)) } -func (mc *MockLambdaContext) Deadline() time.Time { +func (mc *mockLambdaContext) Deadline() time.Time { return mc.Start.Add(mc.TimeoutDuration) } -func (mc *MockLambdaContext) HasExpired() bool { +func (mc *mockLambdaContext) HasExpired() bool { return time.Now().After(mc.Deadline()) } -func (mc *MockLambdaContext) TimeoutErr() error { +func (mc *mockLambdaContext) TimeoutErr() error { return fmt.Errorf("%s %s Task timed out after %s.00 seconds", time.Now().Format("2006-01-02T15:04:05.999Z"), - mc.RequestId, mc.Timeout) + mc.RequestID, mc.Timeout) } -type InvokeResponse struct { +type invokeResponse struct { Payload []byte - Error *LambdaError + Error *lambdaError } From 13fb330121d82fa87792c358137c80866bbeaa5f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 17 Oct 2019 13:46:41 -0400 Subject: [PATCH 008/234] Add Microsoft.AspNetCore.App PackageReference to dotnetcore2.1 --- .../run/MockBootstraps/MockBootstraps.csproj | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj index 0f633077..ab507ce6 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj @@ -7,11 +7,13 @@ - - lib\Bootstrap.dll - - - lib\Amazon.Lambda.Core.dll - - + + lib\Bootstrap.dll + + + lib\Amazon.Lambda.Core.dll + + + + From 945e672f17cade7f162b7f56c9d78fba6d4500c8 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 17 Oct 2019 15:15:48 -0400 Subject: [PATCH 009/234] Use Microsoft.AspNetCore.All instead of Microsoft.AspNetCore.App --- .../run/MockBootstraps/MockBootstraps.csproj | 16 +++++++++------- .../run/MockBootstraps/MockBootstraps.csproj | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj index 6454122c..c1c4bf3e 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj @@ -7,11 +7,13 @@ - - lib\Bootstrap.dll - - - lib\Amazon.Lambda.Core.dll - - + + lib\Bootstrap.dll + + + lib\Amazon.Lambda.Core.dll + + + + diff --git a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj index ab507ce6..d59e19a2 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,7 @@ lib\Amazon.Lambda.Core.dll - + From 2b3af1858413878b18714ac5277870c626baea62 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 17 Oct 2019 15:19:18 -0400 Subject: [PATCH 010/234] Bump Microsoft.AspNetCore.All to 2.0.9 to make GitHub security checks happy --- dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj index c1c4bf3e..11067b83 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,7 @@ lib\Amazon.Lambda.Core.dll - + From c7fd3f2ab770b187b8e061f157acd53f54d037ee Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 17 Oct 2019 15:20:45 -0400 Subject: [PATCH 011/234] Remove version specifiers from Microsoft.AspNetCore.All so that there's no security checking --- dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj | 2 +- dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj index 11067b83..52b049dc 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,7 @@ lib\Amazon.Lambda.Core.dll - + diff --git a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj index d59e19a2..6ead4598 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,7 @@ lib\Amazon.Lambda.Core.dll - + From 95c382d8909445f6226d08732e092b20d5a4e434 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 17 Oct 2019 15:27:44 -0400 Subject: [PATCH 012/234] Ok, so add specifiers back in, just greater than what GitHub recommends --- dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj | 2 +- dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj index 52b049dc..11067b83 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,7 @@ lib\Amazon.Lambda.Core.dll - + diff --git a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj index 6ead4598..7a20c042 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,7 @@ lib\Amazon.Lambda.Core.dll - + From 7f39da18fbbcca09ac5806003afe0bc46586f6b6 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 17 Oct 2019 18:08:41 -0400 Subject: [PATCH 013/234] Update aws-lambda-builders to 0.5.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 9f9b7035..54dc7640 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e7750c8a..c7b1084d 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index e9e81e87..a2e76b15 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -17,6 +17,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 8fd895c1..0641cbed 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 5c03d82f..cba615f5 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -10,4 +10,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip3 install -U pip setuptools --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 8322cee3..5a141a54 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 7833bbb7..1f4de8bc 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index d469fccc..276d866c 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 74e2e688..6f334a48 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 02c57251..aa9c5f62 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index a0ce3ee3..cf2f03f5 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index f5457f07..c605e519 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 4f5f4771..73288426 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir From 77c81b550fb0ef379ccf878652c0796ec21095ce Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 18 Oct 2019 11:38:34 -0400 Subject: [PATCH 014/234] Remove Microsoft.AspNetCore.All reference and traverse package dirs explicitly --- .../run/MockBootstraps/MockBootstraps.csproj | 1 - dotnetcore2.0/run/MockBootstraps/Program.cs | 25 ++++++++++++++++--- .../run/MockBootstraps/MockBootstraps.csproj | 1 - dotnetcore2.1/run/MockBootstraps/Program.cs | 25 ++++++++++++++++--- 4 files changed, 44 insertions(+), 8 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj index 11067b83..c7a2cca7 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,6 @@ lib\Amazon.Lambda.Core.dll - diff --git a/dotnetcore2.0/run/MockBootstraps/Program.cs b/dotnetcore2.0/run/MockBootstraps/Program.cs index da0fcd1f..e44ca8fe 100644 --- a/dotnetcore2.0/run/MockBootstraps/Program.cs +++ b/dotnetcore2.0/run/MockBootstraps/Program.cs @@ -5,6 +5,7 @@ using System.Runtime.Loader; using AWSLambda.Internal.Bootstrap; using AWSLambda.Internal.Bootstrap.Context; +using System.Linq; namespace MockLambdaRuntime { @@ -14,14 +15,21 @@ class Program private const bool WaitForDebuggerFlagDefaultValue = false; /// Task root of lambda task - static string lambdaTaskRoot = EnvHelper.GetOrDefault("LAMBDA_TASK_ROOT", "/var/task"); + static readonly string lambdaTaskRoot = EnvHelper.GetOrDefault("LAMBDA_TASK_ROOT", "/var/task"); private static readonly TimeSpan _debuggerStatusQueryInterval = TimeSpan.FromMilliseconds(50); private static readonly TimeSpan _debuggerStatusQueryTimeout = TimeSpan.FromMinutes(10); + private static readonly IList assemblyDirs = new List { lambdaTaskRoot }; + /// Program entry point static void Main(string[] args) { + // Add all /var/lang/bin/shared/*/* directories to the search path + foreach (var di in new DirectoryInfo("/var/lang/bin/shared").EnumerateDirectories().SelectMany(di => di.EnumerateDirectories().Select(di2 => di2))) + { + assemblyDirs.Add(di.FullName); + } AssemblyLoadContext.Default.Resolving += OnAssemblyResolving; try @@ -87,9 +95,20 @@ static void Main(string[] args) } /// Called when an assembly could not be resolved - private static Assembly OnAssemblyResolving(AssemblyLoadContext context, AssemblyName assembly) + private static Assembly OnAssemblyResolving(AssemblyLoadContext context, AssemblyName assemblyName) { - return context.LoadFromAssemblyPath(Path.Combine(lambdaTaskRoot, $"{assembly.Name}.dll")); + foreach (var dir in assemblyDirs) + { + try + { + return context.LoadFromAssemblyPath(Path.Combine(dir, $"{assemblyName.Name}.dll")); + } + catch (FileNotFoundException) + { + continue; + } + } + throw new FileNotFoundException($"{assemblyName.Name}.dll"); } /// Try to log everything to stderr except the function result diff --git a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj index 7a20c042..e09cc558 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj @@ -13,7 +13,6 @@ lib\Amazon.Lambda.Core.dll - diff --git a/dotnetcore2.1/run/MockBootstraps/Program.cs b/dotnetcore2.1/run/MockBootstraps/Program.cs index da0fcd1f..e44ca8fe 100644 --- a/dotnetcore2.1/run/MockBootstraps/Program.cs +++ b/dotnetcore2.1/run/MockBootstraps/Program.cs @@ -5,6 +5,7 @@ using System.Runtime.Loader; using AWSLambda.Internal.Bootstrap; using AWSLambda.Internal.Bootstrap.Context; +using System.Linq; namespace MockLambdaRuntime { @@ -14,14 +15,21 @@ class Program private const bool WaitForDebuggerFlagDefaultValue = false; /// Task root of lambda task - static string lambdaTaskRoot = EnvHelper.GetOrDefault("LAMBDA_TASK_ROOT", "/var/task"); + static readonly string lambdaTaskRoot = EnvHelper.GetOrDefault("LAMBDA_TASK_ROOT", "/var/task"); private static readonly TimeSpan _debuggerStatusQueryInterval = TimeSpan.FromMilliseconds(50); private static readonly TimeSpan _debuggerStatusQueryTimeout = TimeSpan.FromMinutes(10); + private static readonly IList assemblyDirs = new List { lambdaTaskRoot }; + /// Program entry point static void Main(string[] args) { + // Add all /var/lang/bin/shared/*/* directories to the search path + foreach (var di in new DirectoryInfo("/var/lang/bin/shared").EnumerateDirectories().SelectMany(di => di.EnumerateDirectories().Select(di2 => di2))) + { + assemblyDirs.Add(di.FullName); + } AssemblyLoadContext.Default.Resolving += OnAssemblyResolving; try @@ -87,9 +95,20 @@ static void Main(string[] args) } /// Called when an assembly could not be resolved - private static Assembly OnAssemblyResolving(AssemblyLoadContext context, AssemblyName assembly) + private static Assembly OnAssemblyResolving(AssemblyLoadContext context, AssemblyName assemblyName) { - return context.LoadFromAssemblyPath(Path.Combine(lambdaTaskRoot, $"{assembly.Name}.dll")); + foreach (var dir in assemblyDirs) + { + try + { + return context.LoadFromAssemblyPath(Path.Combine(dir, $"{assemblyName.Name}.dll")); + } + catch (FileNotFoundException) + { + continue; + } + } + throw new FileNotFoundException($"{assemblyName.Name}.dll"); } /// Try to log everything to stderr except the function result From bc38b5aa871b72a159c75ffbe3a194db4a67e9e2 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 2 Nov 2019 12:22:23 -0400 Subject: [PATCH 015/234] Update all build images to use Python 3.x for all pip packages (except python2.7) --- dotnetcore2.0/build/Dockerfile | 4 ++-- dotnetcore2.1/build/Dockerfile | 6 +++--- go1.x/build/Dockerfile | 6 +++--- java8/build/Dockerfile | 4 ++-- nodejs10.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 4 ++-- nodejs6.10/build/Dockerfile | 4 ++-- nodejs8.10/build/Dockerfile | 4 ++-- provided/build/Dockerfile | 4 ++-- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 4 ++-- 12 files changed, 23 insertions(+), 23 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 54dc7640..dae399b6 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index c7b1084d..db3b8270 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,8 +21,8 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ - dotnet tool install --global Amazon.Lambda.Tools --version 3.3.0 +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ + dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index a2e76b15..17e97750 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html -ENV GOLANG_VERSION=1.13.1 \ +ENV GOLANG_VERSION=1.13.4 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x @@ -16,7 +16,7 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 0641cbed..1a1e2332 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,5 +15,5 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index cba615f5..a85ece18 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -10,4 +10,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip3 install -U pip setuptools --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 5a141a54..d119faeb 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,7 +10,7 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 1f4de8bc..5813022c 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,7 +10,7 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 276d866c..2efc9c2e 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,7 +10,7 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 6f334a48..f204386a 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,5 +1,5 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index cf2f03f5..da737b89 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index c605e519..9d97eed5 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 73288426..77ac3f29 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,5 +13,5 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir + curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir From 121b329b5cd6d4398739e195177ffcf63828b790 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 2 Nov 2019 14:55:33 -0400 Subject: [PATCH 016/234] Update go1.x/run to use go modules --- .gitignore | 1 - go1.x/run/Dockerfile | 10 +++++----- go1.x/run/Gopkg.lock | 15 --------------- go1.x/run/Gopkg.toml | 3 --- go1.x/run/go.mod | 5 +++++ go1.x/run/go.sum | 13 +++++++++++++ 6 files changed, 23 insertions(+), 24 deletions(-) delete mode 100644 go1.x/run/Gopkg.lock delete mode 100644 go1.x/run/Gopkg.toml create mode 100644 go1.x/run/go.mod create mode 100644 go1.x/run/go.sum diff --git a/.gitignore b/.gitignore index 1f54115e..6cdca017 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,6 @@ bin obj examples/java/build go1.x/run/aws-lambda-mock -go1.x/run/vendor examples/go1.x/handler examples/dotnetcore2.0/pub examples/dotnetcore2.1/pub diff --git a/go1.x/run/Dockerfile b/go1.x/run/Dockerfile index 49789687..30e2f877 100644 --- a/go1.x/run/Dockerfile +++ b/go1.x/run/Dockerfile @@ -1,8 +1,8 @@ FROM golang:1 -WORKDIR /go/src/github.com/lambci/docker-lambda -RUN curl -sSL -o /usr/local/bin/dep https://github.com/golang/dep/releases/download/v0.5.0/dep-linux-amd64 && chmod +x /usr/local/bin/dep -COPY aws-lambda-mock.go Gopkg.toml Gopkg.lock ./ -RUN dep ensure +WORKDIR /app +COPY go.mod go.sum ./ +RUN go mod download +COPY aws-lambda-mock.go ./ RUN GOARCH=amd64 GOOS=linux go build aws-lambda-mock.go @@ -13,7 +13,7 @@ ENV AWS_EXECUTION_ENV=AWS_Lambda_go1.x RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/go1.x.tgz | tar -zx -C / -COPY --from=0 /go/src/github.com/lambci/docker-lambda/aws-lambda-mock /var/runtime/aws-lambda-go +COPY --from=0 /app/aws-lambda-mock /var/runtime/aws-lambda-go USER sbx_user1051 diff --git a/go1.x/run/Gopkg.lock b/go1.x/run/Gopkg.lock deleted file mode 100644 index 9969ecf5..00000000 --- a/go1.x/run/Gopkg.lock +++ /dev/null @@ -1,15 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - name = "github.com/aws/aws-lambda-go" - packages = ["lambda/messages"] - revision = "fafa7e49388b8991caf99308e80655ba91816b72" - version = "v1.1.0" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - inputs-digest = "3c793d7717a79ec1be981b49c1a1d884b15056f98188d915ec4b154f296eeceb" - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/go1.x/run/Gopkg.toml b/go1.x/run/Gopkg.toml deleted file mode 100644 index 97ec5bc8..00000000 --- a/go1.x/run/Gopkg.toml +++ /dev/null @@ -1,3 +0,0 @@ -[[constraint]] - name = "github.com/aws/aws-lambda-go" - version = "1.1.0" diff --git a/go1.x/run/go.mod b/go1.x/run/go.mod new file mode 100644 index 00000000..5a5837c4 --- /dev/null +++ b/go1.x/run/go.mod @@ -0,0 +1,5 @@ +module aws-lambda-mock + +require github.com/aws/aws-lambda-go v1.13.2 + +go 1.13 diff --git a/go1.x/run/go.sum b/go1.x/run/go.sum new file mode 100644 index 00000000..d1f9fee8 --- /dev/null +++ b/go1.x/run/go.sum @@ -0,0 +1,13 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/aws/aws-lambda-go v1.13.2 h1:8lYuRVn6rESoUNZXdbCmtGB4bBk4vcVYojiHjE4mMrM= +github.com/aws/aws-lambda-go v1.13.2/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From aab5852f89e5bb8f391b3cee8a64852ba2d4398e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 2 Nov 2019 15:05:35 -0400 Subject: [PATCH 017/234] Update go1.x example to use go modules --- README.md | 6 +++--- base/test-all.sh | 2 +- examples/go1.x/Gopkg.lock | 25 ------------------------- examples/go1.x/Gopkg.toml | 3 --- examples/go1.x/go.mod | 5 +++++ examples/go1.x/go.sum | 13 +++++++++++++ examples/go1.x/handler.go | 7 ++++--- 7 files changed, 26 insertions(+), 35 deletions(-) delete mode 100644 examples/go1.x/Gopkg.lock delete mode 100644 examples/go1.x/Gopkg.toml create mode 100644 examples/go1.x/go.mod create mode 100644 examples/go1.x/go.sum diff --git a/README.md b/README.md index 29c68795..5851aafb 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.myHandler '{" # Use the Node.js v8.10 runtime in a similar fashion docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 index.myHandler '{}' - + # Use the Node.js v6.10 runtime with the default handler (index.handler) docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs6.10 @@ -111,8 +111,8 @@ To use the build images, for compilation, deployment, etc: # To compile native deps in node_modules docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs10.x npm rebuild -# To resolve dependencies on go1.x (working directory is /go/src/handler, will run `dep ensure`) -docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x +# To resolve dependencies on go1.x (working directory is /go/src/handler) +docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x go mod download # For .NET Core 2.0, this will publish the compiled code to `./pub`, # which you can then use to run with `-v "$PWD"/pub:/var/task` diff --git a/base/test-all.sh b/base/test-all.sh index a5f9c610..cac7d39d 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -40,7 +40,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.1 dotnet pub docker run --rm -v "$PWD"/pub:/var/task lambci/lambda:dotnetcore2.1 test::test.Function::FunctionHandler '{"some": "event"}' cd ${EXAMPLES_DIR}/go1.x -docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'dep ensure && go build handler.go' +docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'go mod download && go build handler.go' docker run --rm -v "$PWD":/var/task lambci/lambda:go1.x handler '{"Records": []}' cd ${EXAMPLES_DIR}/provided diff --git a/examples/go1.x/Gopkg.lock b/examples/go1.x/Gopkg.lock deleted file mode 100644 index 04cbf573..00000000 --- a/examples/go1.x/Gopkg.lock +++ /dev/null @@ -1,25 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:8b55da6790eeade578c1fd4ebaa5b0e641072172e1d743f3cb945ae73af463f9" - name = "github.com/aws/aws-lambda-go" - packages = [ - "events", - "lambda", - "lambda/messages", - "lambdacontext", - ] - pruneopts = "" - revision = "2d482ef09017ae953b1e8d5a6ddac5b696663a3c" - version = "v1.6.0" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "github.com/aws/aws-lambda-go/events", - "github.com/aws/aws-lambda-go/lambda", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/examples/go1.x/Gopkg.toml b/examples/go1.x/Gopkg.toml deleted file mode 100644 index 149d48d7..00000000 --- a/examples/go1.x/Gopkg.toml +++ /dev/null @@ -1,3 +0,0 @@ -[[constraint]] - name = "github.com/aws/aws-lambda-go" - version = "1.6.0" diff --git a/examples/go1.x/go.mod b/examples/go1.x/go.mod new file mode 100644 index 00000000..5a5837c4 --- /dev/null +++ b/examples/go1.x/go.mod @@ -0,0 +1,5 @@ +module aws-lambda-mock + +require github.com/aws/aws-lambda-go v1.13.2 + +go 1.13 diff --git a/examples/go1.x/go.sum b/examples/go1.x/go.sum new file mode 100644 index 00000000..d1f9fee8 --- /dev/null +++ b/examples/go1.x/go.sum @@ -0,0 +1,13 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/aws/aws-lambda-go v1.13.2 h1:8lYuRVn6rESoUNZXdbCmtGB4bBk4vcVYojiHjE4mMrM= +github.com/aws/aws-lambda-go v1.13.2/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/examples/go1.x/handler.go b/examples/go1.x/handler.go index 69ce5aae..29f361a0 100644 --- a/examples/go1.x/handler.go +++ b/examples/go1.x/handler.go @@ -1,5 +1,5 @@ // Compile with: -// docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'dep ensure && go build handler.go' +// docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'go mod download && go build handler.go' // Run with: // docker run --rm -v "$PWD":/var/task lambci/lambda:go1.x handler '{"Records": []}' @@ -9,11 +9,12 @@ package main import ( "context" "fmt" + "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" ) -func HandleRequest(ctx context.Context, event events.S3Event) (string, error) { +func handleRequest(ctx context.Context, event events.S3Event) (string, error) { fmt.Println(ctx) fmt.Println(event) @@ -22,5 +23,5 @@ func HandleRequest(ctx context.Context, event events.S3Event) (string, error) { } func main() { - lambda.Start(HandleRequest) + lambda.Start(handleRequest) } From 69ef42e55ce8ccbb4193ccfe5e09529664df72b0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 2 Nov 2019 15:09:47 -0400 Subject: [PATCH 018/234] Update provided to use chi v4.0.2 --- provided/run/Dockerfile | 2 +- provided/run/go.mod | 2 +- provided/run/go.sum | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 provided/run/go.sum diff --git a/provided/run/Dockerfile b/provided/run/Dockerfile index 42c4da70..c7b1f41c 100644 --- a/provided/run/Dockerfile +++ b/provided/run/Dockerfile @@ -1,6 +1,6 @@ FROM golang:1 WORKDIR /app -COPY go.mod ./ +COPY go.mod go.sum ./ RUN go mod download COPY init.go ./ RUN GOARCH=amd64 GOOS=linux go build init.go diff --git a/provided/run/go.mod b/provided/run/go.mod index d2cabad7..0f8b9c00 100644 --- a/provided/run/go.mod +++ b/provided/run/go.mod @@ -1,6 +1,6 @@ module init require ( - github.com/go-chi/chi v3.3.3+incompatible + github.com/go-chi/chi v4.0.2+incompatible github.com/go-chi/render v1.0.1 ) diff --git a/provided/run/go.sum b/provided/run/go.sum new file mode 100644 index 00000000..9efc7108 --- /dev/null +++ b/provided/run/go.sum @@ -0,0 +1,4 @@ +github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= +github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= +github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= From b811ac90142f42fd0cf8cb33292a450b935a68ea Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 2 Nov 2019 16:22:22 -0400 Subject: [PATCH 019/234] Update java example to ensure we build on java 8 --- base/test-all.sh | 2 +- examples/java/README.md | 2 +- examples/java/build.gradle | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/base/test-all.sh b/base/test-all.sh index cac7d39d..adabcded 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -28,7 +28,7 @@ cd ${EXAMPLES_DIR}/ruby docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda_handler cd ${EXAMPLES_DIR}/java -gradle build +docker run --rm -v "$PWD":/app -w /app gradle gradle build docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' cd ${EXAMPLES_DIR}/dotnetcore2.0 diff --git a/examples/java/README.md b/examples/java/README.md index 4f69c6d8..72bba02f 100644 --- a/examples/java/README.md +++ b/examples/java/README.md @@ -7,7 +7,7 @@ Run with: ```sh # Will place the compiled code in `./build/docker` -gradle build +docker run --rm -v "$PWD":/app -w /app gradle gradle build # Then you can run using that directory as the task directory docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' diff --git a/examples/java/build.gradle b/examples/java/build.gradle index 09fb11af..b0652974 100644 --- a/examples/java/build.gradle +++ b/examples/java/build.gradle @@ -1,13 +1,16 @@ apply plugin: 'java' +sourceCompatibility = '1.8' +targetCompatibility = '1.8' + repositories { mavenCentral() } dependencies { compile ( - 'com.amazonaws:aws-lambda-java-core:1.1.0', - 'com.amazonaws:aws-lambda-java-events:1.1.0' + 'com.amazonaws:aws-lambda-java-core:1.2.0', + 'com.amazonaws:aws-lambda-java-events:2.2.7' ) } From e11a9a34b3f2099a83ac161445e4d68b41784e47 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 2 Nov 2019 16:50:29 -0400 Subject: [PATCH 020/234] Linting go1.x/run --- go1.x/run/aws-lambda-mock.go | 63 ++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index 86bdd2fa..129c578a 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -7,7 +7,6 @@ import ( "encoding/json" "flag" "fmt" - "github.com/aws/aws-lambda-go/lambda/messages" "io/ioutil" "math" "math/rand" @@ -20,6 +19,8 @@ import ( "strconv" "syscall" "time" + + "github.com/aws/aws-lambda-go/lambda/messages" ) func main() { @@ -28,7 +29,7 @@ func main() { debugMode := flag.Bool("debug", false, "enables delve debugging") delvePath := flag.String("delvePath", "/tmp/lambci_debug_files/dlv", "path to delve") delvePort := flag.String("delvePort", "5985", "port to start delve server on") - delveAPI := flag.String("delveAPI", "1", "delve api version") + delveAPI := flag.String("delveAPI", "1", "delve api version") flag.Parse() positionalArgs := flag.Args() var handler string @@ -53,15 +54,15 @@ func main() { } } - mockContext := &MockLambdaContext{ - RequestId: fakeGuid(), + mockContext := &mockLambdaContext{ + RequestID: fakeGUID(), EventBody: eventBody, FnName: getEnv("AWS_LAMBDA_FUNCTION_NAME", "test"), Version: getEnv("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"), MemSize: getEnv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536"), Timeout: getEnv("AWS_LAMBDA_FUNCTION_TIMEOUT", "300"), Region: getEnv("AWS_REGION", getEnv("AWS_DEFAULT_REGION", "us-east-1")), - AccountId: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), + AccountID: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), Start: time.Now(), Pid: 1, } @@ -170,28 +171,28 @@ func main() { defer logEndRequest(mockContext, err) } -func abortRequest(mockContext *MockLambdaContext, err error) { +func abortRequest(mockContext *mockLambdaContext, err error) { logStartRequest(mockContext) logEndRequest(mockContext, err) } -func logStartRequest(mockContext *MockLambdaContext) { - systemLog("START RequestId: " + mockContext.RequestId + " Version: " + mockContext.Version) +func logStartRequest(mockContext *mockLambdaContext) { + systemLog("START RequestId: " + mockContext.RequestID + " Version: " + mockContext.Version) } -func logEndRequest(mockContext *MockLambdaContext, err error) { +func logEndRequest(mockContext *mockLambdaContext, err error) { curMem, _ := calculateMemoryInMb(mockContext.Pid) diffMs := math.Min(float64(time.Now().Sub(mockContext.Start).Nanoseconds()), float64(mockContext.TimeoutDuration.Nanoseconds())) / 1e6 - systemLog("END RequestId: " + mockContext.RequestId) + systemLog("END RequestId: " + mockContext.RequestID) systemLog(fmt.Sprintf( "REPORT RequestId: %s\t"+ "Duration: %.2f ms\t"+ "Billed Duration: %.f ms\t"+ "Memory Size: %s MB\t"+ "Max Memory Used: %d MB\t", - mockContext.RequestId, diffMs, math.Ceil(diffMs/100)*100, mockContext.MemSize, curMem)) + mockContext.RequestID, diffMs, math.Ceil(diffMs/100)*100, mockContext.MemSize, curMem)) if err == nil && mockContext.HasExpired() { err = mockContext.TimeoutErr() @@ -205,7 +206,7 @@ func logEndRequest(mockContext *MockLambdaContext, err error) { if responseErr.Type == "errorString" { responseErr.Type = "" if responseErr.Message == "unexpected EOF" { - responseErr.Message = "RequestId: " + mockContext.RequestId + " Process exited before completing request" + responseErr.Message = "RequestId: " + mockContext.RequestID + " Process exited before completing request" } } systemErr(&responseErr) @@ -228,7 +229,7 @@ func getEnv(key, fallback string) string { return fallback } -func fakeGuid() string { +func fakeGUID() string { randBuf := make([]byte, 16) rand.Read(randBuf) @@ -259,9 +260,9 @@ func logStreamName(version string) string { return time.Now().Format("2006/01/02") + "/[" + version + "]" + string(hexBuf) } -func arn(region string, accountId string, fnName string) string { +func arn(region string, accountID string, fnName string) string { nonDigit := regexp.MustCompile(`[^\d]`) - return "arn:aws:lambda:" + region + ":" + nonDigit.ReplaceAllString(accountId, "") + ":function:" + fnName + return "arn:aws:lambda:" + region + ":" + nonDigit.ReplaceAllString(accountID, "") + ":function:" + fnName } // Thanks to https://stackoverflow.com/a/31881979 @@ -294,11 +295,11 @@ func calculateMemoryInMb(pid int) (uint64, error) { } func getErrorType(err interface{}) string { - if errorType := reflect.TypeOf(err); errorType.Kind() == reflect.Ptr { + errorType := reflect.TypeOf(err) + if errorType.Kind() == reflect.Ptr { return errorType.Elem().Name() - } else { - return errorType.Name() } + return errorType.Name() } func systemLog(msg string) { @@ -307,7 +308,7 @@ func systemLog(msg string) { // Try to match the output of the Lambda web console func systemErr(err *messages.InvokeResponse_Error) { - jsonBytes, _ := json.MarshalIndent(LambdaError{ + jsonBytes, _ := json.MarshalIndent(lambdaError{ Message: err.Message, Type: err.Type, StackTrace: err.StackTrace, @@ -315,28 +316,28 @@ func systemErr(err *messages.InvokeResponse_Error) { fmt.Fprintln(os.Stderr, "\033[31m"+string(jsonBytes)+"\033[0m") } -type LambdaError struct { +type lambdaError struct { Message string `json:"errorMessage"` Type string `json:"errorType,omitempty"` StackTrace []*messages.InvokeResponse_Error_StackFrame `json:"stackTrace,omitempty"` } -type MockLambdaContext struct { - RequestId string +type mockLambdaContext struct { + RequestID string EventBody string FnName string Version string MemSize string Timeout string Region string - AccountId string + AccountID string Start time.Time TimeoutDuration time.Duration Pid int Reply *messages.InvokeResponse } -func (mc *MockLambdaContext) ParseTimeout() { +func (mc *mockLambdaContext) ParseTimeout() { timeoutDuration, err := time.ParseDuration(mc.Timeout + "s") if err != nil { panic(err) @@ -344,20 +345,20 @@ func (mc *MockLambdaContext) ParseTimeout() { mc.TimeoutDuration = timeoutDuration } -func (mc *MockLambdaContext) Deadline() time.Time { +func (mc *mockLambdaContext) Deadline() time.Time { return mc.Start.Add(mc.TimeoutDuration) } -func (mc *MockLambdaContext) HasExpired() bool { +func (mc *mockLambdaContext) HasExpired() bool { return time.Now().After(mc.Deadline()) } -func (mc *MockLambdaContext) Request() *messages.InvokeRequest { +func (mc *mockLambdaContext) Request() *messages.InvokeRequest { return &messages.InvokeRequest{ Payload: []byte(mc.EventBody), - RequestId: mc.RequestId, + RequestId: mc.RequestID, XAmznTraceId: getEnv("_X_AMZN_TRACE_ID", ""), - InvokedFunctionArn: getEnv("AWS_LAMBDA_FUNCTION_INVOKED_ARN", arn(mc.Region, mc.AccountId, mc.FnName)), + InvokedFunctionArn: getEnv("AWS_LAMBDA_FUNCTION_INVOKED_ARN", arn(mc.Region, mc.AccountID, mc.FnName)), Deadline: messages.InvokeRequest_Timestamp{ Seconds: mc.Deadline().Unix(), Nanos: int64(mc.Deadline().Nanosecond()), @@ -365,7 +366,7 @@ func (mc *MockLambdaContext) Request() *messages.InvokeRequest { } } -func (mc *MockLambdaContext) TimeoutErr() error { +func (mc *mockLambdaContext) TimeoutErr() error { return fmt.Errorf("%s %s Task timed out after %s.00 seconds", time.Now().Format("2006-01-02T15:04:05.999Z"), - mc.RequestId, mc.Timeout) + mc.RequestID, mc.Timeout) } From 30d0c2b06a047c53438ca1f6ab6cee40dcfd333d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 6 Nov 2019 20:07:42 -0500 Subject: [PATCH 021/234] Update latest base-2 packages --- base/base-2/amazonlinux2.txt | 58 ++++++++++++++++++------------------ base/base-2/diff.txt | 32 ++++++++++---------- base/base-2/packages.txt | 25 ++++++++-------- 3 files changed, 58 insertions(+), 57 deletions(-) diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index bfaf1679..b338bb3e 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -1,4 +1,4 @@ -amazon-linux-extras-1.6.9-1.amzn2.noarch +amazon-linux-extras-1.6.9-2.amzn2.noarch basesystem-10.0-7.amzn2.0.1.noarch bash-4.2.46-30.amzn2.x86_64 bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 @@ -6,21 +6,21 @@ ca-certificates-2018.2.22-70.0.amzn2.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-21.amzn2.x86_64 cpio-2.11-27.amzn2.x86_64 -curl-7.61.1-11.amzn2.0.2.x86_64 +curl-7.61.1-12.amzn2.0.1.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-4.amzn2.0.2.x86_64 -elfutils-libelf-0.170-4.amzn2.x86_64 +elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 file-libs-5.11-33.amzn2.0.2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 findutils-4.5.11-5.amzn2.0.2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 -glib2-2.54.2-2.amzn2.x86_64 -glibc-2.26-32.amzn2.0.1.x86_64 -glibc-common-2.26-32.amzn2.0.1.x86_64 -glibc-langpack-en-2.26-32.amzn2.0.1.x86_64 -glibc-minimal-langpack-2.26-32.amzn2.0.1.x86_64 +glib2-2.56.1-4.amzn2.x86_64 +glibc-2.26-32.amzn2.0.2.x86_64 +glibc-common-2.26-32.amzn2.0.2.x86_64 +glibc-langpack-en-2.26-32.amzn2.0.2.x86_64 +glibc-minimal-langpack-2.26-32.amzn2.0.2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 gnupg2-2.0.22-5.amzn2.0.3.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 @@ -34,39 +34,39 @@ libattr-2.4.46-12.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 -libcrypt-2.26-32.amzn2.0.1.x86_64 -libcurl-7.61.1-11.amzn2.0.2.x86_64 +libcrypt-2.26-32.amzn2.0.2.x86_64 +libcurl-7.61.1-12.amzn2.0.1.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 -libgcc-7.3.1-5.amzn2.0.2.x86_64 +libgcc-7.3.1-6.amzn2.0.4.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 libgpg-error-1.12-3.amzn2.0.3.x86_64 libidn2-2.0.4-1.amzn2.0.2.x86_64 libmetalink-0.1.2-7.amzn2.0.2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 -libnghttp2-1.31.1-1.amzn2.0.2.x86_64 +libnghttp2-1.39.2-1.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 -libssh2-1.4.3-12.amzn2.2.1.x86_64 -libstdc++-7.3.1-5.amzn2.0.2.x86_64 +libssh2-1.4.3-12.amzn2.2.2.x86_64 +libstdc++-7.3.1-6.amzn2.0.4.x86_64 libtasn1-4.10-1.amzn2.0.2.x86_64 libunistring-0.9.3-9.amzn2.0.2.x86_64 libuuid-2.30.2-2.amzn2.0.4.x86_64 libverto-0.2.5-4.amzn2.0.2.x86_64 -libxml2-2.9.1-6.amzn2.3.2.x86_64 +libxml2-2.9.1-6.amzn2.3.3.x86_64 lua-5.1.4-15.amzn2.0.2.x86_64 -ncurses-6.0-8.20170212.amzn2.1.2.x86_64 -ncurses-base-6.0-8.20170212.amzn2.1.2.noarch -ncurses-libs-6.0-8.20170212.amzn2.1.2.x86_64 -nspr-4.19.0-1.amzn2.x86_64 -nss-3.36.0-7.amzn2.x86_64 +ncurses-6.0-8.20170212.amzn2.1.3.x86_64 +ncurses-base-6.0-8.20170212.amzn2.1.3.noarch +ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 +nspr-4.21.0-1.amzn2.0.2.x86_64 +nss-3.44.0-4.amzn2.0.2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.36.0-5.amzn2.0.1.x86_64 -nss-softokn-freebl-3.36.0-5.amzn2.0.1.x86_64 -nss-sysinit-3.36.0-7.amzn2.x86_64 -nss-tools-3.36.0-7.amzn2.x86_64 -nss-util-3.36.0-1.amzn2.x86_64 +nss-softokn-3.44.0-5.amzn2.0.2.x86_64 +nss-softokn-freebl-3.44.0-5.amzn2.0.2.x86_64 +nss-sysinit-3.44.0-4.amzn2.0.2.x86_64 +nss-tools-3.44.0-4.amzn2.0.2.x86_64 +nss-util-3.44.0-3.amzn2.0.2.x86_64 openldap-2.4.44-15.amzn2.x86_64 openssl-libs-1.0.2k-16.amzn2.1.1.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 @@ -77,9 +77,9 @@ popt-1.13-16.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.16-2.amzn2.0.1.x86_64 +python-2.7.16-3.amzn2.0.1.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.16-2.amzn2.0.1.x86_64 +python-libs-2.7.16-3.amzn2.0.1.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-8.amzn2.noarch pyxattr-0.5.1-5.amzn2.0.2.x86_64 @@ -92,8 +92,8 @@ sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.noarch shared-mime-info-1.8-4.amzn2.x86_64 sqlite-3.7.17-8.amzn2.0.2.x86_64 -system-release-2-10.amzn2.x86_64 -tzdata-2018i-1.amzn2.noarch +system-release-2-11.amzn2.x86_64 +tzdata-2019c-1.amzn2.noarch vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 yum-3.4.3-158.amzn2.0.2.noarch diff --git a/base/base-2/diff.txt b/base/base-2/diff.txt index 12feac86..cb9feacb 100644 --- a/base/base-2/diff.txt +++ b/base/base-2/diff.txt @@ -1,22 +1,22 @@ -amazon-linux-extras-1.6.9-1.amzn2.noarch +amazon-linux-extras-1.6.9-2.amzn2.noarch bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 cpio-2.11-27.amzn2.x86_64 -curl-7.61.1-11.amzn2.0.2.x86_64 +curl-7.61.1-12.amzn2.0.1.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-4.amzn2.0.2.x86_64 -elfutils-libelf-0.170-4.amzn2.x86_64 +elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 file-libs-5.11-33.amzn2.0.2.x86_64 findutils-4.5.11-5.amzn2.0.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 -glib2-2.54.2-2.amzn2.x86_64 -glibc-langpack-en-2.26-32.amzn2.0.1.x86_64 +glib2-2.56.1-4.amzn2.x86_64 +glibc-langpack-en-2.26-32.amzn2.0.2.x86_64 gnupg2-2.0.22-5.amzn2.0.3.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 libassuan-2.1.0-3.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 -libcrypt-2.26-32.amzn2.0.1.x86_64 -libcurl-7.61.1-11.amzn2.0.2.x86_64 +libcrypt-2.26-32.amzn2.0.2.x86_64 +libcurl-7.61.1-12.amzn2.0.1.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 @@ -24,25 +24,25 @@ libgpg-error-1.12-3.amzn2.0.3.x86_64 libidn2-2.0.4-1.amzn2.0.2.x86_64 libmetalink-0.1.2-7.amzn2.0.2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 -libnghttp2-1.31.1-1.amzn2.0.2.x86_64 -libssh2-1.4.3-12.amzn2.2.1.x86_64 +libnghttp2-1.39.2-1.amzn2.x86_64 +libssh2-1.4.3-12.amzn2.2.2.x86_64 libunistring-0.9.3-9.amzn2.0.2.x86_64 libuuid-2.30.2-2.amzn2.0.4.x86_64 -libxml2-2.9.1-6.amzn2.3.2.x86_64 +libxml2-2.9.1-6.amzn2.3.3.x86_64 lua-5.1.4-15.amzn2.0.2.x86_64 -nss-3.36.0-7.amzn2.x86_64 +nss-3.44.0-4.amzn2.0.2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.36.0-5.amzn2.0.1.x86_64 -nss-sysinit-3.36.0-7.amzn2.x86_64 -nss-tools-3.36.0-7.amzn2.x86_64 +nss-softokn-3.44.0-5.amzn2.0.2.x86_64 +nss-sysinit-3.44.0-4.amzn2.0.2.x86_64 +nss-tools-3.44.0-4.amzn2.0.2.x86_64 openldap-2.4.44-15.amzn2.x86_64 pinentry-0.8.1-17.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.16-2.amzn2.0.1.x86_64 +python-2.7.16-3.amzn2.0.1.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.16-2.amzn2.0.1.x86_64 +python-libs-2.7.16-3.amzn2.0.1.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-8.amzn2.noarch pyxattr-0.5.1-5.amzn2.0.2.x86_64 diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index ce55eec8..06d01f50 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -5,9 +5,10 @@ chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-21.amzn2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 -glibc-2.26-32.amzn2.0.1.x86_64 -glibc-common-2.26-32.amzn2.0.1.x86_64 -glibc-minimal-langpack-2.26-32.amzn2.0.1.x86_64 +glibc-2.26-32.amzn2.0.2.x86_64 +glibc-all-langpacks-2.26-32.amzn2.0.2.x86_64 +glibc-common-2.26-32.amzn2.0.2.x86_64 +glibc-minimal-langpack-2.26-32.amzn2.0.2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 @@ -18,18 +19,18 @@ libattr-2.4.46-12.amzn2.0.2.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 -libgcc-7.3.1-5.amzn2.0.2.x86_64 +libgcc-7.3.1-6.amzn2.0.4.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 -libstdc++-7.3.1-5.amzn2.0.2.x86_64 +libstdc++-7.3.1-6.amzn2.0.4.x86_64 libtasn1-4.10-1.amzn2.0.2.x86_64 libverto-0.2.5-4.amzn2.0.2.x86_64 -ncurses-6.0-8.20170212.amzn2.1.2.x86_64 -ncurses-base-6.0-8.20170212.amzn2.1.2.noarch -ncurses-libs-6.0-8.20170212.amzn2.1.2.x86_64 -nspr-4.19.0-1.amzn2.x86_64 -nss-softokn-freebl-3.36.0-5.amzn2.0.1.x86_64 -nss-util-3.36.0-1.amzn2.x86_64 +ncurses-6.0-8.20170212.amzn2.1.3.x86_64 +ncurses-base-6.0-8.20170212.amzn2.1.3.noarch +ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 +nspr-4.21.0-1.amzn2.0.2.x86_64 +nss-softokn-freebl-3.44.0-5.amzn2.0.2.x86_64 +nss-util-3.44.0-3.amzn2.0.2.x86_64 openssl-libs-1.0.2k-16.amzn2.1.1.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 @@ -38,5 +39,5 @@ popt-1.13-16.amzn2.0.2.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.noarch system-release-2-10.amzn2.x86_64 -tzdata-2018i-1.amzn2.noarch +tzdata-2019b-1.amzn2.noarch zlib-1.2.7-17.amzn2.0.2.x86_64 From 220e45a714f8ce7cd30150a95e8d04ab9af4547f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 6 Nov 2019 20:18:32 -0500 Subject: [PATCH 022/234] Simplify nodejs10.x build Dockerfile --- nodejs10.x/build/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index a85ece18..392a4fd8 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,5 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip3 install -U pip setuptools --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir From f0286dae139d7af9401e3aa50dd91f2517f3dedf Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 6 Nov 2019 20:27:36 -0500 Subject: [PATCH 023/234] Update remaining build runtimes to aws-sam-cli 0.31.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index dae399b6..7bd33006 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index db3b8270..e2a831be 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ + pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 17e97750..ddb255ac 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -17,6 +17,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 1a1e2332..41e28661 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/b # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index d119faeb..6c2b0462 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 5813022c..168c866b 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 2efc9c2e..e1f6d6ad 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,6 +11,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index f204386a..1026540f 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,4 +2,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index da737b89..20b3edbe 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 9d97eed5..76d6a5e1 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 77ac3f29..d670c93f 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN gem update --system --no-document && \ gem install --no-document bundler && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.30.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir From a1c737b692deb21b20a0ed9034356e5f8d63f4df Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 6 Nov 2019 22:12:15 -0500 Subject: [PATCH 024/234] Move pip install into base build image Update python3.6 build to 3.6.9 --- base/build/Dockerfile | 1 + dotnetcore2.0/build/Dockerfile | 5 ++--- dotnetcore2.1/build/Dockerfile | 5 ++--- go1.x/build/Dockerfile | 3 +-- java8/build/Dockerfile | 3 +-- nodejs4.3/build/Dockerfile | 3 +-- nodejs6.10/build/Dockerfile | 3 +-- nodejs8.10/build/Dockerfile | 3 +-- provided/build/Dockerfile | 3 +-- python2.7/build/Dockerfile | 5 ++--- python3.6/build/Dockerfile | 6 +++--- ruby2.5/build/Dockerfile | 1 - 12 files changed, 16 insertions(+), 25 deletions(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index f773c861..9f0e95dd 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -22,5 +22,6 @@ f.close();" && \ alternatives --set gcc /usr/bin/gcc48 && \ alternatives --set g++ /usr/bin/g++48 && \ alternatives --set cpp /usr/bin/cpp48 && \ + curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ yum clean all && \ rm -rf /var/cache/yum diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 7bd33006..eed41182 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -12,7 +12,7 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/dotnetcore2.0.tgz | tar -zx -C / && \ yum install -y libunwind && \ - curl https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i /var/lang/bin && \ + curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i /var/lang/bin && \ mkdir /tmp/warmup && \ cd /tmp/warmup && \ dotnet new && \ @@ -20,7 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e2a831be..b31f75d3 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -13,7 +13,7 @@ ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/dotnetcore2.1.tgz | tar -zx -C / && \ yum install -y libunwind && \ - curl https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ + curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ mkdir /tmp/warmup && \ cd /tmp/warmup && \ dotnet new && \ @@ -21,8 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index ddb255ac..2053f5ba 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,7 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 41e28661..75321d6f 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,5 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 6c2b0462..89bf7df0 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,7 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 168c866b..50bf1a3f 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,7 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index e1f6d6ad..ae84cdde 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,7 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 1026540f..63827a5f 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,5 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index aa9c5f62..e7a96c0a 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -7,6 +7,5 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/python2.7.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U virtualenv pipenv --no-cache-dir && \ + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 20b3edbe..4ed93fbd 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -9,12 +9,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/python3.6.tgz | tar -xz -C / && \ sed -i '/^prefix=/c\prefix=/var/lang' /var/lang/lib/pkgconfig/python-3.6.pc && \ - curl https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz | tar -xJ && \ - cd Python-3.6.8 && \ + curl https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz | tar -xJ && \ + cd Python-3.6.9 && \ LIBS="$LIBS -lutil -lrt" ./configure --prefix=/var/lang && \ make -j$(getconf _NPROCESSORS_ONLN) libinstall libainstall inclinstall && \ cd .. && \ - rm -rf Python-3.6.8 + rm -rf Python-3.6.9 # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index d670c93f..4982ec75 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,5 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir From 144f3b3e36e697360ffe723f3f56bf2cf9f6b742 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 7 Nov 2019 08:08:44 -0500 Subject: [PATCH 025/234] Revert update to aws-sam-cli==0.22.0 for build-python2.7 Fixes #217 --- python2.7/build/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index e7a96c0a..aa9c5f62 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -7,5 +7,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/python2.7.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ + pip install -U virtualenv pipenv --no-cache-dir && \ + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir From 51ab1a8a7e417bfbd77c06d20c6e5c7de232e815 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 7 Nov 2019 15:37:49 -0500 Subject: [PATCH 026/234] Update tar-find-layer to use yumda --- base/tar-find-layer/Dockerfile | 26 -------------------------- base/tar-find-layer/build.sh | 9 +++++++++ 2 files changed, 9 insertions(+), 26 deletions(-) delete mode 100644 base/tar-find-layer/Dockerfile create mode 100755 base/tar-find-layer/build.sh diff --git a/base/tar-find-layer/Dockerfile b/base/tar-find-layer/Dockerfile deleted file mode 100644 index 6191749b..00000000 --- a/base/tar-find-layer/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM lambci/lambda-base-2 - -# We don't have `find` on Lambda anymore, so use bash to simulate find ! -type d -RUN find() { local d; for d in "$@"; do ls -1A "$d" | while read f; do i="$d/$f"; [ -d "$i" ] && [ ! -L "$i" ] && find "$i" || echo $i; done; done; } && \ - cd /usr && \ - find bin lib64 | sort > /fs.txt - - -FROM lambci/lambda-base-2:build - -COPY --from=0 /fs.txt / - -RUN mkdir -p /tmp/etc && \ - cp /etc/yum.conf /tmp/etc/ && \ - cp -R /etc/yum /tmp/etc/ && \ - echo 2 > /tmp/etc/yum/vars/releasever && \ - yum install -y --installroot=/tmp findutils gzip tar && \ - cd /tmp/usr && \ - bash -c 'comm -13 /fs.txt <(find bin lib64 ! -type d | sort)' | tar -c -T - | tar -x -C /opt && \ - cd /opt && \ - rm -rf lib && \ - mv lib64 lib && \ - zip -yr /tmp/layer.zip bin lib - -# docker build -t tar-ps-layer . -# docker run --rm tar-ps-layer cat /tmp/layer.zip > layer.zip diff --git a/base/tar-find-layer/build.sh b/base/tar-find-layer/build.sh new file mode 100755 index 00000000..6541fbe6 --- /dev/null +++ b/base/tar-find-layer/build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +rm layer.zip + +docker run --rm -v "$PWD":/tmp/layer lambci/yumda:2 bash -c " + yum install -y findutils gzip tar && \ + cd /lambda/opt && \ + zip -yr /tmp/layer/layer.zip . +" From 290e82c69b74007957515a9a79c699fbc54d7547 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 8 Nov 2019 10:53:12 -0500 Subject: [PATCH 027/234] Update maven to 3.6.2 and gradle to 5.6.x on java8 build image --- java8/build/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 75321d6f..23bc5d9e 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-5.2-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-5.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ - curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz | \ + curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-5.2/bin:/usr/local/maven/apache-maven-3.6.0/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-5.6/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir From 51a1c3c68c631adc162bc95e9525ddf6cdd4be96 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 9 Nov 2019 11:14:25 -0500 Subject: [PATCH 028/234] Use LambdaBootstrap and create a mock ILambdaRuntime for dotnetcore2.1 --- .../run/MockBootstraps/MockLambdaContext.cs | 15 -- .../run/MockBootstraps/MockRuntime.cs | 217 ++++++++++++++++++ dotnetcore2.1/run/MockBootstraps/Program.cs | 67 +----- 3 files changed, 225 insertions(+), 74 deletions(-) create mode 100644 dotnetcore2.1/run/MockBootstraps/MockRuntime.cs diff --git a/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs b/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs index af405d9f..901df2a2 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs @@ -15,7 +15,6 @@ public MockLambdaContext(string handler, string eventBody) RequestId = Guid.NewGuid().ToString(); StartTime = DateTime.Now; InputStream = new MemoryStream(); - OutputStream = new MemoryStream(); var eventData = Encoding.UTF8.GetBytes(eventBody); InputStream.Write(eventData, 0, eventData.Length); @@ -44,20 +43,6 @@ public TimeSpan RemainingTime() public Stream InputStream { get; } - public Stream OutputStream { get; } - - public string OutputText - { - get - { - OutputStream.Position = 0; - using (TextReader reader = new StreamReader(OutputStream)) - { - return reader.ReadToEnd(); - } - } - } - public string RequestId { get; } public DateTime StartTime { get; } diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs new file mode 100644 index 00000000..3c5aab76 --- /dev/null +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -0,0 +1,217 @@ +using AWSLambda.Internal.Bootstrap.Context; +using AWSLambda.Internal.Bootstrap.Interop.Structures; +using MockLambdaRuntime; +using System; +using System.Collections; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace AWSLambda.Internal.Bootstrap +{ + internal class MockRuntime : ILambdaRuntime + { + private const string STACK_TRACE_INDENT = " "; + + private bool invoked; + + private Exception invokeError; + + private readonly byte[] outputBuffer = new byte[SBSharedMem.SizeOfEventBody]; + + private readonly IntPtr sharedMem = Marshal.AllocHGlobal(SBSharedMem.UnmanagedStructSize); + + private SBSharedMem curSBSharedMem; + + private readonly MockLambdaContext context; + + public IEnvironment Environment { get; } = new SystemEnvironment(); + + public IXRayProfiler XRayProfiler { get; } = new MockXRayProfiler(); + + public InitData InitData + { + get; + private set; + } + + public MockRuntime(string handler, string body) + { + context = new MockLambdaContext(handler, body); + InitData = new InitData + { + Handler = handler, + InvokeId = context.RequestId, + SuppressUserCodeInit = false, + ErrorCode = null + }; + invoked = false; + } + + public bool KeepInvokeLoopRunning() + { + return true; + } + + public void Init() + { + } + + public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) + { + Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); + + invoked = true; + + curSBSharedMem = new SBSharedMem(sharedMem); + return new InvokeData(curSBSharedMem) + { + RequestId = context.RequestId, + AwsCredentials = new AwsCredentials + { + AccessKeyId = EnvHelper.GetOrDefault("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID"), + SecretAccessKey = EnvHelper.GetOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"), + SessionToken = System.Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN") + }, + XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), + InputStream = context.InputStream, + OutputStream = new MemoryStream(outputBuffer), + LambdaContextInternal = new LambdaContextInternal( + context.RemainingTime, + SendCustomerLogMessage, + new Lazy(), + context.RequestId, + new Lazy(context.Arn), + new Lazy(string.Empty), + new Lazy(string.Empty), + initialEnvironmentVariables + ) + }; + } + + /// Try to log everything to stderr except the function result + public void SendCustomerLogMessage(string message) + { + Console.Error.WriteLine(message); + } + + public void ReportDone(string invokeId, string errorType, bool waitForExit) + { + if (!invoked) return; + + Console.Error.WriteLine($"END RequestId: {context.RequestId}"); + + Console.Error.WriteLine($"REPORT RequestId {context.RequestId}\t" + + $"Duration: {context.Duration} ms\t" + + $"Billed Duration: {context.BilledDuration} ms\t" + + $"Memory Size {context.MemorySize} MB\t" + + $"Max Memory Used: {context.MemoryUsed / (1024 * 1024)} MB"); + + if (invokeError != null) + { + Console.Error.WriteLine(invokeError); + System.Environment.Exit(1); + return; + } + + var output = Encoding.UTF8.GetString(outputBuffer, 0, curSBSharedMem.ResponseBodyLen); + + Console.WriteLine(output); + + System.Environment.Exit(string.IsNullOrEmpty(errorType) ? 0 : 1); + } + + public void ReportError(string invokeId, ExceptionResponse exceptionResponse) + { + invokeError = exceptionResponse.OriginalException; + + // XXX: For the future perhaps: + /* + StringBuilder stringBuilder = new StringBuilder(); + if (!string.IsNullOrEmpty(exceptionResponse.StackTrace)) + { + stringBuilder.AppendLine(exceptionResponse.StackTrace); + } + if (exceptionResponse.InnerException != null) + { + AppendStackTraceToStringBuilder(stringBuilder, exceptionResponse.InnerException); + } + */ + } + + private static void AppendStackTraceToStringBuilder(StringBuilder builder, ExceptionResponse ex) + { + if (!string.IsNullOrWhiteSpace(ex.StackTrace)) + { + string[] array = (from s in ex.StackTrace.Split(new string[] + { + System.Environment.NewLine + }, StringSplitOptions.None) + select s.Trim() into s + where !string.IsNullOrWhiteSpace(s) + select STACK_TRACE_INDENT + s).ToArray(); + foreach (string value in array) + { + builder.AppendLine(value); + } + } + if (ex.InnerException != null) + { + string errorMessage = ex.InnerException.ErrorMessage; + string errorType = ex.InnerException.ErrorType; + if (errorMessage != null) + { + builder.Append(errorMessage.Trim()); + builder.Append(": "); + } + builder.AppendLine(errorType); + AppendStackTraceToStringBuilder(builder, ex.InnerException); + } + } + + internal static Lazy GetCognitoClientContextInternalLazy(string text) + { + return new Lazy(delegate + { + CognitoClientContextInternal result = null; + if (!string.IsNullOrEmpty(text)) + { + try + { + return CognitoClientContextInternal.FromJson(text); + } + catch (Exception innerException) + { + throw LambdaExceptions.ValidationException(innerException, "Unable to parse client context JSON string '{0}'.", text); + } + } + return result; + }); + } + } + + internal class MockXRayProfiler : IXRayProfiler + { + public void ReportUserInitStart() + { + } + + public void ReportUserInitEnd() + { + } + + public void ReportUserInvokeStart() + { + } + + public void ReportUserInvokeEnd() + { + } + + public void ReportError(ExceptionResponse exceptionResponse) + { + } + } + +} diff --git a/dotnetcore2.1/run/MockBootstraps/Program.cs b/dotnetcore2.1/run/MockBootstraps/Program.cs index e44ca8fe..69a15a43 100644 --- a/dotnetcore2.1/run/MockBootstraps/Program.cs +++ b/dotnetcore2.1/run/MockBootstraps/Program.cs @@ -1,12 +1,12 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Reflection; using System.Runtime.Loader; using AWSLambda.Internal.Bootstrap; -using AWSLambda.Internal.Bootstrap.Context; -using System.Linq; - +using AWSLambda.Internal.Bootstrap.ErrorHandling; + namespace MockLambdaRuntime { class Program @@ -51,40 +51,11 @@ static void Main(string[] args) } } - var lambdaContext = new MockLambdaContext(handler, body); - - var userCodeLoader = new UserCodeLoader(handler, InternalLogger.NO_OP_LOGGER); - userCodeLoader.Init(Console.Error.WriteLine); - - var lambdaContextInternal = new LambdaContextInternal(lambdaContext.RemainingTime, - LogAction, new Lazy(), - lambdaContext.RequestId, - new Lazy(lambdaContext.Arn), - new Lazy(string.Empty), - new Lazy(string.Empty), - Environment.GetEnvironmentVariables()); - - Exception lambdaException = null; - - LogRequestStart(lambdaContext); - try - { - userCodeLoader.Invoke(lambdaContext.InputStream, lambdaContext.OutputStream, lambdaContextInternal); - } - catch (Exception ex) - { - lambdaException = ex; - } - LogRequestEnd(lambdaContext); - - if (lambdaException == null) - { - Console.WriteLine(lambdaContext.OutputText); - } - else - { - Console.Error.WriteLine(lambdaException); - } + var lambdaRuntime = new MockRuntime(handler, body); + LambdaBootstrap lambdaBootstrap = new LambdaBootstrap(lambdaRuntime, InternalLogger.NO_OP_LOGGER); + UnhandledExceptionLogger.Register(); + lambdaBootstrap.Initialize(); + lambdaBootstrap.Invoke(); } // Catch all unhandled exceptions from runtime, to prevent user from hanging on them while debugging @@ -111,12 +82,6 @@ private static Assembly OnAssemblyResolving(AssemblyLoadContext context, Assembl throw new FileNotFoundException($"{assemblyName.Name}.dll"); } - /// Try to log everything to stderr except the function result - private static void LogAction(string text) - { - Console.Error.WriteLine(text); - } - /// /// Extracts "waitForDebugger" flag from args. Returns other unprocessed arguments. /// @@ -144,22 +109,6 @@ private static bool GetShouldWaitForDebuggerFlag(string[] args, out string[] unp return flagValue; } - static void LogRequestStart(MockLambdaContext context) - { - Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); - } - - static void LogRequestEnd(MockLambdaContext context) - { - Console.Error.WriteLine($"END RequestId: {context.RequestId}"); - - Console.Error.WriteLine($"REPORT RequestId {context.RequestId}\t" + - $"Duration: {context.Duration} ms\t" + - $"Billed Duration: {context.BilledDuration} ms\t" + - $"Memory Size {context.MemorySize} MB\t" + - $"Max Memory Used: {context.MemoryUsed / (1024 * 1024)} MB"); - } - /// Gets the function handler from arguments or environment static string GetFunctionHandler(string[] args) { From 119ef628249f93e2e11b480adbcbb0234937dfe9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 9 Nov 2019 11:32:02 -0500 Subject: [PATCH 029/234] Use LambdaBootstrap and create a mock ILambdaRuntime for dotnetcore2.0 --- .../run/MockBootstraps/MockLambdaContext.cs | 15 -- .../run/MockBootstraps/MockRuntime.cs | 217 ++++++++++++++++++ dotnetcore2.0/run/MockBootstraps/Program.cs | 67 +----- .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 0 -> 44556 bytes dotnetcore2.0/run/update_libs.sh | 4 +- 5 files changed, 227 insertions(+), 76 deletions(-) create mode 100644 dotnetcore2.0/run/MockBootstraps/MockRuntime.cs create mode 100644 dotnetcore2.0/run/MockBootstraps/lib/Bootstrap.pdb diff --git a/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs b/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs index af405d9f..901df2a2 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs @@ -15,7 +15,6 @@ public MockLambdaContext(string handler, string eventBody) RequestId = Guid.NewGuid().ToString(); StartTime = DateTime.Now; InputStream = new MemoryStream(); - OutputStream = new MemoryStream(); var eventData = Encoding.UTF8.GetBytes(eventBody); InputStream.Write(eventData, 0, eventData.Length); @@ -44,20 +43,6 @@ public TimeSpan RemainingTime() public Stream InputStream { get; } - public Stream OutputStream { get; } - - public string OutputText - { - get - { - OutputStream.Position = 0; - using (TextReader reader = new StreamReader(OutputStream)) - { - return reader.ReadToEnd(); - } - } - } - public string RequestId { get; } public DateTime StartTime { get; } diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs new file mode 100644 index 00000000..3c5aab76 --- /dev/null +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -0,0 +1,217 @@ +using AWSLambda.Internal.Bootstrap.Context; +using AWSLambda.Internal.Bootstrap.Interop.Structures; +using MockLambdaRuntime; +using System; +using System.Collections; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace AWSLambda.Internal.Bootstrap +{ + internal class MockRuntime : ILambdaRuntime + { + private const string STACK_TRACE_INDENT = " "; + + private bool invoked; + + private Exception invokeError; + + private readonly byte[] outputBuffer = new byte[SBSharedMem.SizeOfEventBody]; + + private readonly IntPtr sharedMem = Marshal.AllocHGlobal(SBSharedMem.UnmanagedStructSize); + + private SBSharedMem curSBSharedMem; + + private readonly MockLambdaContext context; + + public IEnvironment Environment { get; } = new SystemEnvironment(); + + public IXRayProfiler XRayProfiler { get; } = new MockXRayProfiler(); + + public InitData InitData + { + get; + private set; + } + + public MockRuntime(string handler, string body) + { + context = new MockLambdaContext(handler, body); + InitData = new InitData + { + Handler = handler, + InvokeId = context.RequestId, + SuppressUserCodeInit = false, + ErrorCode = null + }; + invoked = false; + } + + public bool KeepInvokeLoopRunning() + { + return true; + } + + public void Init() + { + } + + public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) + { + Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); + + invoked = true; + + curSBSharedMem = new SBSharedMem(sharedMem); + return new InvokeData(curSBSharedMem) + { + RequestId = context.RequestId, + AwsCredentials = new AwsCredentials + { + AccessKeyId = EnvHelper.GetOrDefault("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID"), + SecretAccessKey = EnvHelper.GetOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"), + SessionToken = System.Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN") + }, + XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), + InputStream = context.InputStream, + OutputStream = new MemoryStream(outputBuffer), + LambdaContextInternal = new LambdaContextInternal( + context.RemainingTime, + SendCustomerLogMessage, + new Lazy(), + context.RequestId, + new Lazy(context.Arn), + new Lazy(string.Empty), + new Lazy(string.Empty), + initialEnvironmentVariables + ) + }; + } + + /// Try to log everything to stderr except the function result + public void SendCustomerLogMessage(string message) + { + Console.Error.WriteLine(message); + } + + public void ReportDone(string invokeId, string errorType, bool waitForExit) + { + if (!invoked) return; + + Console.Error.WriteLine($"END RequestId: {context.RequestId}"); + + Console.Error.WriteLine($"REPORT RequestId {context.RequestId}\t" + + $"Duration: {context.Duration} ms\t" + + $"Billed Duration: {context.BilledDuration} ms\t" + + $"Memory Size {context.MemorySize} MB\t" + + $"Max Memory Used: {context.MemoryUsed / (1024 * 1024)} MB"); + + if (invokeError != null) + { + Console.Error.WriteLine(invokeError); + System.Environment.Exit(1); + return; + } + + var output = Encoding.UTF8.GetString(outputBuffer, 0, curSBSharedMem.ResponseBodyLen); + + Console.WriteLine(output); + + System.Environment.Exit(string.IsNullOrEmpty(errorType) ? 0 : 1); + } + + public void ReportError(string invokeId, ExceptionResponse exceptionResponse) + { + invokeError = exceptionResponse.OriginalException; + + // XXX: For the future perhaps: + /* + StringBuilder stringBuilder = new StringBuilder(); + if (!string.IsNullOrEmpty(exceptionResponse.StackTrace)) + { + stringBuilder.AppendLine(exceptionResponse.StackTrace); + } + if (exceptionResponse.InnerException != null) + { + AppendStackTraceToStringBuilder(stringBuilder, exceptionResponse.InnerException); + } + */ + } + + private static void AppendStackTraceToStringBuilder(StringBuilder builder, ExceptionResponse ex) + { + if (!string.IsNullOrWhiteSpace(ex.StackTrace)) + { + string[] array = (from s in ex.StackTrace.Split(new string[] + { + System.Environment.NewLine + }, StringSplitOptions.None) + select s.Trim() into s + where !string.IsNullOrWhiteSpace(s) + select STACK_TRACE_INDENT + s).ToArray(); + foreach (string value in array) + { + builder.AppendLine(value); + } + } + if (ex.InnerException != null) + { + string errorMessage = ex.InnerException.ErrorMessage; + string errorType = ex.InnerException.ErrorType; + if (errorMessage != null) + { + builder.Append(errorMessage.Trim()); + builder.Append(": "); + } + builder.AppendLine(errorType); + AppendStackTraceToStringBuilder(builder, ex.InnerException); + } + } + + internal static Lazy GetCognitoClientContextInternalLazy(string text) + { + return new Lazy(delegate + { + CognitoClientContextInternal result = null; + if (!string.IsNullOrEmpty(text)) + { + try + { + return CognitoClientContextInternal.FromJson(text); + } + catch (Exception innerException) + { + throw LambdaExceptions.ValidationException(innerException, "Unable to parse client context JSON string '{0}'.", text); + } + } + return result; + }); + } + } + + internal class MockXRayProfiler : IXRayProfiler + { + public void ReportUserInitStart() + { + } + + public void ReportUserInitEnd() + { + } + + public void ReportUserInvokeStart() + { + } + + public void ReportUserInvokeEnd() + { + } + + public void ReportError(ExceptionResponse exceptionResponse) + { + } + } + +} diff --git a/dotnetcore2.0/run/MockBootstraps/Program.cs b/dotnetcore2.0/run/MockBootstraps/Program.cs index e44ca8fe..69a15a43 100644 --- a/dotnetcore2.0/run/MockBootstraps/Program.cs +++ b/dotnetcore2.0/run/MockBootstraps/Program.cs @@ -1,12 +1,12 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Reflection; using System.Runtime.Loader; using AWSLambda.Internal.Bootstrap; -using AWSLambda.Internal.Bootstrap.Context; -using System.Linq; - +using AWSLambda.Internal.Bootstrap.ErrorHandling; + namespace MockLambdaRuntime { class Program @@ -51,40 +51,11 @@ static void Main(string[] args) } } - var lambdaContext = new MockLambdaContext(handler, body); - - var userCodeLoader = new UserCodeLoader(handler, InternalLogger.NO_OP_LOGGER); - userCodeLoader.Init(Console.Error.WriteLine); - - var lambdaContextInternal = new LambdaContextInternal(lambdaContext.RemainingTime, - LogAction, new Lazy(), - lambdaContext.RequestId, - new Lazy(lambdaContext.Arn), - new Lazy(string.Empty), - new Lazy(string.Empty), - Environment.GetEnvironmentVariables()); - - Exception lambdaException = null; - - LogRequestStart(lambdaContext); - try - { - userCodeLoader.Invoke(lambdaContext.InputStream, lambdaContext.OutputStream, lambdaContextInternal); - } - catch (Exception ex) - { - lambdaException = ex; - } - LogRequestEnd(lambdaContext); - - if (lambdaException == null) - { - Console.WriteLine(lambdaContext.OutputText); - } - else - { - Console.Error.WriteLine(lambdaException); - } + var lambdaRuntime = new MockRuntime(handler, body); + LambdaBootstrap lambdaBootstrap = new LambdaBootstrap(lambdaRuntime, InternalLogger.NO_OP_LOGGER); + UnhandledExceptionLogger.Register(); + lambdaBootstrap.Initialize(); + lambdaBootstrap.Invoke(); } // Catch all unhandled exceptions from runtime, to prevent user from hanging on them while debugging @@ -111,12 +82,6 @@ private static Assembly OnAssemblyResolving(AssemblyLoadContext context, Assembl throw new FileNotFoundException($"{assemblyName.Name}.dll"); } - /// Try to log everything to stderr except the function result - private static void LogAction(string text) - { - Console.Error.WriteLine(text); - } - /// /// Extracts "waitForDebugger" flag from args. Returns other unprocessed arguments. /// @@ -144,22 +109,6 @@ private static bool GetShouldWaitForDebuggerFlag(string[] args, out string[] unp return flagValue; } - static void LogRequestStart(MockLambdaContext context) - { - Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); - } - - static void LogRequestEnd(MockLambdaContext context) - { - Console.Error.WriteLine($"END RequestId: {context.RequestId}"); - - Console.Error.WriteLine($"REPORT RequestId {context.RequestId}\t" + - $"Duration: {context.Duration} ms\t" + - $"Billed Duration: {context.BilledDuration} ms\t" + - $"Memory Size {context.MemorySize} MB\t" + - $"Max Memory Used: {context.MemoryUsed / (1024 * 1024)} MB"); - } - /// Gets the function handler from arguments or environment static string GetFunctionHandler(string[] args) { diff --git a/dotnetcore2.0/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.0/run/MockBootstraps/lib/Bootstrap.pdb new file mode 100644 index 0000000000000000000000000000000000000000..a00a5deea9f9ac70bc344c0502df9de5b60d9a38 GIT binary patch literal 44556 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

A&IXe(0=Qq>O?SJ9_CViTaZRukv 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 Date: Sat, 9 Nov 2019 17:44:18 -0500 Subject: [PATCH 030/234] Still ReportDone if there's an error in dotnetcore2.0/2.1 --- dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 2 +- dotnetcore2.1/run/MockBootstraps/MockRuntime.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 3c5aab76..824a6a23 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -98,7 +98,7 @@ public void SendCustomerLogMessage(string message) public void ReportDone(string invokeId, string errorType, bool waitForExit) { - if (!invoked) return; + if (!invoked && invokeError == null) return; Console.Error.WriteLine($"END RequestId: {context.RequestId}"); diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 3c5aab76..824a6a23 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -98,7 +98,7 @@ public void SendCustomerLogMessage(string message) public void ReportDone(string invokeId, string errorType, bool waitForExit) { - if (!invoked) return; + if (!invoked && invokeError == null) return; Console.Error.WriteLine($"END RequestId: {context.RequestId}"); From c833c00477c1b1a59881fbe32f87287981a21062 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 9 Nov 2019 21:02:38 -0500 Subject: [PATCH 031/234] Ensure we truncate length of output streams in dotnetcore runtimes --- dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 7 +++++-- dotnetcore2.1/run/MockBootstraps/MockRuntime.cs | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 824a6a23..5c9a59ca 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -64,7 +64,10 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime invoked = true; - curSBSharedMem = new SBSharedMem(sharedMem); + var outputStream = new MemoryStream(outputBuffer); + outputStream.SetLength(0); + + curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { RequestId = context.RequestId, @@ -76,7 +79,7 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime }, XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), InputStream = context.InputStream, - OutputStream = new MemoryStream(outputBuffer), + OutputStream = outputStream, LambdaContextInternal = new LambdaContextInternal( context.RemainingTime, SendCustomerLogMessage, diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 824a6a23..71f07c5e 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -64,6 +64,9 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime invoked = true; + var outputStream = new MemoryStream(outputBuffer); + outputStream.SetLength(0); + curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { @@ -76,7 +79,7 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime }, XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), InputStream = context.InputStream, - OutputStream = new MemoryStream(outputBuffer), + OutputStream = outputStream, LambdaContextInternal = new LambdaContextInternal( context.RemainingTime, SendCustomerLogMessage, From 4a4d81cbe84288c67aa4279d93b47d8f8d6a7e0b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 9 Nov 2019 21:11:26 -0500 Subject: [PATCH 032/234] Fix formatting in dotnetcore2.0 code --- dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 5c9a59ca..71f07c5e 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -67,7 +67,7 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime var outputStream = new MemoryStream(outputBuffer); outputStream.SetLength(0); - curSBSharedMem = new SBSharedMem(sharedMem); + curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { RequestId = context.RequestId, From bacbe5c4659d9da070f2a717066010e09164b74b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 9 Nov 2019 21:56:45 -0500 Subject: [PATCH 033/234] Ensure dotnetcore runtimes have the right user --- dotnetcore2.0/run/Dockerfile | 2 ++ dotnetcore2.1/run/Dockerfile | 2 ++ 2 files changed, 4 insertions(+) diff --git a/dotnetcore2.0/run/Dockerfile b/dotnetcore2.0/run/Dockerfile index 6f4b5d25..fe348e1f 100644 --- a/dotnetcore2.0/run/Dockerfile +++ b/dotnetcore2.0/run/Dockerfile @@ -21,4 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ COPY --from=0 /app/MockBootstraps.* /var/runtime/ +USER sbx_user1051 + ENTRYPOINT ["/var/lang/bin/dotnet", "/var/runtime/MockBootstraps.dll"] diff --git a/dotnetcore2.1/run/Dockerfile b/dotnetcore2.1/run/Dockerfile index 2d442d23..74004101 100644 --- a/dotnetcore2.1/run/Dockerfile +++ b/dotnetcore2.1/run/Dockerfile @@ -21,4 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ COPY --from=0 /app/MockBootstraps.* /var/runtime/ +USER sbx_user1051 + ENTRYPOINT ["/var/lang/bin/dotnet", "/var/runtime/MockBootstraps.dll"] From e0559227c003c394196bb916d602b377a8d2eb1d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 12 Nov 2019 18:02:55 -0500 Subject: [PATCH 034/234] Update java project settings --- base/dump-java8/.classpath | 41 ++++++++++------- .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 3 ++ examples/java/.classpath | 44 +++++++++++------- examples/java/.project | 46 +++++++++++-------- .../org.eclipse.buildship.core.prefs | 13 ++++++ .../org.eclipse.core.resources.prefs | 2 + .../java/.settings/org.eclipse.jdt.core.prefs | 3 ++ examples/java/README.md | 5 +- examples/java/build.gradle | 6 +-- 10 files changed, 104 insertions(+), 61 deletions(-) create mode 100644 base/dump-java8/.settings/org.eclipse.core.resources.prefs create mode 100644 examples/java/.settings/org.eclipse.buildship.core.prefs create mode 100644 examples/java/.settings/org.eclipse.core.resources.prefs diff --git a/base/dump-java8/.classpath b/base/dump-java8/.classpath index 67bbbc76..95f634dc 100644 --- a/base/dump-java8/.classpath +++ b/base/dump-java8/.classpath @@ -1,20 +1,27 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/base/dump-java8/.settings/org.eclipse.core.resources.prefs b/base/dump-java8/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..2b763404 --- /dev/null +++ b/base/dump-java8/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 diff --git a/base/dump-java8/.settings/org.eclipse.jdt.core.prefs b/base/dump-java8/.settings/org.eclipse.jdt.core.prefs index 714351ae..2f5cc74c 100644 --- a/base/dump-java8/.settings/org.eclipse.jdt.core.prefs +++ b/base/dump-java8/.settings/org.eclipse.jdt.core.prefs @@ -1,5 +1,8 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.source=1.8 diff --git a/examples/java/.classpath b/examples/java/.classpath index 67bbbc76..194b56bf 100644 --- a/examples/java/.classpath +++ b/examples/java/.classpath @@ -1,20 +1,30 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/java/.project b/examples/java/.project index c305363a..d932d68d 100644 --- a/examples/java/.project +++ b/examples/java/.project @@ -1,23 +1,29 @@ - example-handler - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - + example-handler + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.buildship.core.gradleprojectnature + diff --git a/examples/java/.settings/org.eclipse.buildship.core.prefs b/examples/java/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 00000000..72b2d90d --- /dev/null +++ b/examples/java/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0)) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home= +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/examples/java/.settings/org.eclipse.core.resources.prefs b/examples/java/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..2b763404 --- /dev/null +++ b/examples/java/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 diff --git a/examples/java/.settings/org.eclipse.jdt.core.prefs b/examples/java/.settings/org.eclipse.jdt.core.prefs index 714351ae..2f5cc74c 100644 --- a/examples/java/.settings/org.eclipse.jdt.core.prefs +++ b/examples/java/.settings/org.eclipse.jdt.core.prefs @@ -1,5 +1,8 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled org.eclipse.jdt.core.compiler.source=1.8 diff --git a/examples/java/README.md b/examples/java/README.md index 72bba02f..d5811ddb 100644 --- a/examples/java/README.md +++ b/examples/java/README.md @@ -1,13 +1,10 @@ # Java 8 docker-lambda example -This example requires [Gradle](https://gradle.org/) to be installed to build -and layout the classes and jars correctly. - Run with: ```sh # Will place the compiled code in `./build/docker` -docker run --rm -v "$PWD":/app -w /app gradle gradle build +docker run --rm -v "$PWD":/app -w /app gradle:6.0 gradle build # Then you can run using that directory as the task directory docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' diff --git a/examples/java/build.gradle b/examples/java/build.gradle index b0652974..6d496c49 100644 --- a/examples/java/build.gradle +++ b/examples/java/build.gradle @@ -8,7 +8,7 @@ repositories { } dependencies { - compile ( + implementation ( 'com.amazonaws:aws-lambda-java-core:1.2.0', 'com.amazonaws:aws-lambda-java-events:2.2.7' ) @@ -18,7 +18,7 @@ task buildZip(type: Zip) { from compileJava from processResources into('lib') { - from configurations.runtime + from configurations.runtimeClasspath } } @@ -26,7 +26,7 @@ task buildDocker(type: Copy) { from compileJava from processResources into('lib') { - from configurations.runtime + from configurations.runtimeClasspath } into 'build/docker' } From 82e218fadf459b70e13ad17a52f2a275b853f2cc Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 12 Nov 2019 18:10:32 -0500 Subject: [PATCH 035/234] Use UnmanagedMemoryStream instead of MemoryStream for dotnetcore runtimes --- .../run/MockBootstraps/MockBootstraps.csproj | 1 + dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 13 ++++--------- .../run/MockBootstraps/MockBootstraps.csproj | 1 + dotnetcore2.1/run/MockBootstraps/MockRuntime.cs | 13 ++++--------- 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj index c7a2cca7..f3db9e50 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.0/run/MockBootstraps/MockBootstraps.csproj @@ -4,6 +4,7 @@ Exe netcoreapp2.0 MockLambdaRuntime + true diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 71f07c5e..8a28b249 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -18,8 +18,6 @@ internal class MockRuntime : ILambdaRuntime private Exception invokeError; - private readonly byte[] outputBuffer = new byte[SBSharedMem.SizeOfEventBody]; - private readonly IntPtr sharedMem = Marshal.AllocHGlobal(SBSharedMem.UnmanagedStructSize); private SBSharedMem curSBSharedMem; @@ -58,15 +56,12 @@ public void Init() { } - public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) + unsafe public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) { Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); invoked = true; - var outputStream = new MemoryStream(outputBuffer); - outputStream.SetLength(0); - curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { @@ -79,7 +74,7 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime }, XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), InputStream = context.InputStream, - OutputStream = outputStream, + OutputStream = new UnmanagedMemoryStream(curSBSharedMem.EventBody, 0, SBSharedMem.SizeOfEventBody, FileAccess.Write), LambdaContextInternal = new LambdaContextInternal( context.RemainingTime, SendCustomerLogMessage, @@ -99,7 +94,7 @@ public void SendCustomerLogMessage(string message) Console.Error.WriteLine(message); } - public void ReportDone(string invokeId, string errorType, bool waitForExit) + public unsafe void ReportDone(string invokeId, string errorType, bool waitForExit) { if (!invoked && invokeError == null) return; @@ -118,7 +113,7 @@ public void ReportDone(string invokeId, string errorType, bool waitForExit) return; } - var output = Encoding.UTF8.GetString(outputBuffer, 0, curSBSharedMem.ResponseBodyLen); + var output = Interop.InteropUtils.ReadUTF8String(curSBSharedMem.EventBody, curSBSharedMem.ResponseBodyLen); Console.WriteLine(output); diff --git a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj index e09cc558..ea15e720 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj +++ b/dotnetcore2.1/run/MockBootstraps/MockBootstraps.csproj @@ -4,6 +4,7 @@ Exe netcoreapp2.1 MockLambdaRuntime + true diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 71f07c5e..8a28b249 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -18,8 +18,6 @@ internal class MockRuntime : ILambdaRuntime private Exception invokeError; - private readonly byte[] outputBuffer = new byte[SBSharedMem.SizeOfEventBody]; - private readonly IntPtr sharedMem = Marshal.AllocHGlobal(SBSharedMem.UnmanagedStructSize); private SBSharedMem curSBSharedMem; @@ -58,15 +56,12 @@ public void Init() { } - public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) + unsafe public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) { Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); invoked = true; - var outputStream = new MemoryStream(outputBuffer); - outputStream.SetLength(0); - curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { @@ -79,7 +74,7 @@ public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, Runtime }, XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), InputStream = context.InputStream, - OutputStream = outputStream, + OutputStream = new UnmanagedMemoryStream(curSBSharedMem.EventBody, 0, SBSharedMem.SizeOfEventBody, FileAccess.Write), LambdaContextInternal = new LambdaContextInternal( context.RemainingTime, SendCustomerLogMessage, @@ -99,7 +94,7 @@ public void SendCustomerLogMessage(string message) Console.Error.WriteLine(message); } - public void ReportDone(string invokeId, string errorType, bool waitForExit) + public unsafe void ReportDone(string invokeId, string errorType, bool waitForExit) { if (!invoked && invokeError == null) return; @@ -118,7 +113,7 @@ public void ReportDone(string invokeId, string errorType, bool waitForExit) return; } - var output = Encoding.UTF8.GetString(outputBuffer, 0, curSBSharedMem.ResponseBodyLen); + var output = Interop.InteropUtils.ReadUTF8String(curSBSharedMem.EventBody, curSBSharedMem.ResponseBodyLen); Console.WriteLine(output); From 99d9693484d189ebcc49727aead45beb6784ead4 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 14 Nov 2019 23:13:15 -0500 Subject: [PATCH 036/234] Move dump-go1x into its own directory --- base/{ => dump-go1x}/dump-go1x.go | 14 +++++++------- base/dump-go1x/go.mod | 8 ++++++++ base/dump-go1x/go.sum | 30 ++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 7 deletions(-) rename base/{ => dump-go1x}/dump-go1x.go (91%) create mode 100644 base/dump-go1x/go.mod create mode 100644 base/dump-go1x/go.sum diff --git a/base/dump-go1x.go b/base/dump-go1x/dump-go1x.go similarity index 91% rename from base/dump-go1x.go rename to base/dump-go1x/dump-go1x.go index 54c13b0a..25694be8 100644 --- a/base/dump-go1x.go +++ b/base/dump-go1x/dump-go1x.go @@ -12,10 +12,10 @@ import ( "os/exec" ) -func HandleRequest(ctx context.Context, event interface{}) (*s3.PutObjectOutput, error) { +func handleRequest(ctx context.Context, event interface{}) (*s3.PutObjectResponse, error) { filename := "go1.x.tgz" - RunShell("tar -cpzf /tmp/" + filename + " --numeric-owner --ignore-failed-read /var/runtime /var/lang") + runShell("tar -cpzf /tmp/" + filename + " --numeric-owner --ignore-failed-read /var/runtime /var/lang") fmt.Println("Zipping done! Uploading...") @@ -34,16 +34,16 @@ func HandleRequest(ctx context.Context, event interface{}) (*s3.PutObjectOutput, Body: file, Bucket: aws.String("lambci"), Key: aws.String("fs/" + filename), - }).Send() + }).Send(context.Background()) if err != nil { log.Fatal(err) } fmt.Println("Uploading done!") - RunShell("ps aux") + runShell("ps aux") - RunShell("xargs --null --max-args=1 < /proc/1/environ") + runShell("xargs --null --max-args=1 < /proc/1/environ") for _, a := range os.Args { fmt.Println(a) @@ -58,7 +58,7 @@ func HandleRequest(ctx context.Context, event interface{}) (*s3.PutObjectOutput, return resp, nil } -func RunShell(shellCmd string) { +func runShell(shellCmd string) { cmd := exec.Command("sh", "-c", shellCmd) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr @@ -66,7 +66,7 @@ func RunShell(shellCmd string) { } func main() { - lambda.Start(HandleRequest) + lambda.Start(handleRequest) } /* diff --git a/base/dump-go1x/go.mod b/base/dump-go1x/go.mod new file mode 100644 index 00000000..32a59771 --- /dev/null +++ b/base/dump-go1x/go.mod @@ -0,0 +1,8 @@ +module dump-go1x + +require ( + github.com/aws/aws-lambda-go v1.13.3 + github.com/aws/aws-sdk-go-v2 v0.16.0 +) + +go 1.13 diff --git a/base/dump-go1x/go.sum b/base/dump-go1x/go.sum new file mode 100644 index 00000000..b3119fb9 --- /dev/null +++ b/base/dump-go1x/go.sum @@ -0,0 +1,30 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/aws/aws-lambda-go v1.13.2 h1:8lYuRVn6rESoUNZXdbCmtGB4bBk4vcVYojiHjE4mMrM= +github.com/aws/aws-lambda-go v1.13.2/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go-v2 v0.16.0 h1:X5pkFnjRNdDEX18NwDGWMaWL5ocNQX0qIYEhEcsTy64= +github.com/aws/aws-sdk-go-v2 v0.16.0/go.mod h1:pFLIN9LDjOEwHfruGweAXEq0XaD6uRkY8FsRkxhuBIg= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc h1:a3CU5tJYVj92DY2LaA1kUkrsqD5/3mLDhx2NcNqyW+0= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From e456ae866f2a1b52e4171d88f4bee3209ee61823 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 14 Nov 2019 23:18:54 -0500 Subject: [PATCH 037/234] Fix go1.x example handler module name --- examples/go1.x/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/go1.x/go.mod b/examples/go1.x/go.mod index 5a5837c4..f263af82 100644 --- a/examples/go1.x/go.mod +++ b/examples/go1.x/go.mod @@ -1,4 +1,4 @@ -module aws-lambda-mock +module handler require github.com/aws/aws-lambda-go v1.13.2 From 7baf83cffc34192fd674c41ee2d8a066798ab9ae Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 15 Nov 2019 10:45:28 -0500 Subject: [PATCH 038/234] Update aws-sam-cli to 0.31.1 in all build images (except python2.7) --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index eed41182..0e735fea 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index b31f75d3..77515648 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 2053f5ba..bf7c147f 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 23bc5d9e..7261708d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-5.6/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 392a4fd8..447594fe 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 89bf7df0..09348b97 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 50bf1a3f..2631f428 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index ae84cdde..123ef00a 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 63827a5f..b6ab5d5d 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 4ed93fbd..aee7ebcb 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 76d6a5e1..fdc99f9c 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 4982ec75..1787aef6 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir From c34337ac5c01745dd2539a130bbf143031cf2893 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 15 Nov 2019 11:49:22 -0500 Subject: [PATCH 039/234] Add Docker Content Trust --- README.md | 221 +++++++++++++++++++++++++++----------------- base/publish-all.sh | 2 + 2 files changed, 137 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index 5851aafb..f6b9efb8 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -docker-lambda -------------- +# docker-lambda A sandboxed local environment that replicates the live [AWS Lambda](https://aws.amazon.com/lambda/) environment almost identically – including installed software and libraries, @@ -14,20 +13,25 @@ also use it to [compile native dependencies](#build-examples) knowing that you'r same library versions that exist on AWS Lambda and then deploy using the [AWS CLI](https://aws.amazon.com/cli/). -This project consists of a set of Docker images for each of the supported Lambda runtimes. +--- -There are also a set of build images that include packages like gcc-c++, git, -zip and the aws-cli for compiling and deploying. +## Contents -There's also an npm module to make it convenient to invoke from Node.js +* [Usage](#usage) +* [Run Examples](#run-examples) +* [Build Examples](#build-examples) +* [Using a Dockerfile to build](#using-a-dockerfile-to-build) +* [Docker tags](#docker-tags) +* [Verifying images](#verifying-images) +* [Environment variables](#environment-variables) +* [Build environment](#build-environment) +* [Questions](#questions) -Prerequisites -------------- +--- -You'll need [Docker](https://www.docker.com) installed +## Usage -Run Examples ------------- +### Running Lambda functions You can run your Lambdas from local directories using the `-v` arg with `docker run` – logging goes to stderr and the callback result goes to stdout. @@ -42,7 +46,18 @@ docker run [--rm] -v :/var/task [-v :/opt] lambci/lambda::/var/task [-v :/opt] lambci/lambda:build- +``` + +You can also use [yumda](https://github.com/lambci/yumda) to install precompiled native dependencies using `yum install`. + +## Run Examples ```sh # Test an index.handler function from the current directory on Node.js v10.x @@ -102,8 +117,7 @@ echo '{"some": "event"}' | docker run --rm -v "$PWD":/var/task -i -e DOCKER_LAMB You can see more examples of how to build docker images and run different runtimes in the [examples](./examples) directory. -Build Examples --------------- +## Build Examples To use the build images, for compilation, deployment, etc: @@ -125,22 +139,9 @@ docker run --rm lambci/lambda:build-python2.7 aws --version docker run -it lambci/lambda:build-python3.6 bash ``` -Using the Node.js module (`npm install docker-lambda`) – for example in tests: - -```js -var dockerLambda = require('docker-lambda') - -// Spawns synchronously, uses current dir – will throw if it fails -var lambdaCallbackResult = dockerLambda({event: {some: 'event'}}) - -// Manually specify directory and custom args -lambdaCallbackResult = dockerLambda({taskDir: __dirname, dockerArgs: ['-m', '1.5G']}) - -// Use a different image from the default Node.js v4.3 -lambdaCallbackResult = dockerLambda({dockerImage: 'lambci/lambda:nodejs6.10'}) -``` +## Using a Dockerfile to build -Create your own Docker image for finer control: +Create your own Docker image to build and deploy: ```dockerfile FROM lambci/lambda:build-nodejs8.10 @@ -151,63 +152,50 @@ COPY . . RUN npm install -# Assumes you have a .lambdaignore file with a list of files you don't want in your zip -RUN cat .lambdaignore | xargs zip -9qyr lambda.zip . -x +RUN zip -9yr lambda.zip . CMD aws lambda update-function-code --function-name mylambda --zip-file fileb://lambda.zip - -# docker build -t mylambda . -# docker run --rm -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY mylambda ``` +And then: -Questions ---------- - -* *When should I use this?* - - When you want fast local reproducibility. When you don't want to spin up an - Amazon Linux EC2 instance (indeed, network aside, this is closer to the real - Lambda environment because there are a number of different files, permissions - and libraries on a default Amazon Linux instance). When you don't want to - invoke a live Lambda just to test your Lambda package – you can do it locally - from your dev machine or run tests on your CI system (assuming it has Docker - support!) - +```sh +docker build -t mylambda . +docker run --rm -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY mylambda +``` -* *Wut, how?* +## Node.js module - By [tarring the full filesystem in Lambda, uploading that to S3](./base/dump-nodejs43.js), - and then [piping into Docker to create a new image from scratch](./base/create-base.sh) – - then [creating mock modules](./nodejs4.3/run/awslambda-mock.js) that will be - required/included in place of the actual native modules that communicate with - the real Lambda coordinating services. Only the native modules are mocked - out – the actual parent JS/PY/Java runner files are left alone, so their behaviors - don't need to be replicated (like the overriding of `console.log`, and custom - defined properties like `callbackWaitsForEmptyEventLoop`) +Using the Node.js module (`npm install docker-lambda`) – for example in tests: -* *What's missing from the images?* +```js +var dockerLambda = require('docker-lambda') - Hard to tell – anything that's not readable – so at least `/root/*` – - but probably a little more than that – hopefully nothing important, after all, - it's not readable by Lambda, so how could it be! +// Spawns synchronously, uses current dir – will throw if it fails +var lambdaCallbackResult = dockerLambda({event: {some: 'event'}}) -* *Is it really necessary to replicate exactly to this degree?* +// Manually specify directory and custom args +lambdaCallbackResult = dockerLambda({taskDir: __dirname, dockerArgs: ['-m', '1.5G']}) - Not for many scenarios – some compiled Linux binaries work out of the box - and an Amazon Linux Docker image can compile some binaries that work on - Lambda too, for example – but for testing it's great to be able to reliably - verify permissions issues, library linking issues, etc. +// Use a different image from the default Node.js v4.3 +lambdaCallbackResult = dockerLambda({dockerImage: 'lambci/lambda:nodejs6.10'}) +``` -* *What's this got to do with LambCI?* +Options to pass to `dockerLambda()`: + - `dockerImage` + - `handler` + - `event` + - `taskDir` + - `cleanUp` + - `addEnvVars` + - `dockerArgs` + - `spawnOptions` + - `returnSpawnResult` - Technically nothing – it's just been incredibly useful during the building - and testing of LambCI. +## Docker tags -Documentation ------------- +These follow the Lambda runtime names: -Docker tags (follow the Lambda runtime names): - `nodejs4.3` - `nodejs6.10` - `nodejs8.10` @@ -235,34 +223,53 @@ Docker tags (follow the Lambda runtime names): - `build-dotnetcore2.1` - `build-provided` -Env vars: +## Verifying images + +These images are signed using [Docker Content Trust](https://docs.docker.com/engine/security/trust/content_trust/), +with the following keys: + +- Repository Key: `e966126aacd4be5fb92e0160212dd007fc16a9b4366ef86d28fc7eb49f4d0809` +- Root Key: `031d78bcdca4171be103da6ffb55e8ddfa9bd113e0ec481ade78d897d9e65c0e` + +You can verify/inspect an image using `docker trust inspect`: + +```sh +$ docker trust inspect --pretty lambci/lambda:provided + +Signatures for lambci/lambda:provided + +SIGNED TAG DIGEST SIGNERS +provided 838c42079b5fcfd6640d486f13c1ceeb52ac661e19f9f1d240b63478e53d73f8 (Repo Admin) + +Administrative keys for lambci/lambda:provided + + Repository Key: e966126aacd4be5fb92e0160212dd007fc16a9b4366ef86d28fc7eb49f4d0809 + Root Key: 031d78bcdca4171be103da6ffb55e8ddfa9bd113e0ec481ade78d897d9e65c0e +``` + +(The `DIGEST` for a given tag may not match the example above, but the Repository and Root keys should match) + +## Environment variables + + - `AWS_LAMBDA_FUNCTION_HANDLER` or `_HANDLER` + - `AWS_LAMBDA_EVENT_BODY` - `AWS_LAMBDA_FUNCTION_NAME` - `AWS_LAMBDA_FUNCTION_VERSION` - `AWS_LAMBDA_FUNCTION_INVOKED_ARN` - `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` - `AWS_LAMBDA_FUNCTION_TIMEOUT` - - `AWS_LAMBDA_FUNCTION_HANDLER` - - `AWS_LAMBDA_EVENT_BODY` - - `AWS_REGION` - - `AWS_DEFAULT_REGION` + - `_X_AMZN_TRACE_ID` + - `AWS_REGION` or `AWS_DEFAULT_REGION` - `AWS_ACCOUNT_ID` - `AWS_ACCESS_KEY_ID` - `AWS_SECRET_ACCESS_KEY` - `AWS_SESSION_TOKEN` - `DOCKER_LAMBDA_USE_STDIN` -Options to pass to `dockerLambda()`: - - `dockerImage` - - `handler` - - `event` - - `taskDir` - - `cleanUp` - - `addEnvVars` - - `dockerArgs` - - `spawnOptions` - - `returnSpawnResult` +## Build environment Yum packages installed on build images: + - `development` (group, includes `gcc-c++`, `autoconf`, `automake`, `git`, `vim`, etc) - `aws-cli` - `aws-sam-cli` @@ -287,3 +294,45 @@ Yum packages installed on build images: - `pcre-devel` - `libcurl-devel` - `yum-plugin-ovl` + +## Questions + +* *When should I use this?* + + When you want fast local reproducibility. When you don't want to spin up an + Amazon Linux EC2 instance (indeed, network aside, this is closer to the real + Lambda environment because there are a number of different files, permissions + and libraries on a default Amazon Linux instance). When you don't want to + invoke a live Lambda just to test your Lambda package – you can do it locally + from your dev machine or run tests on your CI system (assuming it has Docker + support!) + + +* *Wut, how?* + + By [tarring the full filesystem in Lambda, uploading that to S3](./base/dump-nodejs43.js), + and then [piping into Docker to create a new image from scratch](./base/create-base.sh) – + then [creating mock modules](./nodejs4.3/run/awslambda-mock.js) that will be + required/included in place of the actual native modules that communicate with + the real Lambda coordinating services. Only the native modules are mocked + out – the actual parent JS/PY/Java runner files are left alone, so their behaviors + don't need to be replicated (like the overriding of `console.log`, and custom + defined properties like `callbackWaitsForEmptyEventLoop`) + +* *What's missing from the images?* + + Hard to tell – anything that's not readable – so at least `/root/*` – + but probably a little more than that – hopefully nothing important, after all, + it's not readable by Lambda, so how could it be! + +* *Is it really necessary to replicate exactly to this degree?* + + Not for many scenarios – some compiled Linux binaries work out of the box + and an Amazon Linux Docker image can compile some binaries that work on + Lambda too, for example – but for testing it's great to be able to reliably + verify permissions issues, library linking issues, etc. + +* *What's this got to do with LambCI?* + + Technically nothing – it's just been incredibly useful during the building + and testing of LambCI. diff --git a/base/publish-all.sh b/base/publish-all.sh index 30603bca..b2245694 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -2,6 +2,8 @@ RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +export DOCKER_CONTENT_TRUST=1 + docker push lambci/lambda-base docker push lambci/lambda-base-2 From 3cb8de4d177fe77f03a5e77076c19949786f2709 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 15 Nov 2019 14:51:02 -0500 Subject: [PATCH 040/234] Read repository passphrase at start and reuse for all publishes --- base/publish-all.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/base/publish-all.sh b/base/publish-all.sh index b2245694..1541598b 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -2,7 +2,12 @@ RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +echo -n "Enter repository passphrase: " +read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE +echo + export DOCKER_CONTENT_TRUST=1 +export DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE docker push lambci/lambda-base docker push lambci/lambda-base-2 From 628ba68f625e7831349680f22ad7dcace4990fc9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 7 Oct 2019 13:55:19 -0400 Subject: [PATCH 041/234] Add Lambda API to provided runtime --- provided/run/go.mod | 2 + provided/run/init.go | 687 +++++++++++++++++++++++++++++-------------- 2 files changed, 471 insertions(+), 218 deletions(-) diff --git a/provided/run/go.mod b/provided/run/go.mod index 0f8b9c00..23a90256 100644 --- a/provided/run/go.mod +++ b/provided/run/go.mod @@ -4,3 +4,5 @@ require ( github.com/go-chi/chi v4.0.2+incompatible github.com/go-chi/render v1.0.1 ) + +go 1.13 diff --git a/provided/run/init.go b/provided/run/init.go index 4fd33bb3..dd691446 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -4,20 +4,25 @@ import ( "bufio" "bytes" "context" + "encoding/base64" "encoding/hex" "encoding/json" "flag" "fmt" + "io" "io/ioutil" + "log" "math" "math/rand" "net" "net/http" "os" "os/exec" + "os/signal" "reflect" "regexp" "strconv" + "sync" "syscall" "time" @@ -25,15 +30,8 @@ import ( "github.com/go-chi/render" ) -type key int - -const ( - keyRequestID key = iota -) +var logDebug = false -var okStatusResponse = &statusResponse{Status: "OK", HTTPStatusCode: 202} - -var curRequestID = fakeGUID() var curState = "STATE_INIT" var transitions = map[string]map[string]bool{ @@ -43,21 +41,71 @@ var transitions = map[string]map[string]bool{ "STATE_INVOKE_ERROR": map[string]bool{"STATE_INVOKE_NEXT": true}, } -var mockContext = &mockLambdaContext{} +var acceptedResponse = &statusResponse{Status: "OK", HTTPStatusCode: 202} + +var curContext *mockLambdaContext +var bootstrapCmd *exec.Cmd +var initPrinted bool +var eventChan chan *mockLambdaContext +var stayOpen bool +var apiPort string +var exited bool +var noBootstrap bool +var bootstrapIsRunning bool +var bootstrapPath *string +var bootstrapArgs []string +var bootstrapMutex sync.Mutex +var logsBuf bytes.Buffer + +func newContext() *mockLambdaContext { + context := &mockLambdaContext{ + RequestID: fakeGUID(), + FnName: getEnv("AWS_LAMBDA_FUNCTION_NAME", "test"), + Version: getEnv("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"), + MemSize: getEnv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536"), + Timeout: getEnv("AWS_LAMBDA_FUNCTION_TIMEOUT", "300"), + Region: getEnv("AWS_REGION", getEnv("AWS_DEFAULT_REGION", "us-east-1")), + AccountID: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), + XAmznTraceID: getEnv("_X_AMZN_TRACE_ID", ""), + ClientContext: getEnv("AWS_LAMBDA_CLIENT_CONTEXT", ""), + CognitoIdentity: getEnv("AWS_LAMBDA_COGNITO_IDENTITY", ""), + Start: time.Now(), + Done: make(chan bool), + } + context.ParseTimeout() + context.ParseFunctionArn() + return context +} + +type key int + +const ( + keyRequestID key = iota +) func main() { rand.Seed(time.Now().UTC().UnixNano()) - curRequestID = fakeGUID() + log.SetOutput(os.Stderr) - bootstrapPath := flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") + interrupt := make(chan os.Signal, 1) + signal.Notify(interrupt, os.Interrupt) + + render.Respond = renderJSON + + eventChan = make(chan *mockLambdaContext) + + stayOpen = os.Getenv("DOCKER_LAMBDA_STAY_OPEN") != "" + noBootstrap = os.Getenv("DOCKER_LAMBDA_NO_BOOTSTRAP") != "" + apiPort = getEnv("DOCKER_LAMBDA_API_PORT", "9001") + + bootstrapPath = flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") bootstrapArgsString := flag.String("bootstrap-args", "[]", "additional arguments passed to bootstrap, as a stringified JSON Array") flag.Parse() positionalArgs := flag.Args() - var bootstrapArgs []string if err := json.Unmarshal([]byte(*bootstrapArgsString), &bootstrapArgs); err != nil { - abortRequest(fmt.Errorf("Value of --bootstrap-args should be a JSON Array. Error: %s", err)) + log.Fatal(fmt.Errorf("Value of --bootstrap-args should be a JSON Array. Error: %s", err)) return } @@ -67,81 +115,275 @@ func main() { } else { handler = getEnv("AWS_LAMBDA_FUNCTION_HANDLER", getEnv("_HANDLER", "handler")) } + os.Setenv("_HANDLER", handler) - var eventBody string + var eventBody []byte if len(positionalArgs) > 1 { - eventBody = positionalArgs[1] + eventBody = []byte(positionalArgs[1]) } else { - eventBody = os.Getenv("AWS_LAMBDA_EVENT_BODY") - if eventBody == "" { + eventBody = []byte(os.Getenv("AWS_LAMBDA_EVENT_BODY")) + if len(eventBody) == 0 { if os.Getenv("DOCKER_LAMBDA_USE_STDIN") != "" { - stdin, _ := ioutil.ReadAll(os.Stdin) - eventBody = string(stdin) + eventBody, _ = ioutil.ReadAll(os.Stdin) } else { - eventBody = "{}" + eventBody = []byte("{}") } } } - mockContext = &mockLambdaContext{ - EventBody: eventBody, - FnName: getEnv("AWS_LAMBDA_FUNCTION_NAME", "test"), - Version: getEnv("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"), - MemSize: getEnv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536"), - Timeout: getEnv("AWS_LAMBDA_FUNCTION_TIMEOUT", "300"), - Region: getEnv("AWS_REGION", getEnv("AWS_DEFAULT_REGION", "us-east-1")), - AccountID: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), - XAmznTraceID: getEnv("_X_AMZN_TRACE_ID", ""), - ClientContext: getEnv("AWS_LAMBDA_CLIENT_CONTEXT", ""), - CognitoIdentity: getEnv("AWS_LAMBDA_COGNITO_IDENTITY", ""), - Start: time.Now(), - Pid: 1, - Done: make(chan bool), + curContext = newContext() + + os.Setenv("AWS_LAMBDA_FUNCTION_NAME", curContext.FnName) + os.Setenv("AWS_LAMBDA_FUNCTION_VERSION", curContext.Version) + os.Setenv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", curContext.MemSize) + os.Setenv("AWS_LAMBDA_LOG_GROUP_NAME", "/aws/lambda/"+curContext.FnName) + os.Setenv("AWS_LAMBDA_LOG_STREAM_NAME", logStreamName(curContext.Version)) + os.Setenv("AWS_REGION", curContext.Region) + os.Setenv("AWS_DEFAULT_REGION", curContext.Region) + os.Setenv("_X_AMZN_TRACE_ID", curContext.XAmznTraceID) + + runtimeRouter := createRuntimeRouter() + + runtimeListener, err := net.Listen("tcp", ":9001") + if err != nil { + log.Fatal(err) + return } - mockContext.ParseTimeout() - mockContext.ParseFunctionArn() - awsAccessKey := getEnv("AWS_ACCESS_KEY", getEnv("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID")) - awsSecretKey := getEnv("AWS_SECRET_KEY", getEnv("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY")) - awsSessionToken := getEnv("AWS_SESSION_TOKEN", os.Getenv("AWS_SECURITY_TOKEN")) + var runtimeServer *http.Server + if apiPort == "9001" { + runtimeServer = &http.Server{Handler: addAPIRoutes(runtimeRouter)} + } else { + runtimeServer = &http.Server{Handler: runtimeRouter} + apiListener, err := net.Listen("tcp", ":"+apiPort) + if err != nil { + log.Fatal(err) + return + } + apiServer := &http.Server{Handler: addAPIRoutes(chi.NewRouter())} + go apiServer.Serve(apiListener) + } - os.Setenv("AWS_LAMBDA_FUNCTION_NAME", mockContext.FnName) - os.Setenv("AWS_LAMBDA_FUNCTION_VERSION", mockContext.Version) - os.Setenv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", mockContext.MemSize) - os.Setenv("AWS_LAMBDA_LOG_GROUP_NAME", "/aws/lambda/"+mockContext.FnName) - os.Setenv("AWS_LAMBDA_LOG_STREAM_NAME", logStreamName(mockContext.Version)) - os.Setenv("AWS_REGION", mockContext.Region) - os.Setenv("AWS_DEFAULT_REGION", mockContext.Region) - os.Setenv("_X_AMZN_TRACE_ID", mockContext.XAmznTraceID) - os.Setenv("_HANDLER", handler) + go runtimeServer.Serve(runtimeListener) + + exitCode := 0 + + if stayOpen { + systemLog(fmt.Sprintf("Lambda API listening on port %s...", apiPort)) + <-interrupt + } else { + res, err := http.Post( + "http://127.0.0.1:9001/2015-03-31/functions/"+curContext.FnName+"/invocations", + "application/json", + bytes.NewBuffer(eventBody), + ) + if err != nil { + log.Fatal(err) + return + } + functionError := res.Header.Get("X-Amz-Function-Error") + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + log.Fatal(err) + return + } + res.Body.Close() - var cmd *exec.Cmd + fmt.Println("\n" + formatOneLineJSON(body)) + + if functionError != "" { + exitCode = 1 + } + } + + exit(exitCode) +} + +func formatOneLineJSON(body []byte) string { + payloadObj := &json.RawMessage{} + if json.Unmarshal(body, payloadObj) == nil { + if formattedPayload, err := json.Marshal(payloadObj); err == nil { + body = formattedPayload + } + } + return string(body) +} + +func ensureBootstrapIsRunning(context *mockLambdaContext) error { + if noBootstrap || bootstrapIsRunning { + return nil + } + bootstrapMutex.Lock() + defer bootstrapMutex.Unlock() + if bootstrapIsRunning { + return nil + } for _, cmdPath := range []string{*bootstrapPath, "/var/task/bootstrap", "/opt/bootstrap"} { if fi, err := os.Stat(cmdPath); err == nil && !fi.IsDir() { - cmd = exec.Command(cmdPath, bootstrapArgs...) + bootstrapCmd = exec.Command(cmdPath, bootstrapArgs...) break } } - if cmd == nil { - abortRequest(fmt.Errorf("Couldn't find valid bootstrap(s): [/var/task/bootstrap /opt/bootstrap]")) + if bootstrapCmd == nil { + return fmt.Errorf("Couldn't find valid bootstrap(s): [/var/task/bootstrap /opt/bootstrap]") } - cmd.Env = append(os.Environ(), + awsAccessKey := getEnv("AWS_ACCESS_KEY", getEnv("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID")) + awsSecretKey := getEnv("AWS_SECRET_KEY", getEnv("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY")) + awsSessionToken := getEnv("AWS_SESSION_TOKEN", os.Getenv("AWS_SECURITY_TOKEN")) + + bootstrapCmd.Env = append(os.Environ(), "AWS_LAMBDA_RUNTIME_API=127.0.0.1:9001", "AWS_ACCESS_KEY_ID="+awsAccessKey, "AWS_SECRET_ACCESS_KEY="+awsSecretKey, ) if len(awsSessionToken) > 0 { - cmd.Env = append(cmd.Env, "AWS_SESSION_TOKEN="+awsSessionToken) + bootstrapCmd.Env = append(bootstrapCmd.Env, "AWS_SESSION_TOKEN="+awsSessionToken) } - cmd.Stdout = os.Stderr - cmd.Stderr = os.Stderr - cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} - mockContext.Cmd = cmd + if stayOpen { + bootstrapCmd.Stdout = io.MultiWriter(os.Stdout, &logsBuf) + bootstrapCmd.Stderr = io.MultiWriter(os.Stderr, &logsBuf) + } else { + bootstrapCmd.Stdout = os.Stderr + bootstrapCmd.Stderr = os.Stderr + } + bootstrapCmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} - render.Respond = renderJSON + if err := bootstrapCmd.Start(); err != nil { + return err + } + + bootstrapIsRunning = true + + // Get an initial read of memory, and update when we finish + context.MaxMem, _ = allProcsMemoryInMb() + + go func() { + bootstrapCmd.Wait() + bootstrapIsRunning = false + curState = "STATE_INIT" + if !exited { + // context may have changed, use curContext instead + curContext.SetError(fmt.Errorf("Runtime exited without providing a reason")) + } + }() + + return nil +} + +func exit(exitCode int) { + exited = true + if bootstrapCmd != nil && bootstrapCmd.Process != nil { + syscall.Kill(-bootstrapCmd.Process.Pid, syscall.SIGKILL) + } + os.Exit(exitCode) +} +func waitForContext(context *mockLambdaContext) { + if err := ensureBootstrapIsRunning(context); err != nil { + context.EndInvoke(err) + } else { + eventChan <- context + <-context.Done + } +} + +func addAPIRoutes(r *chi.Mux) *chi.Mux { + r.Post("/2015-03-31/functions/{function}/invocations", func(w http.ResponseWriter, r *http.Request) { + context := newContext() + + if r.Header.Get("X-Amz-Invocation-Type") != "" { + context.InvocationType = r.Header.Get("X-Amz-Invocation-Type") + } + if r.Header.Get("X-Amz-Client-Context") != "" { + buf, err := base64.StdEncoding.DecodeString(r.Header.Get("X-Amz-Client-Context")) + if err != nil { + render.Render(w, r, &errResponse{ + HTTPStatusCode: 400, + ErrorType: "ClientContextDecodingError", + ErrorMessage: err.Error(), + }) + return + } + context.ClientContext = string(buf) + } + if r.Header.Get("X-Amz-Log-Type") != "" { + context.LogType = r.Header.Get("X-Amz-Log-Type") + } + + if context.InvocationType == "DryRun" { + w.Header().Set("x-amzn-RequestId", context.RequestID) + w.Header().Set("x-amzn-Remapped-Content-Length", "0") + w.WriteHeader(204) + return + } + + if body, err := ioutil.ReadAll(r.Body); err == nil { + context.EventBody = string(body) + } else { + render.Render(w, r, &errResponse{ + HTTPStatusCode: 500, + ErrorType: "BodyReadError", + ErrorMessage: err.Error(), + }) + return + } + r.Body.Close() + + if context.InvocationType == "Event" { + w.Header().Set("x-amzn-RequestId", context.RequestID) + w.Header().Set("x-amzn-Remapped-Content-Length", "0") + w.Header().Set("X-Amzn-Trace-Id", context.XAmznTraceID) + w.WriteHeader(202) + go waitForContext(context) + return + } + + waitForContext(context) + + w.Header().Set("Content-Type", "application/json") + w.Header().Set("x-amzn-RequestId", context.RequestID) + w.Header().Set("x-amzn-Remapped-Content-Length", "0") + w.Header().Set("X-Amz-Executed-Version", context.Version) + w.Header().Set("X-Amzn-Trace-Id", context.XAmznTraceID) + + if context.LogType == "Tail" { + // We assume context.LogTail is already base64 encoded + w.Header().Set("X-Amz-Log-Result", context.LogTail) + } + + if context.Reply.Error != nil { + errorType := "Unhandled" + if context.ErrorType != "" { + errorType = context.ErrorType + } + w.Header().Set("X-Amz-Function-Error", errorType) + } + + // Lambda will usually return the payload instead of an error if the payload exists + if len(context.Reply.Payload) > 0 { + w.Header().Set("Content-Length", strconv.FormatInt(int64(len(context.Reply.Payload)), 10)) + w.Write(context.Reply.Payload) + return + } + + if payload, err := json.Marshal(context.Reply.Error); err == nil { + w.Header().Set("Content-Length", strconv.FormatInt(int64(len(payload)), 10)) + w.Write(payload) + } else { + render.Render(w, r, &errResponse{ + HTTPStatusCode: 500, + ErrorType: "ErrorMarshalError", + ErrorMessage: err.Error(), + }) + } + }) + return r +} + +func createRuntimeRouter() *chi.Mux { r := chi.NewRouter() r.Route("/2018-06-01", func(r chi.Router) { @@ -152,34 +394,44 @@ func main() { r.Route("/runtime", func(r chi.Router) { r. With(updateState("STATE_INIT_ERROR")). - Post("/init/error", handleErrorRequest) + Post("/init/error", func(w http.ResponseWriter, r *http.Request) { + debug("In /init/error...") + curContext = <-eventChan + handleErrorRequest(w, r) + curContext.EndInvoke(nil) + }) r. With(updateState("STATE_INVOKE_NEXT")). Get("/invocation/next", func(w http.ResponseWriter, r *http.Request) { - if mockContext.RequestID == "" { - mockContext.RequestID = curRequestID - mockContext.InitEnd = time.Now() - logStartRequest() - } else if mockContext.Reply != nil { - endInvoke(nil) - return + debug("In /invocation/next...") + if curContext.Reply != nil { + debug("Reply is not nil...") + curContext.EndInvoke(nil) } + debug("Waiting for next event...") + curContext = <-eventChan + context := curContext + context.LogStartRequest() w.Header().Set("Content-Type", "application/json") - w.Header().Set("Lambda-Runtime-Aws-Request-Id", curRequestID) - w.Header().Set("Lambda-Runtime-Deadline-Ms", strconv.FormatInt(mockContext.Deadline().UnixNano()/1e6, 10)) - w.Header().Set("Lambda-Runtime-Invoked-Function-Arn", mockContext.InvokedFunctionArn) - w.Header().Set("Lambda-Runtime-Trace-Id", mockContext.XAmznTraceID) + w.Header().Set("Lambda-Runtime-Aws-Request-Id", context.RequestID) + w.Header().Set("Lambda-Runtime-Deadline-Ms", strconv.FormatInt(context.Deadline().UnixNano()/1e6, 10)) + w.Header().Set("Lambda-Runtime-Invoked-Function-Arn", context.InvokedFunctionArn) + w.Header().Set("Lambda-Runtime-Trace-Id", context.XAmznTraceID) - if mockContext.ClientContext != "" { - w.Header().Set("Lambda-Runtime-Client-Context", mockContext.ClientContext) + if context.ClientContext != "" { + w.Header().Set("Lambda-Runtime-Client-Context", context.ClientContext) + } + if context.CognitoIdentity != "" { + w.Header().Set("Lambda-Runtime-Cognito-Identity", context.CognitoIdentity) } - if mockContext.CognitoIdentity != "" { - w.Header().Set("Lambda-Runtime-Cognito-Identity", mockContext.CognitoIdentity) + + if context.LogType != "" { + w.Header().Set("Docker-Lambda-Log-Type", context.LogType) } - w.Write([]byte(eventBody)) + w.Write([]byte(context.EventBody)) }) r.Route("/invocation/{requestID}", func(r chi.Router) { @@ -192,15 +444,19 @@ func main() { if err != nil { render.Render(w, r, &errResponse{ HTTPStatusCode: 500, - ErrorType: "BodyReadError", // TODO: not sure what this would be in production? + ErrorType: "BodyReadError", // Not sure what this would be in production? ErrorMessage: err.Error(), }) return } + r.Body.Close() + + debug("Setting Reply in /response") + curContext.Reply = &invokeResponse{Payload: body} - mockContext.Reply = &invokeResponse{Payload: body} + curContext.LogTail = extractLogTail(r, curContext) - render.Render(w, r, okStatusResponse) + render.Render(w, r, acceptedResponse) w.(http.Flusher).Flush() }) @@ -210,62 +466,33 @@ func main() { }) }) }) - - listener, err := net.Listen("tcp", "127.0.0.1:9001") - if err != nil { - abortRequest(err) - return - } - - server := &http.Server{Handler: r} - - go server.Serve(listener) - - res, err := http.Get("http://127.0.0.1:9001/2018-06-01/ping") - if err != nil { - abortRequest(err) - return - } - body, err := ioutil.ReadAll(res.Body) - if err != nil || string(body) != "pong" { - abortRequest(err) - return - } - - if err := cmd.Start(); err != nil { - abortRequest(err) - return - } - go func() { - cmd.Wait() - if mockContext.Reply == nil { - abortRequest(fmt.Errorf("Runtime exited without providing a reason")) - } - }() - - <-mockContext.Done + return r } func handleErrorRequest(w http.ResponseWriter, r *http.Request) { lambdaErr := &lambdaError{} - response := okStatusResponse + response := acceptedResponse body, err := ioutil.ReadAll(r.Body) if err != nil || json.Unmarshal(body, lambdaErr) != nil { response = &statusResponse{Status: "InvalidErrorShape", HTTPStatusCode: 299} } + r.Body.Close() errorType := r.Header.Get("Lambda-Runtime-Function-Error-Type") if errorType != "" { - lambdaErr.Type = errorType + curContext.ErrorType = errorType } - mockContext.Reply = &invokeResponse{Error: lambdaErr} + debug("Setting Reply in handleErrorRequest") + debug(lambdaErr) + + curContext.Reply = &invokeResponse{Error: lambdaErr} + + curContext.LogTail = extractLogTail(r, curContext) render.Render(w, r, response) w.(http.Flusher).Flush() - - endInvoke(nil) } func updateState(nextState string) func(http.Handler) http.Handler { @@ -289,7 +516,7 @@ func awsRequestIDValidator(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { requestID := chi.URLParam(r, "requestID") - if requestID != curRequestID { + if requestID != curContext.RequestID { render.Render(w, r, &errResponse{ HTTPStatusCode: 400, ErrorType: "InvalidRequestID", @@ -304,6 +531,31 @@ func awsRequestIDValidator(next http.Handler) http.Handler { }) } +func extractLogTail(r *http.Request, context *mockLambdaContext) string { + defer logsBuf.Reset() + + if context.LogType != "Tail" { + return "" + } + if noBootstrap { + return r.Header.Get("Docker-Lambda-Log-Result") + } + + // This is very annoying but seems to be necessary to ensure we get all the stdout/stderr from the subprocess + time.Sleep(1 * time.Millisecond) + + logs := logsBuf.Bytes() + + if len(logs) == 0 { + return "" + } + + if len(logs) > 4096 { + logs = logs[len(logs)-4096:] + } + return base64.StdEncoding.EncodeToString(logs) +} + type statusResponse struct { HTTPStatusCode int `json:"-"` Status string `json:"status"` @@ -341,95 +593,6 @@ func renderJSON(w http.ResponseWriter, r *http.Request, v interface{}) { w.Write(buf.Bytes()) } -func abortRequest(err error) { - endInvoke(&exitError{err: err}) -} - -func endInvoke(err error) { - logStart := false - if mockContext.RequestID == "" { - mockContext.RequestID = curRequestID - logStart = true - } - mockContext.MaxMem, _ = allProcsMemoryInMb() - if mockContext.Cmd != nil && mockContext.Cmd.Process != nil { - syscall.Kill(-mockContext.Cmd.Process.Pid, syscall.SIGKILL) - } - if logStart { - logStartRequest() - } - logEndRequest(err) - mockContext.Done <- true -} - -func logStartRequest() { - systemLog("START RequestId: " + mockContext.RequestID + " Version: " + mockContext.Version) -} - -func logEndRequest(err error) { - if mockContext.InitEnd.IsZero() { - mockContext.InitEnd = time.Now() - } - - initDiffMs := math.Min(float64(mockContext.InitEnd.Sub(mockContext.Start).Nanoseconds()), - float64(mockContext.TimeoutDuration.Nanoseconds())) / 1e6 - - diffMs := math.Min(float64(time.Now().Sub(mockContext.InitEnd).Nanoseconds()), - float64(mockContext.TimeoutDuration.Nanoseconds())) / 1e6 - - initStr := "" - if mockContext.Cmd != nil && mockContext.Cmd.Path != "/var/runtime/bootstrap" { - initStr = fmt.Sprintf("Init Duration: %.2f ms\t", initDiffMs) - } - - systemLog("END RequestId: " + mockContext.RequestID) - systemLog(fmt.Sprintf( - "REPORT RequestId: %s\t"+ - initStr+ - "Duration: %.2f ms\t"+ - "Billed Duration: %.f ms\t"+ - "Memory Size: %s MB\t"+ - "Max Memory Used: %d MB\t", - mockContext.RequestID, diffMs, math.Ceil(diffMs/100)*100, mockContext.MemSize, mockContext.MaxMem)) - - if err == nil && mockContext.HasExpired() { - err = mockContext.TimeoutErr() - } - - if err != nil { - responseErr := lambdaError{ - Message: err.Error(), - Type: getErrorType(err), - } - if responseErr.Type == "errorString" { - responseErr.Type = "" - if responseErr.Message == "unexpected EOF" { - responseErr.Message = "RequestId: " + mockContext.RequestID + " Process exited before completing request" - } - } else if responseErr.Type == "ExitError" { - responseErr.Type = "Runtime.ExitError" // XXX: Hack to add 'Runtime.' to error type - } - systemErr(&responseErr) - os.Exit(1) - } - - if mockContext.Reply.Error != nil { - systemErr(mockContext.Reply.Error) - os.Exit(1) - } - - // Try to format json as one line – if it's json - payload := mockContext.Reply.Payload - payloadObj := &json.RawMessage{} - if json.Unmarshal(payload, payloadObj) == nil { - if formattedPayload, err := json.Marshal(payloadObj); err == nil { - payload = formattedPayload - } - } - - fmt.Println(string(payload)) -} - func getEnv(key, fallback string) string { value := os.Getenv(key) if value != "" { @@ -529,22 +692,23 @@ func getErrorType(err interface{}) string { return errorType.Name() } -func systemLog(msg string) { - fmt.Fprintln(os.Stderr, "\033[32m"+msg+"\033[0m") +func debug(v ...interface{}) { + if logDebug { + log.Println(v...) + } } -// Try to match the output of the Lambda web console -func systemErr(err *lambdaError) { - jsonBytes, _ := json.MarshalIndent(err, "", " ") - fmt.Fprintln(os.Stderr, "\033[31m"+string(jsonBytes)+"\033[0m") +func systemLog(msg string) { + fmt.Fprintln(os.Stderr, "\033[32m"+msg+"\033[0m") } type exitError struct { - err error + err error + context *mockLambdaContext } func (e *exitError) Error() string { - return fmt.Sprintf("RequestId: %s Error: %s", curRequestID, e.err.Error()) + return fmt.Sprintf("RequestId: %s Error: %s", e.context.RequestID, e.err.Error()) } type lambdaError struct { @@ -569,11 +733,14 @@ type mockLambdaContext struct { Start time.Time InitEnd time.Time TimeoutDuration time.Duration - Pid int Reply *invokeResponse Done chan bool - Cmd *exec.Cmd MaxMem uint64 + InvocationType string + LogType string + LogTail string // base64 encoded tail, no greater than 4096 bytes + ErrorType string // Unhandled vs Handled + Ended bool } func (mc *mockLambdaContext) ParseTimeout() { @@ -601,6 +768,90 @@ func (mc *mockLambdaContext) TimeoutErr() error { mc.RequestID, mc.Timeout) } +func (mc *mockLambdaContext) SetError(exitErr error) { + err := &exitError{err: exitErr, context: mc} + responseErr := lambdaError{ + Message: err.Error(), + Type: getErrorType(err), + } + if responseErr.Type == "errorString" { + responseErr.Type = "" + if responseErr.Message == "unexpected EOF" { + responseErr.Message = "RequestId: " + mc.RequestID + " Process exited before completing request" + } + } else if responseErr.Type == "ExitError" { + responseErr.Type = "Runtime.ExitError" // XXX: Hack to add 'Runtime.' to error type + } + debug("Setting Reply in SetError") + debug(responseErr) + if mc.Reply == nil { + mc.Reply = &invokeResponse{Error: &responseErr} + } else { + mc.Reply.Error = &responseErr + } +} + +func (mc *mockLambdaContext) EndInvoke(exitErr error) { + debug("EndInvoke()") + if mc.Ended { + return + } + mc.Ended = true + if exitErr != nil { + debug(exitErr) + mc.SetError(exitErr) + } else if (mc.Reply == nil || mc.Reply.Error == nil) && mc.HasExpired() { + mc.Reply = &invokeResponse{ + Error: &lambdaError{ + Message: mc.TimeoutErr().Error(), + }, + } + } + if mc.InitEnd.IsZero() { + mc.LogStartRequest() + } + + mc.LogEndRequest() + + if exitErr == nil { + mc.Done <- true + } +} + +func (mc *mockLambdaContext) LogStartRequest() { + mc.InitEnd = time.Now() + systemLog("START RequestId: " + mc.RequestID + " Version: " + mc.Version) +} + +func (mc *mockLambdaContext) LogEndRequest() { + maxMem, _ := allProcsMemoryInMb() + if maxMem > mc.MaxMem { + mc.MaxMem = maxMem + } + + initDiffMs := math.Min(float64(mc.InitEnd.Sub(mc.Start).Nanoseconds()), + float64(mc.TimeoutDuration.Nanoseconds())) / 1e6 + + diffMs := math.Min(float64(time.Now().Sub(mc.InitEnd).Nanoseconds()), + float64(mc.TimeoutDuration.Nanoseconds())) / 1e6 + + initStr := "" + if !initPrinted { + initPrinted = true + initStr = fmt.Sprintf("Init Duration: %.2f ms\t", initDiffMs) + } + + systemLog("END RequestId: " + mc.RequestID) + systemLog(fmt.Sprintf( + "REPORT RequestId: %s\t"+ + initStr+ + "Duration: %.2f ms\t"+ + "Billed Duration: %.f ms\t"+ + "Memory Size: %s MB\t"+ + "Max Memory Used: %d MB\t", + mc.RequestID, diffMs, math.Ceil(diffMs/100)*100, mc.MemSize, mc.MaxMem)) +} + type invokeResponse struct { Payload []byte Error *lambdaError From 82bf969a9168e8e05194b1e3c1583a6ed0ea55d9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 11 Nov 2019 17:38:55 -0500 Subject: [PATCH 042/234] Add Lambda API support to nodejs4.3/6.10/8.10 --- nodejs4.3/run/Dockerfile | 5 + nodejs4.3/run/awslambda-mock.js | 211 +++++++++++++++++++++---------- nodejs6.10/run/Dockerfile | 5 + nodejs6.10/run/awslambda-mock.js | 211 +++++++++++++++++++++---------- nodejs8.10/run/Dockerfile | 5 + nodejs8.10/run/awslambda-mock.js | 211 +++++++++++++++++++++---------- 6 files changed, 444 insertions(+), 204 deletions(-) diff --git a/nodejs4.3/run/Dockerfile b/nodejs4.3/run/Dockerfile index a4e9cd9c..9f1e318f 100644 --- a/nodejs4.3/run/Dockerfile +++ b/nodejs4.3/run/Dockerfile @@ -1,3 +1,6 @@ +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV PATH=/var/lang/bin:$PATH \ @@ -10,6 +13,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY awslambda-mock.js /var/runtime/node_modules/awslambda/build/Release/awslambda.js +COPY --from=0 /var/runtime/init /var/runtime/mockserver + USER sbx_user1051 ENTRYPOINT ["/var/lang/bin/node", "--expose-gc", "--max-executable-size=160", "--max-semi-space-size=150", "--max-old-space-size=2547", \ diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index 1d014d9e..f953acd9 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -1,5 +1,15 @@ var fs = require('fs') var crypto = require('crypto') +var http = require('http') +var child_process = require('child_process') + +var PING_RETRIES = 20 + +var LOGS = '' +var LOG_TAIL = false +var HAS_BUFFER_FROM = Buffer.from && Buffer.from !== Uint8Array.from + +var STAY_OPEN = process.env.DOCKER_LAMBDA_STAY_OPEN var HANDLER = process.argv[2] || process.env.AWS_LAMBDA_FUNCTION_HANDLER || process.env._HANDLER || 'index.handler' var EVENT_BODY = process.argv[3] || process.env.AWS_LAMBDA_EVENT_BODY || @@ -15,26 +25,14 @@ var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) +var TRACE_ID = process.env._X_AMZN_TRACE_ID || 'root=1-5d9639c7-ac2df104a29f3070f507bdb4;sampled=0' +var CLIENT_CONTEXT = process.env.AWS_LAMBDA_CLIENT_CONTEXT +var COGNITO_IDENTITY = process.env.AWS_LAMBDA_COGNITO_IDENTITY +var COGNITO_IDENTITY_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_id +var COGNITO_IDENTITY_POOL_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_pool_id +var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) -function consoleLog(str) { - process.stderr.write(formatConsole(str)) -} - -function systemLog(str) { - process.stderr.write(formatSystem(str) + '\n') -} - -function systemErr(str) { - process.stderr.write(formatErr(str) + '\n') -} - -function handleResult(resultStr, cb) { - if (!process.stdout.write('\n' + resultStr + '\n')) { - process.stdout.once('drain', cb) - } else { - process.nextTick(cb) - } -} +process.on('SIGINT', () => process.exit(0)) // Don't think this can be done in the Docker image process.umask(2) @@ -49,8 +47,18 @@ process.env.AWS_REGION = REGION process.env.AWS_DEFAULT_REGION = REGION process.env._HANDLER = HANDLER +var mockServerProcess = child_process.spawn('/var/runtime/mockserver', { + stdio: ['pipe', 'inherit', 'inherit'], + env: Object.assign({ + DOCKER_LAMBDA_NO_BOOTSTRAP: 1, + DOCKER_LAMBDA_USE_STDIN: 1, + }, process.env) +}) +mockServerProcess.on('error', console.error) +mockServerProcess.stdin.end(EVENT_BODY) +mockServerProcess.unref() + var OPTIONS = { - initInvokeId: uuid(), invokeId: uuid(), handler: HANDLER, suppressInit: true, @@ -61,11 +69,12 @@ var OPTIONS = { }, eventBody: EVENT_BODY, contextObjects: { - // clientContext: '{}', - // cognitoIdentityId: undefined, - // cognitoPoolId: undefined, + clientContext: CLIENT_CONTEXT, + cognitoIdentityId: COGNITO_IDENTITY_ID, + cognitoPoolId: COGNITO_IDENTITY_POOL_ID, }, invokedFunctionArn: INVOKED_ARN, + 'x-amzn-trace-id': TRACE_ID } // Some weird spelling error in the source? @@ -73,70 +82,132 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false -var start = null +var pingPromise = new Promise(resolve => ping(PING_RETRIES, resolve)) +var reportDonePromise = new Promise(resolve => resolve()) module.exports = { - initRuntime: function() { return OPTIONS }, - waitForInvoke: function(fn) { - if (invoked) return - systemLog('START RequestId: ' + OPTIONS.invokeId + ' Version: ' + VERSION) - start = process.hrtime() - invoked = true - fn(OPTIONS) + initRuntime: function () { return OPTIONS }, + waitForInvoke: function (cb) { + Promise.all([pingPromise, reportDonePromise]).then(() => { + http.get({ + hostname: '127.0.0.1', + port: 9001, + path: '/2018-06-01/runtime/invocation/next', + }, res => { + if (res.statusCode !== 200) { + console.error(`Mock server invocation/next returned a ${res.statusCode} response`) + return process.exit(1) + } + if (invoked) { + LOGS = '' + } + invoked = true + OPTIONS.invokeId = OPTIONS.initInvokeId = OPTIONS.invokeid = res.headers['lambda-runtime-aws-request-id'] + OPTIONS.invokedFunctionArn = res.headers['lambda-runtime-invoked-function-arn'] + OPTIONS['x-amzn-trace-id'] = res.headers['lambda-runtime-trace-id'] + DEADLINE_MS = +res.headers['lambda-runtime-deadline-ms'] + + OPTIONS.contextObjects.clientContext = res.headers['lambda-runtime-client-context'] + var cognitoIdentity = tryParse(res.headers['lambda-runtime-cognito-identity']) || {} + OPTIONS.contextObjects.cognitoIdentityId = cognitoIdentity.identity_id + OPTIONS.contextObjects.cognitoPoolId = cognitoIdentity.identity_pool_id + + LOG_TAIL = res.headers['docker-lambda-log-type'] === 'Tail' + + OPTIONS.eventBody = '' + res.setEncoding('utf8') + .on('data', data => OPTIONS.eventBody += data) + .on('end', () => cb(OPTIONS)) + .on('error', function (err) { + console.error(err) + process.exit(1) + }) + }).on('error', err => { + if (err.code === 'ECONNRESET') { + return process.exit(errored ? 1 : 0) + } + console.error(err) + process.exit(1) + }) + }) }, - reportRunning: function(invokeId) {}, // eslint-disable-line no-unused-vars - reportDone: function(invokeId, errType, resultStr) { + reportRunning: function (invokeId) { }, // eslint-disable-line no-unused-vars + reportDone: function (invokeId, errType, resultStr) { if (!invoked) return - var diffMs = hrTimeMs(process.hrtime(start)) - var billedMs = Math.min(100 * (Math.floor(diffMs / 100) + 1), TIMEOUT * 1000) - systemLog('END RequestId: ' + invokeId) - systemLog([ - 'REPORT RequestId: ' + invokeId, - 'Duration: ' + diffMs.toFixed(2) + ' ms', - 'Billed Duration: ' + billedMs + ' ms', - 'Memory Size: ' + MEM_SIZE + ' MB', - 'Max Memory Used: ' + Math.round(process.memoryUsage().rss / (1024 * 1024)) + ' MB', - '', - ].join('\t')) - - var exitCode = errored || errType ? 1 : 0 - if (typeof resultStr === 'string') { - handleResult(resultStr, function() { process.exit(exitCode) }) - } else { - process.exit(exitCode) - } + if (errType) errored = true + reportDonePromise = new Promise(resolve => { + http.request({ + method: 'POST', + hostname: '127.0.0.1', + port: 9001, + path: '/2018-06-01/runtime/invocation/' + invokeId + (errType == null ? '/response' : '/error'), + headers: LOG_TAIL ? { 'Docker-Lambda-Log-Result': newBuffer(LOGS).slice(-4096).toString('base64') } : {}, + }, res => { + if (res.statusCode !== 202) { + console.error(err || 'Got status code: ' + res.statusCode) + process.exit(1) + } + resolve() + }).on('error', err => { + console.error(err) + process.exit(1) + }).end(resultStr) + }) }, - reportFault: function(invokeId, msg, errName, errStack) { + reportFault: function (invokeId, msg, errName, errStack) { errored = true systemErr(msg + (errName ? ': ' + errName : '')) if (errStack) systemErr(errStack) }, - reportUserInitStart: function() {}, - reportUserInitEnd: function() {}, - reportUserInvokeStart: function() {}, - reportUserInvokeEnd: function() {}, - reportException: function() {}, - getRemainingTime: function() { - return (TIMEOUT * 1000) - Math.floor(hrTimeMs(process.hrtime(start))) - }, + reportUserInitStart: function () { }, + reportUserInitEnd: function () { }, + reportUserInvokeStart: function () { }, + reportUserInvokeEnd: function () { }, + reportException: function () { }, + getRemainingTime: function () { return DEADLINE_MS - Date.now() }, sendConsoleLogs: consoleLog, maxLoggerErrorSize: 256 * 1024, } -function formatConsole(str) { - return str.replace(/^[0-9TZ:.-]+\t[0-9a-f-]+\t/, '\u001b[34m$&\u001b[0m') +function ping(retries, cb) { + http.get({ hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/ping' }, cb).on('error', () => { + if (!retries) { + console.error('Mock server did not respond to pings in time') + process.exit(1) + } + setTimeout(ping, 5, retries - 1, cb) + }) } -function formatSystem(str) { - return '\u001b[32m' + str + '\u001b[0m' +function tryParse(cognitoIdentity) { + try { + return JSON.parse(cognitoIdentity) + } catch (e) { + return null + } } -function formatErr(str) { - return '\u001b[31m' + str + '\u001b[0m' +function consoleLog(str) { + if (STAY_OPEN) { + if (LOG_TAIL) { + LOGS += str + } + process.stdout.write(str) + } else { + process.stderr.write(formatConsole(str)) + } +} + +function systemErr(str) { + process.stderr.write(formatErr(str) + '\n') +} + +function formatConsole(str) { + return str.replace(/^[0-9TZ:.-]+\t[0-9a-f-]+\t/, '\u001b[34m$&\u001b[0m') } -function hrTimeMs(hrtime) { - return (hrtime[0] * 1e9 + hrtime[1]) / 1e6 +function formatErr(str) { + return '\u001b[31m' + str + '\u001b[0m' } // Approximates the look of a v1 UUID @@ -155,3 +226,7 @@ function randomAccountId() { function arn(region, accountId, fnName) { return 'arn:aws:lambda:' + region + ':' + accountId.replace(/[^\d]/g, '') + ':function:' + fnName } + +function newBuffer(str) { + return HAS_BUFFER_FROM ? Buffer.from(str) : new Buffer(str) +} diff --git a/nodejs6.10/run/Dockerfile b/nodejs6.10/run/Dockerfile index 9f3d4028..280cce30 100644 --- a/nodejs6.10/run/Dockerfile +++ b/nodejs6.10/run/Dockerfile @@ -1,3 +1,6 @@ +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV PATH=/var/lang/bin:$PATH \ @@ -10,6 +13,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY awslambda-mock.js /var/runtime/node_modules/awslambda/build/Release/awslambda.js +COPY --from=0 /var/runtime/init /var/runtime/mockserver + USER sbx_user1051 ENTRYPOINT ["/var/lang/bin/node", "--expose-gc", "--max-executable-size=160", "--max-semi-space-size=150", "--max-old-space-size=2547", \ diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index 1d014d9e..f953acd9 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -1,5 +1,15 @@ var fs = require('fs') var crypto = require('crypto') +var http = require('http') +var child_process = require('child_process') + +var PING_RETRIES = 20 + +var LOGS = '' +var LOG_TAIL = false +var HAS_BUFFER_FROM = Buffer.from && Buffer.from !== Uint8Array.from + +var STAY_OPEN = process.env.DOCKER_LAMBDA_STAY_OPEN var HANDLER = process.argv[2] || process.env.AWS_LAMBDA_FUNCTION_HANDLER || process.env._HANDLER || 'index.handler' var EVENT_BODY = process.argv[3] || process.env.AWS_LAMBDA_EVENT_BODY || @@ -15,26 +25,14 @@ var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) +var TRACE_ID = process.env._X_AMZN_TRACE_ID || 'root=1-5d9639c7-ac2df104a29f3070f507bdb4;sampled=0' +var CLIENT_CONTEXT = process.env.AWS_LAMBDA_CLIENT_CONTEXT +var COGNITO_IDENTITY = process.env.AWS_LAMBDA_COGNITO_IDENTITY +var COGNITO_IDENTITY_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_id +var COGNITO_IDENTITY_POOL_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_pool_id +var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) -function consoleLog(str) { - process.stderr.write(formatConsole(str)) -} - -function systemLog(str) { - process.stderr.write(formatSystem(str) + '\n') -} - -function systemErr(str) { - process.stderr.write(formatErr(str) + '\n') -} - -function handleResult(resultStr, cb) { - if (!process.stdout.write('\n' + resultStr + '\n')) { - process.stdout.once('drain', cb) - } else { - process.nextTick(cb) - } -} +process.on('SIGINT', () => process.exit(0)) // Don't think this can be done in the Docker image process.umask(2) @@ -49,8 +47,18 @@ process.env.AWS_REGION = REGION process.env.AWS_DEFAULT_REGION = REGION process.env._HANDLER = HANDLER +var mockServerProcess = child_process.spawn('/var/runtime/mockserver', { + stdio: ['pipe', 'inherit', 'inherit'], + env: Object.assign({ + DOCKER_LAMBDA_NO_BOOTSTRAP: 1, + DOCKER_LAMBDA_USE_STDIN: 1, + }, process.env) +}) +mockServerProcess.on('error', console.error) +mockServerProcess.stdin.end(EVENT_BODY) +mockServerProcess.unref() + var OPTIONS = { - initInvokeId: uuid(), invokeId: uuid(), handler: HANDLER, suppressInit: true, @@ -61,11 +69,12 @@ var OPTIONS = { }, eventBody: EVENT_BODY, contextObjects: { - // clientContext: '{}', - // cognitoIdentityId: undefined, - // cognitoPoolId: undefined, + clientContext: CLIENT_CONTEXT, + cognitoIdentityId: COGNITO_IDENTITY_ID, + cognitoPoolId: COGNITO_IDENTITY_POOL_ID, }, invokedFunctionArn: INVOKED_ARN, + 'x-amzn-trace-id': TRACE_ID } // Some weird spelling error in the source? @@ -73,70 +82,132 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false -var start = null +var pingPromise = new Promise(resolve => ping(PING_RETRIES, resolve)) +var reportDonePromise = new Promise(resolve => resolve()) module.exports = { - initRuntime: function() { return OPTIONS }, - waitForInvoke: function(fn) { - if (invoked) return - systemLog('START RequestId: ' + OPTIONS.invokeId + ' Version: ' + VERSION) - start = process.hrtime() - invoked = true - fn(OPTIONS) + initRuntime: function () { return OPTIONS }, + waitForInvoke: function (cb) { + Promise.all([pingPromise, reportDonePromise]).then(() => { + http.get({ + hostname: '127.0.0.1', + port: 9001, + path: '/2018-06-01/runtime/invocation/next', + }, res => { + if (res.statusCode !== 200) { + console.error(`Mock server invocation/next returned a ${res.statusCode} response`) + return process.exit(1) + } + if (invoked) { + LOGS = '' + } + invoked = true + OPTIONS.invokeId = OPTIONS.initInvokeId = OPTIONS.invokeid = res.headers['lambda-runtime-aws-request-id'] + OPTIONS.invokedFunctionArn = res.headers['lambda-runtime-invoked-function-arn'] + OPTIONS['x-amzn-trace-id'] = res.headers['lambda-runtime-trace-id'] + DEADLINE_MS = +res.headers['lambda-runtime-deadline-ms'] + + OPTIONS.contextObjects.clientContext = res.headers['lambda-runtime-client-context'] + var cognitoIdentity = tryParse(res.headers['lambda-runtime-cognito-identity']) || {} + OPTIONS.contextObjects.cognitoIdentityId = cognitoIdentity.identity_id + OPTIONS.contextObjects.cognitoPoolId = cognitoIdentity.identity_pool_id + + LOG_TAIL = res.headers['docker-lambda-log-type'] === 'Tail' + + OPTIONS.eventBody = '' + res.setEncoding('utf8') + .on('data', data => OPTIONS.eventBody += data) + .on('end', () => cb(OPTIONS)) + .on('error', function (err) { + console.error(err) + process.exit(1) + }) + }).on('error', err => { + if (err.code === 'ECONNRESET') { + return process.exit(errored ? 1 : 0) + } + console.error(err) + process.exit(1) + }) + }) }, - reportRunning: function(invokeId) {}, // eslint-disable-line no-unused-vars - reportDone: function(invokeId, errType, resultStr) { + reportRunning: function (invokeId) { }, // eslint-disable-line no-unused-vars + reportDone: function (invokeId, errType, resultStr) { if (!invoked) return - var diffMs = hrTimeMs(process.hrtime(start)) - var billedMs = Math.min(100 * (Math.floor(diffMs / 100) + 1), TIMEOUT * 1000) - systemLog('END RequestId: ' + invokeId) - systemLog([ - 'REPORT RequestId: ' + invokeId, - 'Duration: ' + diffMs.toFixed(2) + ' ms', - 'Billed Duration: ' + billedMs + ' ms', - 'Memory Size: ' + MEM_SIZE + ' MB', - 'Max Memory Used: ' + Math.round(process.memoryUsage().rss / (1024 * 1024)) + ' MB', - '', - ].join('\t')) - - var exitCode = errored || errType ? 1 : 0 - if (typeof resultStr === 'string') { - handleResult(resultStr, function() { process.exit(exitCode) }) - } else { - process.exit(exitCode) - } + if (errType) errored = true + reportDonePromise = new Promise(resolve => { + http.request({ + method: 'POST', + hostname: '127.0.0.1', + port: 9001, + path: '/2018-06-01/runtime/invocation/' + invokeId + (errType == null ? '/response' : '/error'), + headers: LOG_TAIL ? { 'Docker-Lambda-Log-Result': newBuffer(LOGS).slice(-4096).toString('base64') } : {}, + }, res => { + if (res.statusCode !== 202) { + console.error(err || 'Got status code: ' + res.statusCode) + process.exit(1) + } + resolve() + }).on('error', err => { + console.error(err) + process.exit(1) + }).end(resultStr) + }) }, - reportFault: function(invokeId, msg, errName, errStack) { + reportFault: function (invokeId, msg, errName, errStack) { errored = true systemErr(msg + (errName ? ': ' + errName : '')) if (errStack) systemErr(errStack) }, - reportUserInitStart: function() {}, - reportUserInitEnd: function() {}, - reportUserInvokeStart: function() {}, - reportUserInvokeEnd: function() {}, - reportException: function() {}, - getRemainingTime: function() { - return (TIMEOUT * 1000) - Math.floor(hrTimeMs(process.hrtime(start))) - }, + reportUserInitStart: function () { }, + reportUserInitEnd: function () { }, + reportUserInvokeStart: function () { }, + reportUserInvokeEnd: function () { }, + reportException: function () { }, + getRemainingTime: function () { return DEADLINE_MS - Date.now() }, sendConsoleLogs: consoleLog, maxLoggerErrorSize: 256 * 1024, } -function formatConsole(str) { - return str.replace(/^[0-9TZ:.-]+\t[0-9a-f-]+\t/, '\u001b[34m$&\u001b[0m') +function ping(retries, cb) { + http.get({ hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/ping' }, cb).on('error', () => { + if (!retries) { + console.error('Mock server did not respond to pings in time') + process.exit(1) + } + setTimeout(ping, 5, retries - 1, cb) + }) } -function formatSystem(str) { - return '\u001b[32m' + str + '\u001b[0m' +function tryParse(cognitoIdentity) { + try { + return JSON.parse(cognitoIdentity) + } catch (e) { + return null + } } -function formatErr(str) { - return '\u001b[31m' + str + '\u001b[0m' +function consoleLog(str) { + if (STAY_OPEN) { + if (LOG_TAIL) { + LOGS += str + } + process.stdout.write(str) + } else { + process.stderr.write(formatConsole(str)) + } +} + +function systemErr(str) { + process.stderr.write(formatErr(str) + '\n') +} + +function formatConsole(str) { + return str.replace(/^[0-9TZ:.-]+\t[0-9a-f-]+\t/, '\u001b[34m$&\u001b[0m') } -function hrTimeMs(hrtime) { - return (hrtime[0] * 1e9 + hrtime[1]) / 1e6 +function formatErr(str) { + return '\u001b[31m' + str + '\u001b[0m' } // Approximates the look of a v1 UUID @@ -155,3 +226,7 @@ function randomAccountId() { function arn(region, accountId, fnName) { return 'arn:aws:lambda:' + region + ':' + accountId.replace(/[^\d]/g, '') + ':function:' + fnName } + +function newBuffer(str) { + return HAS_BUFFER_FROM ? Buffer.from(str) : new Buffer(str) +} diff --git a/nodejs8.10/run/Dockerfile b/nodejs8.10/run/Dockerfile index 10e21894..ff6b8f1c 100644 --- a/nodejs8.10/run/Dockerfile +++ b/nodejs8.10/run/Dockerfile @@ -1,3 +1,6 @@ +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV PATH=/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin \ @@ -10,6 +13,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY awslambda-mock.js /var/runtime/node_modules/awslambda/build/Release/awslambda.js +COPY --from=0 /var/runtime/init /var/runtime/mockserver + USER sbx_user1051 ENTRYPOINT ["/var/lang/bin/node", "--expose-gc", "--max-semi-space-size=150", "--max-old-space-size=2707", \ diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index 1d014d9e..f953acd9 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -1,5 +1,15 @@ var fs = require('fs') var crypto = require('crypto') +var http = require('http') +var child_process = require('child_process') + +var PING_RETRIES = 20 + +var LOGS = '' +var LOG_TAIL = false +var HAS_BUFFER_FROM = Buffer.from && Buffer.from !== Uint8Array.from + +var STAY_OPEN = process.env.DOCKER_LAMBDA_STAY_OPEN var HANDLER = process.argv[2] || process.env.AWS_LAMBDA_FUNCTION_HANDLER || process.env._HANDLER || 'index.handler' var EVENT_BODY = process.argv[3] || process.env.AWS_LAMBDA_EVENT_BODY || @@ -15,26 +25,14 @@ var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) +var TRACE_ID = process.env._X_AMZN_TRACE_ID || 'root=1-5d9639c7-ac2df104a29f3070f507bdb4;sampled=0' +var CLIENT_CONTEXT = process.env.AWS_LAMBDA_CLIENT_CONTEXT +var COGNITO_IDENTITY = process.env.AWS_LAMBDA_COGNITO_IDENTITY +var COGNITO_IDENTITY_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_id +var COGNITO_IDENTITY_POOL_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_pool_id +var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) -function consoleLog(str) { - process.stderr.write(formatConsole(str)) -} - -function systemLog(str) { - process.stderr.write(formatSystem(str) + '\n') -} - -function systemErr(str) { - process.stderr.write(formatErr(str) + '\n') -} - -function handleResult(resultStr, cb) { - if (!process.stdout.write('\n' + resultStr + '\n')) { - process.stdout.once('drain', cb) - } else { - process.nextTick(cb) - } -} +process.on('SIGINT', () => process.exit(0)) // Don't think this can be done in the Docker image process.umask(2) @@ -49,8 +47,18 @@ process.env.AWS_REGION = REGION process.env.AWS_DEFAULT_REGION = REGION process.env._HANDLER = HANDLER +var mockServerProcess = child_process.spawn('/var/runtime/mockserver', { + stdio: ['pipe', 'inherit', 'inherit'], + env: Object.assign({ + DOCKER_LAMBDA_NO_BOOTSTRAP: 1, + DOCKER_LAMBDA_USE_STDIN: 1, + }, process.env) +}) +mockServerProcess.on('error', console.error) +mockServerProcess.stdin.end(EVENT_BODY) +mockServerProcess.unref() + var OPTIONS = { - initInvokeId: uuid(), invokeId: uuid(), handler: HANDLER, suppressInit: true, @@ -61,11 +69,12 @@ var OPTIONS = { }, eventBody: EVENT_BODY, contextObjects: { - // clientContext: '{}', - // cognitoIdentityId: undefined, - // cognitoPoolId: undefined, + clientContext: CLIENT_CONTEXT, + cognitoIdentityId: COGNITO_IDENTITY_ID, + cognitoPoolId: COGNITO_IDENTITY_POOL_ID, }, invokedFunctionArn: INVOKED_ARN, + 'x-amzn-trace-id': TRACE_ID } // Some weird spelling error in the source? @@ -73,70 +82,132 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false -var start = null +var pingPromise = new Promise(resolve => ping(PING_RETRIES, resolve)) +var reportDonePromise = new Promise(resolve => resolve()) module.exports = { - initRuntime: function() { return OPTIONS }, - waitForInvoke: function(fn) { - if (invoked) return - systemLog('START RequestId: ' + OPTIONS.invokeId + ' Version: ' + VERSION) - start = process.hrtime() - invoked = true - fn(OPTIONS) + initRuntime: function () { return OPTIONS }, + waitForInvoke: function (cb) { + Promise.all([pingPromise, reportDonePromise]).then(() => { + http.get({ + hostname: '127.0.0.1', + port: 9001, + path: '/2018-06-01/runtime/invocation/next', + }, res => { + if (res.statusCode !== 200) { + console.error(`Mock server invocation/next returned a ${res.statusCode} response`) + return process.exit(1) + } + if (invoked) { + LOGS = '' + } + invoked = true + OPTIONS.invokeId = OPTIONS.initInvokeId = OPTIONS.invokeid = res.headers['lambda-runtime-aws-request-id'] + OPTIONS.invokedFunctionArn = res.headers['lambda-runtime-invoked-function-arn'] + OPTIONS['x-amzn-trace-id'] = res.headers['lambda-runtime-trace-id'] + DEADLINE_MS = +res.headers['lambda-runtime-deadline-ms'] + + OPTIONS.contextObjects.clientContext = res.headers['lambda-runtime-client-context'] + var cognitoIdentity = tryParse(res.headers['lambda-runtime-cognito-identity']) || {} + OPTIONS.contextObjects.cognitoIdentityId = cognitoIdentity.identity_id + OPTIONS.contextObjects.cognitoPoolId = cognitoIdentity.identity_pool_id + + LOG_TAIL = res.headers['docker-lambda-log-type'] === 'Tail' + + OPTIONS.eventBody = '' + res.setEncoding('utf8') + .on('data', data => OPTIONS.eventBody += data) + .on('end', () => cb(OPTIONS)) + .on('error', function (err) { + console.error(err) + process.exit(1) + }) + }).on('error', err => { + if (err.code === 'ECONNRESET') { + return process.exit(errored ? 1 : 0) + } + console.error(err) + process.exit(1) + }) + }) }, - reportRunning: function(invokeId) {}, // eslint-disable-line no-unused-vars - reportDone: function(invokeId, errType, resultStr) { + reportRunning: function (invokeId) { }, // eslint-disable-line no-unused-vars + reportDone: function (invokeId, errType, resultStr) { if (!invoked) return - var diffMs = hrTimeMs(process.hrtime(start)) - var billedMs = Math.min(100 * (Math.floor(diffMs / 100) + 1), TIMEOUT * 1000) - systemLog('END RequestId: ' + invokeId) - systemLog([ - 'REPORT RequestId: ' + invokeId, - 'Duration: ' + diffMs.toFixed(2) + ' ms', - 'Billed Duration: ' + billedMs + ' ms', - 'Memory Size: ' + MEM_SIZE + ' MB', - 'Max Memory Used: ' + Math.round(process.memoryUsage().rss / (1024 * 1024)) + ' MB', - '', - ].join('\t')) - - var exitCode = errored || errType ? 1 : 0 - if (typeof resultStr === 'string') { - handleResult(resultStr, function() { process.exit(exitCode) }) - } else { - process.exit(exitCode) - } + if (errType) errored = true + reportDonePromise = new Promise(resolve => { + http.request({ + method: 'POST', + hostname: '127.0.0.1', + port: 9001, + path: '/2018-06-01/runtime/invocation/' + invokeId + (errType == null ? '/response' : '/error'), + headers: LOG_TAIL ? { 'Docker-Lambda-Log-Result': newBuffer(LOGS).slice(-4096).toString('base64') } : {}, + }, res => { + if (res.statusCode !== 202) { + console.error(err || 'Got status code: ' + res.statusCode) + process.exit(1) + } + resolve() + }).on('error', err => { + console.error(err) + process.exit(1) + }).end(resultStr) + }) }, - reportFault: function(invokeId, msg, errName, errStack) { + reportFault: function (invokeId, msg, errName, errStack) { errored = true systemErr(msg + (errName ? ': ' + errName : '')) if (errStack) systemErr(errStack) }, - reportUserInitStart: function() {}, - reportUserInitEnd: function() {}, - reportUserInvokeStart: function() {}, - reportUserInvokeEnd: function() {}, - reportException: function() {}, - getRemainingTime: function() { - return (TIMEOUT * 1000) - Math.floor(hrTimeMs(process.hrtime(start))) - }, + reportUserInitStart: function () { }, + reportUserInitEnd: function () { }, + reportUserInvokeStart: function () { }, + reportUserInvokeEnd: function () { }, + reportException: function () { }, + getRemainingTime: function () { return DEADLINE_MS - Date.now() }, sendConsoleLogs: consoleLog, maxLoggerErrorSize: 256 * 1024, } -function formatConsole(str) { - return str.replace(/^[0-9TZ:.-]+\t[0-9a-f-]+\t/, '\u001b[34m$&\u001b[0m') +function ping(retries, cb) { + http.get({ hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/ping' }, cb).on('error', () => { + if (!retries) { + console.error('Mock server did not respond to pings in time') + process.exit(1) + } + setTimeout(ping, 5, retries - 1, cb) + }) } -function formatSystem(str) { - return '\u001b[32m' + str + '\u001b[0m' +function tryParse(cognitoIdentity) { + try { + return JSON.parse(cognitoIdentity) + } catch (e) { + return null + } } -function formatErr(str) { - return '\u001b[31m' + str + '\u001b[0m' +function consoleLog(str) { + if (STAY_OPEN) { + if (LOG_TAIL) { + LOGS += str + } + process.stdout.write(str) + } else { + process.stderr.write(formatConsole(str)) + } +} + +function systemErr(str) { + process.stderr.write(formatErr(str) + '\n') +} + +function formatConsole(str) { + return str.replace(/^[0-9TZ:.-]+\t[0-9a-f-]+\t/, '\u001b[34m$&\u001b[0m') } -function hrTimeMs(hrtime) { - return (hrtime[0] * 1e9 + hrtime[1]) / 1e6 +function formatErr(str) { + return '\u001b[31m' + str + '\u001b[0m' } // Approximates the look of a v1 UUID @@ -155,3 +226,7 @@ function randomAccountId() { function arn(region, accountId, fnName) { return 'arn:aws:lambda:' + region + ':' + accountId.replace(/[^\d]/g, '') + ':function:' + fnName } + +function newBuffer(str) { + return HAS_BUFFER_FROM ? Buffer.from(str) : new Buffer(str) +} From 871ecc01a72aea44bb601ad9e775c3defd81522e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 18 Oct 2019 11:38:53 -0400 Subject: [PATCH 043/234] Add Lambda API support to python2.7/3.6 runtimes --- python2.7/run/Dockerfile | 7 +- python2.7/run/runtime-mock.py | 174 ---------------------- python2.7/run/runtime_mock.py | 262 ++++++++++++++++++++++++++++++++++ python3.6/run/Dockerfile | 7 +- python3.6/run/runtime-mock.py | 174 ---------------------- python3.6/run/runtime_mock.py | 262 ++++++++++++++++++++++++++++++++++ 6 files changed, 536 insertions(+), 350 deletions(-) delete mode 100644 python2.7/run/runtime-mock.py create mode 100644 python2.7/run/runtime_mock.py delete mode 100644 python3.6/run/runtime-mock.py create mode 100644 python3.6/run/runtime_mock.py diff --git a/python2.7/run/Dockerfile b/python2.7/run/Dockerfile index 17e68bd4..d90f8827 100644 --- a/python2.7/run/Dockerfile +++ b/python2.7/run/Dockerfile @@ -1,3 +1,6 @@ +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV AWS_EXECUTION_ENV=AWS_Lambda_python2.7 @@ -6,7 +9,9 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/python2.7.tgz | tar -zx -C / RUN rm /var/runtime/awslambda/runtime.so -COPY runtime-mock.py /var/runtime/awslambda/runtime.py +COPY runtime_mock.py /var/runtime/awslambda/runtime.py + +COPY --from=0 /var/runtime/init /var/runtime/mockserver USER sbx_user1051 diff --git a/python2.7/run/runtime-mock.py b/python2.7/run/runtime-mock.py deleted file mode 100644 index fc590f8a..00000000 --- a/python2.7/run/runtime-mock.py +++ /dev/null @@ -1,174 +0,0 @@ -from __future__ import print_function -import sys -import os -import random -import uuid -import time -import resource -import datetime - -orig_stdout = sys.stdout -orig_stderr = sys.stderr - -def eprint(*args, **kwargs): - print(*args, file=orig_stderr, **kwargs) - -def _random_account_id(): - return random.randint(100000000000, 999999999999) - -def _random_invoke_id(): - return str(uuid.uuid4()) - -def _arn(region, account_id, fct_name): - return 'arn:aws:lambda:%s:%s:function:%s' % (region, account_id, fct_name) - -_GLOBAL_HANDLER = sys.argv[1] if len(sys.argv) > 1 else os.environ.get('AWS_LAMBDA_FUNCTION_HANDLER', - os.environ.get('_HANDLER', 'lambda_function.lambda_handler')) -_GLOBAL_EVENT_BODY = sys.argv[2] if len(sys.argv) > 2 else os.environ.get('AWS_LAMBDA_EVENT_BODY', - (sys.stdin.read() if os.environ.get('DOCKER_LAMBDA_USE_STDIN', False) else '{}')) -_GLOBAL_FCT_NAME = os.environ.get('AWS_LAMBDA_FUNCTION_NAME', 'test') -_GLOBAL_VERSION = os.environ.get('AWS_LAMBDA_FUNCTION_VERSION', '$LATEST') -_GLOBAL_MEM_SIZE = os.environ.get('AWS_LAMBDA_FUNCTION_MEMORY_SIZE', '1536') -_GLOBAL_TIMEOUT = int(os.environ.get('AWS_LAMBDA_FUNCTION_TIMEOUT', '300')) -_GLOBAL_REGION = os.environ.get('AWS_REGION', os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')) -_GLOBAL_ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID', _random_account_id()) -_GLOBAL_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', 'SOME_ACCESS_KEY_ID') -_GLOBAL_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', 'SOME_SECRET_ACCESS_KEY') -_GLOBAL_SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN', None) - -_GLOBAL_INVOKEID = _random_invoke_id() -_GLOBAL_MODE = 'event' # Either 'http' or 'event' -_GLOBAL_SUPRESS_INIT = True # Forces calling _get_handlers_delayed() -_GLOBAL_DATA_SOCK = -1 -_GLOBAL_CONTEXT_OBJS = { - 'clientcontext': None, - 'cognitoidentityid': None, - 'cognitopoolid': None, -} -_GLOBAL_CREDENTIALS = { - 'key': _GLOBAL_ACCESS_KEY_ID, - 'secret': _GLOBAL_SECRET_ACCESS_KEY, - 'session': _GLOBAL_SESSION_TOKEN -} -_GLOBAL_INVOKED_FUNCTION_ARN = os.environ.get('AWS_LAMBDA_FUNCTION_INVOKED_ARN', _arn(_GLOBAL_REGION, _GLOBAL_ACCOUNT_ID, _GLOBAL_FCT_NAME)) -_GLOBAL_XRAY_TRACE_ID = os.environ.get('_X_AMZN_TRACE_ID', None) -_GLOBAL_XRAY_PARENT_ID = None -_GLOBAL_XRAY_SAMPLED = None -_GLOBAL_X_AMZN_TRACE_ID = None -_GLOBAL_INVOKED = False -_GLOBAL_ERRORED = False -_GLOBAL_START_TIME = None -_GLOBAL_TODAY = datetime.date.today() -# export needed stuff -os.environ['AWS_LAMBDA_LOG_GROUP_NAME'] = '/aws/lambda/%s' % _GLOBAL_FCT_NAME -os.environ['AWS_LAMBDA_LOG_STREAM_NAME'] = "%s/%s/%s/[%s]%s" % ( - _GLOBAL_TODAY.year, - _GLOBAL_TODAY.month, - _GLOBAL_TODAY.day, - _GLOBAL_VERSION, - '%016x' % random.randrange(16**16) - ) -os.environ["AWS_LAMBDA_FUNCTION_NAME"] = _GLOBAL_FCT_NAME -os.environ['AWS_LAMBDA_FUNCTION_MEMORY_SIZE'] = _GLOBAL_MEM_SIZE -os.environ['AWS_LAMBDA_FUNCTION_VERSION'] = _GLOBAL_VERSION -os.environ['AWS_REGION'] = _GLOBAL_REGION -os.environ['AWS_DEFAULT_REGION'] = _GLOBAL_REGION -os.environ['_HANDLER'] = _GLOBAL_HANDLER - -def report_user_init_start(): - return - -def report_user_init_end(): - return - -def report_user_invoke_start(): - return - -def report_user_invoke_end(): - return - -def receive_start(): - sys.stdout = orig_stderr - sys.stderr = orig_stderr - return ( - _GLOBAL_INVOKEID, - _GLOBAL_MODE, - _GLOBAL_HANDLER, - _GLOBAL_SUPRESS_INIT, - _GLOBAL_CREDENTIALS - ) - -def report_running(invokeid): - return - -def receive_invoke(): - global _GLOBAL_INVOKED - global _GLOBAL_START_TIME - - if not _GLOBAL_INVOKED: - eprint( - "START RequestId: %s Version: %s" % - (_GLOBAL_INVOKEID, _GLOBAL_VERSION) - ) - _GLOBAL_INVOKED = True - _GLOBAL_START_TIME = time.time() - - return ( - _GLOBAL_INVOKEID, - _GLOBAL_DATA_SOCK, - _GLOBAL_CREDENTIALS, - _GLOBAL_EVENT_BODY, - _GLOBAL_CONTEXT_OBJS, - _GLOBAL_INVOKED_FUNCTION_ARN, - _GLOBAL_XRAY_TRACE_ID, - ) - -def report_fault(invokeid, msg, except_value, trace): - global _GLOBAL_ERRORED - - _GLOBAL_ERRORED = True - - if msg and except_value: - eprint('%s: %s' % (msg, except_value)) - if trace: - eprint('%s' % trace) - return - -def report_done(invokeid, errortype, result, is_fatal): - global _GLOBAL_INVOKED - global _GLOBAL_ERRORED - - if _GLOBAL_INVOKED: - eprint("END RequestId: %s" % invokeid) - - duration = int((time.time() - _GLOBAL_START_TIME) * 1000) - billed_duration = min(100 * int((duration / 100) + 1), _GLOBAL_TIMEOUT * 1000) - max_mem = int(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1024) - - eprint( - "REPORT RequestId: %s Duration: %s ms Billed Duration: %s ms Memory Size: %s MB Max Memory Used: %s MB" % ( - invokeid, duration, billed_duration, _GLOBAL_MEM_SIZE, max_mem - ) - ) - if result: - print('\n' + result, file=orig_stdout) - sys.exit(1 if _GLOBAL_ERRORED else 0) - else: - return - -def report_xray_exception(xray_json): - return - -def log_bytes(msg, fileno): - eprint(msg) - return - -def log_sb(msg): - return - -def get_remaining_time(): - return ((_GLOBAL_TIMEOUT * 1000) - int((time.time() - _GLOBAL_START_TIME) * 1000)) - -def send_console_message(msg, byte_length): - eprint(msg) - return diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py new file mode 100644 index 00000000..1a7a4742 --- /dev/null +++ b/python2.7/run/runtime_mock.py @@ -0,0 +1,262 @@ +# pylint: disable=missing-docstring, global-statement, unused-argument, broad-except + +from __future__ import print_function +import sys +import os +import random +import uuid +import time +import datetime +import subprocess +import json +import traceback +import base64 +import signal +try: + # for python 3 + from http.client import HTTPConnection +except ImportError: + # for python 2 + from httplib import HTTPConnection + + +signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) + +ORIG_STDOUT = sys.stdout +ORIG_STDERR = sys.stderr + +LOGS = '' +LOG_TAIL = False + +STAY_OPEN = os.environ.get('DOCKER_LAMBDA_STAY_OPEN', '') + +HANDLER = sys.argv[1] if len(sys.argv) > 1 else os.environ.get('AWS_LAMBDA_FUNCTION_HANDLER', \ + os.environ.get('_HANDLER', 'lambda_function.lambda_handler')) +EVENT_BODY = sys.argv[2] if len(sys.argv) > 2 else os.environ.get('AWS_LAMBDA_EVENT_BODY', \ + (sys.stdin.read() if os.environ.get('DOCKER_LAMBDA_USE_STDIN', False) else '{}')) +FUNCTION_NAME = os.environ.get('AWS_LAMBDA_FUNCTION_NAME', 'test') +FUNCTION_VERSION = os.environ.get('AWS_LAMBDA_FUNCTION_VERSION', '$LATEST') +MEM_SIZE = os.environ.get('AWS_LAMBDA_FUNCTION_MEMORY_SIZE', '1536') +DEADLINE_MS = int(time.time() * 1000) + int(os.environ.get('AWS_LAMBDA_FUNCTION_TIMEOUT', '300')) +REGION = os.environ.get('AWS_REGION', os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')) +ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID', random.randint(100000000000, 999999999999)) +ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', 'SOME_ACCESS_KEY_ID') +SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', 'SOME_SECRET_ACCESS_KEY') +SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN', None) + +INVOKEID = str(uuid.uuid4()) +INVOKE_MODE = 'event' # Either 'http' or 'event' +SUPPRESS_INIT = True # Forces calling _get_handlers_delayed() +DATA_SOCK = -1 +CONTEXT_OBJS = { + 'clientcontext': None, + 'cognitoidentityid': None, + 'cognitopoolid': None, +} +CREDENTIALS = { + 'key': ACCESS_KEY_ID, + 'secret': SECRET_ACCESS_KEY, + 'session': SESSION_TOKEN +} +INVOKED_FUNCTION_ARN = os.environ.get('AWS_LAMBDA_FUNCTION_INVOKED_ARN', \ + 'arn:aws:lambda:%s:%s:function:%s' % (REGION, ACCOUNT_ID, FUNCTION_NAME)) +XRAY_TRACE_ID = os.environ.get('_X_AMZN_TRACE_ID', None) +XRAY_PARENT_ID = None +XRAY_SAMPLED = None +TRACE_ID = None +INVOKED = False +ERRORED = False +TODAY = datetime.date.today() +# export needed stuff +os.environ['AWS_LAMBDA_LOG_GROUP_NAME'] = '/aws/lambda/%s' % FUNCTION_NAME +os.environ['AWS_LAMBDA_LOG_STREAM_NAME'] = "%s/%s/%s/[%s]%s" % ( + TODAY.year, + TODAY.month, + TODAY.day, + FUNCTION_VERSION, + '%016x' % random.randrange(16**16) +) +os.environ["AWS_LAMBDA_FUNCTION_NAME"] = FUNCTION_NAME +os.environ['AWS_LAMBDA_FUNCTION_MEMORY_SIZE'] = MEM_SIZE +os.environ['AWS_LAMBDA_FUNCTION_VERSION'] = FUNCTION_VERSION +os.environ['AWS_REGION'] = REGION +os.environ['AWS_DEFAULT_REGION'] = REGION +os.environ['_HANDLER'] = HANDLER + +MOCKSERVER_ENV = os.environ.copy() +MOCKSERVER_ENV['DOCKER_LAMBDA_NO_BOOTSTRAP'] = '1' +MOCKSERVER_ENV['DOCKER_LAMBDA_USE_STDIN'] = '1' + +MOCKSERVER_PROCESS = subprocess.Popen( + '/var/runtime/mockserver', stdin=subprocess.PIPE, env=MOCKSERVER_ENV) +MOCKSERVER_PROCESS.stdin.write(EVENT_BODY.encode()) +MOCKSERVER_PROCESS.stdin.close() + +MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) + + +def eprint(*args, **kwargs): + print(*args, file=ORIG_STDERR, **kwargs) + + +def report_user_init_start(): + return + + +def report_user_init_end(): + return + + +def report_user_invoke_start(): + return + + +def report_user_invoke_end(): + return + + +def receive_start(): + global MOCKSERVER_CONN + + for retry in range(20): + try: + MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) + MOCKSERVER_CONN.request("GET", "/2018-06-01/ping") + resp = MOCKSERVER_CONN.getresponse() + if resp.status != 200: + raise Exception("Mock server returned %d" % resp.status) + resp.read() + break + except Exception: + if retry >= 19: + raise + else: + time.sleep(.005) + continue + return ( + INVOKEID, + INVOKE_MODE, + HANDLER, + SUPPRESS_INIT, + CREDENTIALS + ) + + +def report_running(invokeid): + return + + +def receive_invoke(): + global INVOKED + global INVOKEID + global DEADLINE_MS + global INVOKED_FUNCTION_ARN + global XRAY_TRACE_ID + global EVENT_BODY + global CONTEXT_OBJS + global LOGS + global LOG_TAIL + + try: + MOCKSERVER_CONN.request("GET", "/2018-06-01/runtime/invocation/next") + resp = MOCKSERVER_CONN.getresponse() + if resp.status != 200: + raise Exception("/invocation/next return status %d" % resp.status) + except Exception: + if INVOKED and not STAY_OPEN: + sys.exit(1 if ERRORED else 0) + return () + raise + + if INVOKED: + LOGS = "" + + INVOKED = True + + INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') + DEADLINE_MS = resp.getheader('Lambda-Runtime-Deadline-Ms') + INVOKED_FUNCTION_ARN = resp.getheader( + 'Lambda-Runtime-Invoked-Function-Arn') + XRAY_TRACE_ID = resp.getheader('Lambda-Runtime-Trace-Id') + cognito_identity = json.loads(resp.getheader( + 'Lambda-Runtime-Cognito-Identity', '{}')) + CONTEXT_OBJS['cognitoidentityid'] = cognito_identity.get('identity_id') + CONTEXT_OBJS['cognitopoolid'] = cognito_identity.get('identity_pool_id') + CONTEXT_OBJS['clientcontext'] = resp.getheader( + 'Lambda-Runtime-Client-Context') + + LOG_TAIL = resp.getheader('docker-lambda-log-type') == 'Tail' + + EVENT_BODY = resp.read() + + return ( + INVOKEID, + DATA_SOCK, + CREDENTIALS, + EVENT_BODY, + CONTEXT_OBJS, + INVOKED_FUNCTION_ARN, + XRAY_TRACE_ID, + ) + + +def report_fault(invokeid, msg, except_value, trace): + global ERRORED + + ERRORED = True + + if msg and except_value: + eprint('%s: %s' % (msg, except_value)) + if trace: + eprint('%s' % trace) + + +def report_done(invokeid, errortype, result, is_fatal): + global ERRORED + + if not INVOKED: + return + + if errortype is not None: + ERRORED = True + result_obj = json.loads(result) + stack_trace = result_obj.get('stackTrace') + if stack_trace is not None: + result_obj['stackTrace'] = traceback.format_list(stack_trace) + result = json.dumps(result_obj) + + headers = {"Docker-Lambda-Log-Result": base64.b64encode(LOGS.encode())} if LOG_TAIL else {} + + MOCKSERVER_CONN.request("POST", "/2018-06-01/runtime/invocation/%s/%s" % \ + (invokeid, "response" if errortype is None else "error"), result, headers) + resp = MOCKSERVER_CONN.getresponse() + if resp.status != 202: + raise Exception("/invocation/response return status %d" % resp.status) + resp.read() + + +def report_xray_exception(xray_json): + return + + +def log_bytes(msg, fileno): + global LOGS + + if STAY_OPEN: + if LOG_TAIL: + LOGS += msg + (ORIG_STDOUT if fileno == 1 else ORIG_STDERR).write(msg) + else: + ORIG_STDERR.write(msg) + + +def log_sb(msg): + return + + +def get_remaining_time(): + return DEADLINE_MS - int(time.time() * 1000) + + +def send_console_message(msg, byte_length): + log_bytes(msg + '\n', 1) diff --git a/python3.6/run/Dockerfile b/python3.6/run/Dockerfile index b894c7e3..86dcdfe0 100644 --- a/python3.6/run/Dockerfile +++ b/python3.6/run/Dockerfile @@ -1,3 +1,6 @@ +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV PATH=/var/lang/bin:$PATH \ @@ -8,7 +11,9 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/python3.6.tgz | tar -zx -C / RUN rm /var/runtime/awslambda/runtime.cpython-36m-x86_64-linux-gnu.so -COPY runtime-mock.py /var/runtime/awslambda/runtime.py +COPY runtime_mock.py /var/runtime/awslambda/runtime.py + +COPY --from=0 /var/runtime/init /var/runtime/mockserver USER sbx_user1051 diff --git a/python3.6/run/runtime-mock.py b/python3.6/run/runtime-mock.py deleted file mode 100644 index fc590f8a..00000000 --- a/python3.6/run/runtime-mock.py +++ /dev/null @@ -1,174 +0,0 @@ -from __future__ import print_function -import sys -import os -import random -import uuid -import time -import resource -import datetime - -orig_stdout = sys.stdout -orig_stderr = sys.stderr - -def eprint(*args, **kwargs): - print(*args, file=orig_stderr, **kwargs) - -def _random_account_id(): - return random.randint(100000000000, 999999999999) - -def _random_invoke_id(): - return str(uuid.uuid4()) - -def _arn(region, account_id, fct_name): - return 'arn:aws:lambda:%s:%s:function:%s' % (region, account_id, fct_name) - -_GLOBAL_HANDLER = sys.argv[1] if len(sys.argv) > 1 else os.environ.get('AWS_LAMBDA_FUNCTION_HANDLER', - os.environ.get('_HANDLER', 'lambda_function.lambda_handler')) -_GLOBAL_EVENT_BODY = sys.argv[2] if len(sys.argv) > 2 else os.environ.get('AWS_LAMBDA_EVENT_BODY', - (sys.stdin.read() if os.environ.get('DOCKER_LAMBDA_USE_STDIN', False) else '{}')) -_GLOBAL_FCT_NAME = os.environ.get('AWS_LAMBDA_FUNCTION_NAME', 'test') -_GLOBAL_VERSION = os.environ.get('AWS_LAMBDA_FUNCTION_VERSION', '$LATEST') -_GLOBAL_MEM_SIZE = os.environ.get('AWS_LAMBDA_FUNCTION_MEMORY_SIZE', '1536') -_GLOBAL_TIMEOUT = int(os.environ.get('AWS_LAMBDA_FUNCTION_TIMEOUT', '300')) -_GLOBAL_REGION = os.environ.get('AWS_REGION', os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')) -_GLOBAL_ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID', _random_account_id()) -_GLOBAL_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', 'SOME_ACCESS_KEY_ID') -_GLOBAL_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', 'SOME_SECRET_ACCESS_KEY') -_GLOBAL_SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN', None) - -_GLOBAL_INVOKEID = _random_invoke_id() -_GLOBAL_MODE = 'event' # Either 'http' or 'event' -_GLOBAL_SUPRESS_INIT = True # Forces calling _get_handlers_delayed() -_GLOBAL_DATA_SOCK = -1 -_GLOBAL_CONTEXT_OBJS = { - 'clientcontext': None, - 'cognitoidentityid': None, - 'cognitopoolid': None, -} -_GLOBAL_CREDENTIALS = { - 'key': _GLOBAL_ACCESS_KEY_ID, - 'secret': _GLOBAL_SECRET_ACCESS_KEY, - 'session': _GLOBAL_SESSION_TOKEN -} -_GLOBAL_INVOKED_FUNCTION_ARN = os.environ.get('AWS_LAMBDA_FUNCTION_INVOKED_ARN', _arn(_GLOBAL_REGION, _GLOBAL_ACCOUNT_ID, _GLOBAL_FCT_NAME)) -_GLOBAL_XRAY_TRACE_ID = os.environ.get('_X_AMZN_TRACE_ID', None) -_GLOBAL_XRAY_PARENT_ID = None -_GLOBAL_XRAY_SAMPLED = None -_GLOBAL_X_AMZN_TRACE_ID = None -_GLOBAL_INVOKED = False -_GLOBAL_ERRORED = False -_GLOBAL_START_TIME = None -_GLOBAL_TODAY = datetime.date.today() -# export needed stuff -os.environ['AWS_LAMBDA_LOG_GROUP_NAME'] = '/aws/lambda/%s' % _GLOBAL_FCT_NAME -os.environ['AWS_LAMBDA_LOG_STREAM_NAME'] = "%s/%s/%s/[%s]%s" % ( - _GLOBAL_TODAY.year, - _GLOBAL_TODAY.month, - _GLOBAL_TODAY.day, - _GLOBAL_VERSION, - '%016x' % random.randrange(16**16) - ) -os.environ["AWS_LAMBDA_FUNCTION_NAME"] = _GLOBAL_FCT_NAME -os.environ['AWS_LAMBDA_FUNCTION_MEMORY_SIZE'] = _GLOBAL_MEM_SIZE -os.environ['AWS_LAMBDA_FUNCTION_VERSION'] = _GLOBAL_VERSION -os.environ['AWS_REGION'] = _GLOBAL_REGION -os.environ['AWS_DEFAULT_REGION'] = _GLOBAL_REGION -os.environ['_HANDLER'] = _GLOBAL_HANDLER - -def report_user_init_start(): - return - -def report_user_init_end(): - return - -def report_user_invoke_start(): - return - -def report_user_invoke_end(): - return - -def receive_start(): - sys.stdout = orig_stderr - sys.stderr = orig_stderr - return ( - _GLOBAL_INVOKEID, - _GLOBAL_MODE, - _GLOBAL_HANDLER, - _GLOBAL_SUPRESS_INIT, - _GLOBAL_CREDENTIALS - ) - -def report_running(invokeid): - return - -def receive_invoke(): - global _GLOBAL_INVOKED - global _GLOBAL_START_TIME - - if not _GLOBAL_INVOKED: - eprint( - "START RequestId: %s Version: %s" % - (_GLOBAL_INVOKEID, _GLOBAL_VERSION) - ) - _GLOBAL_INVOKED = True - _GLOBAL_START_TIME = time.time() - - return ( - _GLOBAL_INVOKEID, - _GLOBAL_DATA_SOCK, - _GLOBAL_CREDENTIALS, - _GLOBAL_EVENT_BODY, - _GLOBAL_CONTEXT_OBJS, - _GLOBAL_INVOKED_FUNCTION_ARN, - _GLOBAL_XRAY_TRACE_ID, - ) - -def report_fault(invokeid, msg, except_value, trace): - global _GLOBAL_ERRORED - - _GLOBAL_ERRORED = True - - if msg and except_value: - eprint('%s: %s' % (msg, except_value)) - if trace: - eprint('%s' % trace) - return - -def report_done(invokeid, errortype, result, is_fatal): - global _GLOBAL_INVOKED - global _GLOBAL_ERRORED - - if _GLOBAL_INVOKED: - eprint("END RequestId: %s" % invokeid) - - duration = int((time.time() - _GLOBAL_START_TIME) * 1000) - billed_duration = min(100 * int((duration / 100) + 1), _GLOBAL_TIMEOUT * 1000) - max_mem = int(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1024) - - eprint( - "REPORT RequestId: %s Duration: %s ms Billed Duration: %s ms Memory Size: %s MB Max Memory Used: %s MB" % ( - invokeid, duration, billed_duration, _GLOBAL_MEM_SIZE, max_mem - ) - ) - if result: - print('\n' + result, file=orig_stdout) - sys.exit(1 if _GLOBAL_ERRORED else 0) - else: - return - -def report_xray_exception(xray_json): - return - -def log_bytes(msg, fileno): - eprint(msg) - return - -def log_sb(msg): - return - -def get_remaining_time(): - return ((_GLOBAL_TIMEOUT * 1000) - int((time.time() - _GLOBAL_START_TIME) * 1000)) - -def send_console_message(msg, byte_length): - eprint(msg) - return diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py new file mode 100644 index 00000000..1a7a4742 --- /dev/null +++ b/python3.6/run/runtime_mock.py @@ -0,0 +1,262 @@ +# pylint: disable=missing-docstring, global-statement, unused-argument, broad-except + +from __future__ import print_function +import sys +import os +import random +import uuid +import time +import datetime +import subprocess +import json +import traceback +import base64 +import signal +try: + # for python 3 + from http.client import HTTPConnection +except ImportError: + # for python 2 + from httplib import HTTPConnection + + +signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) + +ORIG_STDOUT = sys.stdout +ORIG_STDERR = sys.stderr + +LOGS = '' +LOG_TAIL = False + +STAY_OPEN = os.environ.get('DOCKER_LAMBDA_STAY_OPEN', '') + +HANDLER = sys.argv[1] if len(sys.argv) > 1 else os.environ.get('AWS_LAMBDA_FUNCTION_HANDLER', \ + os.environ.get('_HANDLER', 'lambda_function.lambda_handler')) +EVENT_BODY = sys.argv[2] if len(sys.argv) > 2 else os.environ.get('AWS_LAMBDA_EVENT_BODY', \ + (sys.stdin.read() if os.environ.get('DOCKER_LAMBDA_USE_STDIN', False) else '{}')) +FUNCTION_NAME = os.environ.get('AWS_LAMBDA_FUNCTION_NAME', 'test') +FUNCTION_VERSION = os.environ.get('AWS_LAMBDA_FUNCTION_VERSION', '$LATEST') +MEM_SIZE = os.environ.get('AWS_LAMBDA_FUNCTION_MEMORY_SIZE', '1536') +DEADLINE_MS = int(time.time() * 1000) + int(os.environ.get('AWS_LAMBDA_FUNCTION_TIMEOUT', '300')) +REGION = os.environ.get('AWS_REGION', os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')) +ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID', random.randint(100000000000, 999999999999)) +ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', 'SOME_ACCESS_KEY_ID') +SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', 'SOME_SECRET_ACCESS_KEY') +SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN', None) + +INVOKEID = str(uuid.uuid4()) +INVOKE_MODE = 'event' # Either 'http' or 'event' +SUPPRESS_INIT = True # Forces calling _get_handlers_delayed() +DATA_SOCK = -1 +CONTEXT_OBJS = { + 'clientcontext': None, + 'cognitoidentityid': None, + 'cognitopoolid': None, +} +CREDENTIALS = { + 'key': ACCESS_KEY_ID, + 'secret': SECRET_ACCESS_KEY, + 'session': SESSION_TOKEN +} +INVOKED_FUNCTION_ARN = os.environ.get('AWS_LAMBDA_FUNCTION_INVOKED_ARN', \ + 'arn:aws:lambda:%s:%s:function:%s' % (REGION, ACCOUNT_ID, FUNCTION_NAME)) +XRAY_TRACE_ID = os.environ.get('_X_AMZN_TRACE_ID', None) +XRAY_PARENT_ID = None +XRAY_SAMPLED = None +TRACE_ID = None +INVOKED = False +ERRORED = False +TODAY = datetime.date.today() +# export needed stuff +os.environ['AWS_LAMBDA_LOG_GROUP_NAME'] = '/aws/lambda/%s' % FUNCTION_NAME +os.environ['AWS_LAMBDA_LOG_STREAM_NAME'] = "%s/%s/%s/[%s]%s" % ( + TODAY.year, + TODAY.month, + TODAY.day, + FUNCTION_VERSION, + '%016x' % random.randrange(16**16) +) +os.environ["AWS_LAMBDA_FUNCTION_NAME"] = FUNCTION_NAME +os.environ['AWS_LAMBDA_FUNCTION_MEMORY_SIZE'] = MEM_SIZE +os.environ['AWS_LAMBDA_FUNCTION_VERSION'] = FUNCTION_VERSION +os.environ['AWS_REGION'] = REGION +os.environ['AWS_DEFAULT_REGION'] = REGION +os.environ['_HANDLER'] = HANDLER + +MOCKSERVER_ENV = os.environ.copy() +MOCKSERVER_ENV['DOCKER_LAMBDA_NO_BOOTSTRAP'] = '1' +MOCKSERVER_ENV['DOCKER_LAMBDA_USE_STDIN'] = '1' + +MOCKSERVER_PROCESS = subprocess.Popen( + '/var/runtime/mockserver', stdin=subprocess.PIPE, env=MOCKSERVER_ENV) +MOCKSERVER_PROCESS.stdin.write(EVENT_BODY.encode()) +MOCKSERVER_PROCESS.stdin.close() + +MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) + + +def eprint(*args, **kwargs): + print(*args, file=ORIG_STDERR, **kwargs) + + +def report_user_init_start(): + return + + +def report_user_init_end(): + return + + +def report_user_invoke_start(): + return + + +def report_user_invoke_end(): + return + + +def receive_start(): + global MOCKSERVER_CONN + + for retry in range(20): + try: + MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) + MOCKSERVER_CONN.request("GET", "/2018-06-01/ping") + resp = MOCKSERVER_CONN.getresponse() + if resp.status != 200: + raise Exception("Mock server returned %d" % resp.status) + resp.read() + break + except Exception: + if retry >= 19: + raise + else: + time.sleep(.005) + continue + return ( + INVOKEID, + INVOKE_MODE, + HANDLER, + SUPPRESS_INIT, + CREDENTIALS + ) + + +def report_running(invokeid): + return + + +def receive_invoke(): + global INVOKED + global INVOKEID + global DEADLINE_MS + global INVOKED_FUNCTION_ARN + global XRAY_TRACE_ID + global EVENT_BODY + global CONTEXT_OBJS + global LOGS + global LOG_TAIL + + try: + MOCKSERVER_CONN.request("GET", "/2018-06-01/runtime/invocation/next") + resp = MOCKSERVER_CONN.getresponse() + if resp.status != 200: + raise Exception("/invocation/next return status %d" % resp.status) + except Exception: + if INVOKED and not STAY_OPEN: + sys.exit(1 if ERRORED else 0) + return () + raise + + if INVOKED: + LOGS = "" + + INVOKED = True + + INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') + DEADLINE_MS = resp.getheader('Lambda-Runtime-Deadline-Ms') + INVOKED_FUNCTION_ARN = resp.getheader( + 'Lambda-Runtime-Invoked-Function-Arn') + XRAY_TRACE_ID = resp.getheader('Lambda-Runtime-Trace-Id') + cognito_identity = json.loads(resp.getheader( + 'Lambda-Runtime-Cognito-Identity', '{}')) + CONTEXT_OBJS['cognitoidentityid'] = cognito_identity.get('identity_id') + CONTEXT_OBJS['cognitopoolid'] = cognito_identity.get('identity_pool_id') + CONTEXT_OBJS['clientcontext'] = resp.getheader( + 'Lambda-Runtime-Client-Context') + + LOG_TAIL = resp.getheader('docker-lambda-log-type') == 'Tail' + + EVENT_BODY = resp.read() + + return ( + INVOKEID, + DATA_SOCK, + CREDENTIALS, + EVENT_BODY, + CONTEXT_OBJS, + INVOKED_FUNCTION_ARN, + XRAY_TRACE_ID, + ) + + +def report_fault(invokeid, msg, except_value, trace): + global ERRORED + + ERRORED = True + + if msg and except_value: + eprint('%s: %s' % (msg, except_value)) + if trace: + eprint('%s' % trace) + + +def report_done(invokeid, errortype, result, is_fatal): + global ERRORED + + if not INVOKED: + return + + if errortype is not None: + ERRORED = True + result_obj = json.loads(result) + stack_trace = result_obj.get('stackTrace') + if stack_trace is not None: + result_obj['stackTrace'] = traceback.format_list(stack_trace) + result = json.dumps(result_obj) + + headers = {"Docker-Lambda-Log-Result": base64.b64encode(LOGS.encode())} if LOG_TAIL else {} + + MOCKSERVER_CONN.request("POST", "/2018-06-01/runtime/invocation/%s/%s" % \ + (invokeid, "response" if errortype is None else "error"), result, headers) + resp = MOCKSERVER_CONN.getresponse() + if resp.status != 202: + raise Exception("/invocation/response return status %d" % resp.status) + resp.read() + + +def report_xray_exception(xray_json): + return + + +def log_bytes(msg, fileno): + global LOGS + + if STAY_OPEN: + if LOG_TAIL: + LOGS += msg + (ORIG_STDOUT if fileno == 1 else ORIG_STDERR).write(msg) + else: + ORIG_STDERR.write(msg) + + +def log_sb(msg): + return + + +def get_remaining_time(): + return DEADLINE_MS - int(time.time() * 1000) + + +def send_console_message(msg, byte_length): + log_bytes(msg + '\n', 1) From 3e2a2d70d1ff761291d556c3eef948c0054c2bab Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 19 Oct 2019 16:11:17 -0400 Subject: [PATCH 044/234] Add Lambda API support to java8 --- java8/run/Dockerfile | 5 + java8/run/lambda-runtime-mock/.classpath | 7 +- .../LambdaSandboxJava-1.0.jar | Bin 122901 -> 127784 bytes java8/run/lambda-runtime-mock/build.sh | 9 +- java8/run/lambda-runtime-mock/gson-2.3.1.jar | Bin 0 -> 206963 bytes .../java/lambdainternal/LambdaRuntime.java | 301 +++++++++++------- .../lambdainternal/LambdaRuntime.orig.java | 112 ------- 7 files changed, 201 insertions(+), 233 deletions(-) create mode 100644 java8/run/lambda-runtime-mock/gson-2.3.1.jar delete mode 100644 java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.orig.java diff --git a/java8/run/Dockerfile b/java8/run/Dockerfile index c3bed260..0bfbe07a 100644 --- a/java8/run/Dockerfile +++ b/java8/run/Dockerfile @@ -4,6 +4,9 @@ COPY ./lambda-runtime-mock /src RUN apk add --no-cache curl && ./build.sh +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV AWS_EXECUTION_ENV=AWS_Lambda_java8 @@ -13,6 +16,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY --from=0 /src/LambdaSandboxJava-1.0.jar /var/runtime/lib/ +COPY --from=1 /var/runtime/init /var/runtime/mockserver + WORKDIR / USER sbx_user1051 diff --git a/java8/run/lambda-runtime-mock/.classpath b/java8/run/lambda-runtime-mock/.classpath index 73aea907..ed03251e 100644 --- a/java8/run/lambda-runtime-mock/.classpath +++ b/java8/run/lambda-runtime-mock/.classpath @@ -1,6 +1,7 @@ - - - + + + + diff --git a/java8/run/lambda-runtime-mock/LambdaSandboxJava-1.0.jar b/java8/run/lambda-runtime-mock/LambdaSandboxJava-1.0.jar index f47d2040261c4b9a29f04456e3980c4c7c8db804..5576d3f8cc8953ad94267ae636dcd99d4fa6bd2e 100644 GIT binary patch delta 27570 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 a4iTpTT1OtnK_Cc$|C%6S-(G|1CioxAua-ps diff --git a/java8/run/lambda-runtime-mock/build.sh b/java8/run/lambda-runtime-mock/build.sh index de4ae4e0..466f7e70 100755 --- a/java8/run/lambda-runtime-mock/build.sh +++ b/java8/run/lambda-runtime-mock/build.sh @@ -2,13 +2,14 @@ cd $(dirname "$0") -mkdir -p ./target/classes +curl -s https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -- var/runtime/lib + +mv var/runtime/lib/LambdaSandboxJava-1.0.jar var/runtime/lib/gson-*.jar ./ -javac -target 1.8 -d ./target/classes ./src/main/java/lambdainternal/LambdaRuntime.java +mkdir -p ./target/classes -curl -s https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -- var/runtime/lib/LambdaSandboxJava-1.0.jar +javac -target 1.8 -cp ./gson-*.jar -d ./target/classes ./src/main/java/lambdainternal/LambdaRuntime.java -mv var/runtime/lib/LambdaSandboxJava-1.0.jar ./ cp -R ./target/classes/lambdainternal ./ jar uf LambdaSandboxJava-1.0.jar lambdainternal/LambdaRuntime*.class diff --git a/java8/run/lambda-runtime-mock/gson-2.3.1.jar b/java8/run/lambda-runtime-mock/gson-2.3.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..f03505751d217dbb3f752c80324aff961a33f7aa GIT binary patch literal 206963 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

ripC^+uw~?YL8-=( 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 literal 0 HcmV?d00001 diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index 156f70db..0e2f67b1 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -1,21 +1,34 @@ package lambdainternal; +import java.io.ByteArrayOutputStream; +import java.io.OutputStream; +import java.io.PrintStream; +import java.lang.ProcessBuilder.Redirect; import java.lang.reflect.Field; import java.math.BigInteger; +import java.net.ConnectException; +import java.net.HttpURLConnection; +import java.net.URL; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; -import java.util.Collections; +import java.util.Arrays; +import java.util.Base64; import java.util.Date; import java.util.Map; import java.util.Random; import java.util.Scanner; import java.util.UUID; +import com.google.gson.Gson; + import sun.misc.Unsafe; +@SuppressWarnings("restriction") public class LambdaRuntime { private static Unsafe unsafe; + private static final String API_BASE = "http://127.0.0.1:9001/2018-06-01"; + private static final boolean STAY_OPEN = !isNullOrEmpty(getEnv("DOCKER_LAMBDA_STAY_OPEN")); private static final String INVOKE_ID = UUID.randomUUID().toString(); private static final String AWS_ACCESS_KEY_ID; private static final String AWS_SECRET_ACCESS_KEY; @@ -23,22 +36,18 @@ public class LambdaRuntime { private static final String AWS_REGION; private static final String HANDLER; private static final String EVENT_BODY; - private static final int TIMEOUT; - private static final String X_AMZN_TRACE_ID; - private static final String CLIENT_CONTEXT = null; - private static final String COGNITO_IDENTITY_ID = ""; - private static final String COGNITO_IDENTITY_POOL_ID = ""; - private static final String FUNCTION_ARN; - private static final String ACCOUNT_ID; - private static boolean alreadyInvoked = false; - private static long invokeStart; + private static final PrintStream ORIG_STDERR = System.err; + private static final ByteArrayOutputStream LOGS = new ByteArrayOutputStream(); + private static long deadlineMs; + private static boolean invoked = false; + private static boolean errored = false; public static final int MEMORY_LIMIT; public static final String LOG_GROUP_NAME; public static final String LOG_STREAM_NAME; public static final String FUNCTION_NAME; public static final String FUNCTION_VERSION; - public static volatile boolean needsDebugLogs; + public static volatile boolean needsDebugLogs = false; static { try { @@ -49,7 +58,8 @@ public class LambdaRuntime { throw new RuntimeException(e); } - TIMEOUT = Integer.parseInt(getEnvOrDefault("AWS_LAMBDA_FUNCTION_TIMEOUT", "300")); + deadlineMs = System.currentTimeMillis() + + (1000 * Long.parseLong(getEnvOrDefault("AWS_LAMBDA_FUNCTION_TIMEOUT", "300"))); MEMORY_LIMIT = Integer.parseInt(getEnvOrDefault("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536")); FUNCTION_NAME = getEnvOrDefault("AWS_LAMBDA_FUNCTION_NAME", "test"); FUNCTION_VERSION = getEnvOrDefault("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); @@ -59,17 +69,12 @@ public class LambdaRuntime { AWS_SECRET_ACCESS_KEY = getEnvOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"); AWS_SESSION_TOKEN = getEnv("AWS_SESSION_TOKEN"); AWS_REGION = getEnvOrDefault("AWS_REGION", getEnvOrDefault("AWS_DEFAULT_REGION", "us-east-1")); - ACCOUNT_ID = getEnvOrDefault("AWS_ACCOUNT_ID", "000000000000"); - FUNCTION_ARN = getEnvOrDefault("AWS_LAMBDA_FUNCTION_INVOKED_ARN", - "arn:aws:lambda:" + AWS_REGION + ":" + ACCOUNT_ID + ":function:" + FUNCTION_NAME); - X_AMZN_TRACE_ID = getEnvOrDefault("_X_AMZN_TRACE_ID", ""); String[] args = getCmdLineArgs(); - HANDLER = args.length > 1 ? args[1] : getEnvOrDefault("AWS_LAMBDA_FUNCTION_HANDLER", getEnvOrDefault("_HANDLER", "index.Handler")); + HANDLER = args.length > 1 ? args[1] + : getEnvOrDefault("AWS_LAMBDA_FUNCTION_HANDLER", getEnvOrDefault("_HANDLER", "index.Handler")); EVENT_BODY = args.length > 2 ? args[2] : getEventBody(); - LambdaRuntime.needsDebugLogs = false; - setenv("AWS_LAMBDA_FUNCTION_NAME", FUNCTION_NAME, 1); setenv("AWS_LAMBDA_FUNCTION_VERSION", FUNCTION_VERSION, 1); setenv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", Integer.toString(MEMORY_LIMIT), 1); @@ -78,69 +83,151 @@ public class LambdaRuntime { setenv("AWS_REGION", AWS_REGION, 1); setenv("AWS_DEFAULT_REGION", AWS_REGION, 1); setenv("_HANDLER", HANDLER, 1); + + try { + ProcessBuilder pb = new ProcessBuilder("/var/runtime/mockserver").redirectInput(Redirect.PIPE) + .redirectOutput(Redirect.INHERIT).redirectError(Redirect.INHERIT); + Map mockEnv = pb.environment(); + mockEnv.put("DOCKER_LAMBDA_NO_BOOTSTRAP", "1"); + mockEnv.put("DOCKER_LAMBDA_USE_STDIN", "1"); + Process mockServer = pb.start(); + mockServer.getOutputStream().write(EVENT_BODY.getBytes(StandardCharsets.UTF_8)); + mockServer.getOutputStream().close(); + } catch (Exception e) { + throw new RuntimeException(e); + } } - private static String getEventBody() { - String eventBody = getEnv("AWS_LAMBDA_EVENT_BODY"); - if (eventBody == null) { - eventBody = getEnv("DOCKER_LAMBDA_USE_STDIN") != null ? - new Scanner(System.in).useDelimiter("\\A").next() : "{}"; + public static void initRuntime() { + for (int i = 0; i < 20; i++) { + try { + HttpURLConnection conn = (HttpURLConnection) new URL(API_BASE + "/ping").openConnection(); + int responseCode = conn.getResponseCode(); + if (responseCode != 200) { + throw new RuntimeException("Unexpected status code from ping: " + responseCode); + } + break; + } catch (Exception e) { + if (i < 19) + continue; + throw new RuntimeException(e); + } } - return eventBody; } - private static String getEnvOrDefault(String key, String defaultVal) { - String envVal = getEnv(key); - return envVal != null ? envVal : defaultVal; + public static WaitForStartResult waitForStart() { + if (!STAY_OPEN) { + System.setOut(ORIG_STDERR); + System.setErr(ORIG_STDERR); + } + return new WaitForStartResult(INVOKE_ID, HANDLER, "event", AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, + AWS_SESSION_TOKEN, true); } - private static String randomLogStreamName(String functionVersion) { - byte[] randomBuf = new byte[16]; - new Random().nextBytes(randomBuf); - return String.format("%s/[%s]%016x", new SimpleDateFormat("yyyy/MM/dd").format(new Date()), functionVersion, - new BigInteger(1, randomBuf)); + public static InvokeRequest waitForInvoke() { + invoked = true; + try { + HttpURLConnection conn = (HttpURLConnection) new URL(API_BASE + "/runtime/invocation/next") + .openConnection(); + try { + int responseCode = conn.getResponseCode(); + if (responseCode != 200) { + throw new RuntimeException("Unexpected status code from invocation/next: " + responseCode); + } + } catch (ConnectException e) { + System.exit(errored ? 1 : 0); + } + String requestId = conn.getHeaderField("Lambda-Runtime-Aws-Request-Id"); + deadlineMs = Long.parseLong(conn.getHeaderField("Lambda-Runtime-Deadline-Ms")); + String functionArn = conn.getHeaderField("Lambda-Runtime-Invoked-Function-Arn"); + String xAmznTraceId = conn.getHeaderField("Lambda-Runtime-Trace-Id"); + String clientContext = conn.getHeaderField("Lambda-Runtime-Client-Context"); + String cognitoIdentity = conn.getHeaderField("Lambda-Runtime-Cognito-Identity"); + + CognitoIdentity cognitoIdentityObj = new CognitoIdentity(); + if (!isNullOrEmpty(cognitoIdentity)) { + cognitoIdentityObj = new Gson().fromJson(cognitoIdentity, CognitoIdentity.class); + } + + needsDebugLogs = "Tail".equals(conn.getHeaderField("Docker-Lambda-Log-Type")); + LOGS.reset(); + + String responseBody = ""; + try (Scanner scanner = new Scanner(conn.getInputStream())) { + responseBody = scanner.useDelimiter("\\A").next(); + } + long eventBodyAddress = 0; + byte[] eventBodyBytes = responseBody.getBytes(StandardCharsets.UTF_8); + eventBodyAddress = unsafe.allocateMemory(eventBodyBytes.length); + for (int i = 0; i < eventBodyBytes.length; i++) { + unsafe.putByte(eventBodyAddress + i, eventBodyBytes[i]); + } + + return new InvokeRequest(-1, requestId, xAmznTraceId, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, + AWS_SESSION_TOKEN, clientContext, cognitoIdentityObj.identity_id, + cognitoIdentityObj.identity_pool_id, eventBodyAddress, eventBodyBytes.length, needsDebugLogs, + functionArn); + } catch (Exception e) { + throw new RuntimeException(e); + } } - private static void systemLog(String str) { - System.err.println("\033[32m" + str + "\033[0m"); + public static void reportDone(final String invokeid, final byte[] result, final int resultLength, + final int waitForExitFlag) { + if (!invoked) { + return; + } + String invokeType = errored ? "/error" : "/response"; + try { + HttpURLConnection conn = (HttpURLConnection) new URL( + API_BASE + "/runtime/invocation/" + invokeid + invokeType).openConnection(); + conn.setRequestMethod("POST"); + conn.setDoOutput(true); + + byte[] logs = LOGS.toByteArray(); + if (logs.length > 0) { + if (logs.length > 4096) { + logs = Arrays.copyOfRange(logs, logs.length - 4096, logs.length); + } + conn.setRequestProperty("Docker-Lambda-Log-Result", Base64.getEncoder().encodeToString(logs)); + } + + byte[] resultCopy = result == null ? new byte[0] + : new String(result, 0, resultLength).getBytes(StandardCharsets.UTF_8); + try (OutputStream os = conn.getOutputStream()) { + os.write(resultCopy); + } + int responseCode = conn.getResponseCode(); + if (responseCode != 202) { + throw new RuntimeException("Unexpected status code from invocation/response: " + responseCode); + } + } catch (Exception e) { + throw new RuntimeException(e); + } } - private static void systemErr(String str) { - System.err.println("\033[31m" + str + "\033[0m"); + public static void reportFault(final String invokeid, final String msg, final String exceptionClass, + final String stack) { + errored = true; + systemErr(stack); } - public static String getEnv(final String envVariableName) { - return System.getenv(envVariableName); + public static int getRemainingTime() { + return (int) (deadlineMs - System.currentTimeMillis()); } - public static void initRuntime() { + public static void sendContextLogs(final byte[] msg, final int length) { + (STAY_OPEN ? System.out : System.err).print(new String(msg, 0, length, StandardCharsets.UTF_8)); } - public static void reportRunning(final String p0) { + public static synchronized void streamLogsToSlicer(final byte[] msg, final int offset, final int length) { + LOGS.write(msg, offset, length); } - public static void reportDone(final String invokeid, final byte[] result, final int resultLength, final int p3) { - if (!alreadyInvoked) { - return; - } - double durationMs = (System.nanoTime() - invokeStart) / 1_000_000d; - long billedMs = Math.min(100 * ((long) Math.floor(durationMs / 100) + 1), TIMEOUT * 1000); - long maxMemory = Math.round((Runtime.getRuntime().totalMemory() - - Runtime.getRuntime().freeMemory()) / (1024 * 1024)); - systemLog("END RequestId: " + invokeid); - systemLog(String.join("\t", - "REPORT RequestId: " + invokeid, - "Duration: " + String.format("%.2f", durationMs) + " ms", - "Billed Duration: " + billedMs + " ms", - "Memory Size: " + MEMORY_LIMIT + " MB", - "Max Memory Used: " + maxMemory + " MB", - "")); - if (result != null) { - System.out.println("\n" + new String(result, 0, resultLength)); - } + public static void reportRunning(final String invokeId) { } - public static void reportException(final String p0) { + public static void reportException(final String xrayJsonException) { } public static void reportUserInitStart() { @@ -155,80 +242,66 @@ public static void reportUserInvokeStart() { public static void reportUserInvokeEnd() { } - public static void reportFault(final String invokeid, final String msg, final String exceptionClass, - final String stack) { - systemErr(stack); - } - - public static void setenv(final String key, final String val, final int p2) { - getMutableEnv().put(key, val); - } - - public static void unsetenv(final String key) { - getMutableEnv().remove(key); + public static void writeSandboxLog(String msg) { } - public static WaitForStartResult waitForStart() { - return new WaitForStartResult(INVOKE_ID, HANDLER, "event", AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, - AWS_SESSION_TOKEN, false); + public static String getEnv(final String key) { + return System.getenv(key); } - public static InvokeRequest waitForInvoke() { - if (alreadyInvoked) { - System.exit(0); - } - alreadyInvoked = true; - long address = 0; - byte[] eventBodyBytes = EVENT_BODY.getBytes(StandardCharsets.UTF_8); + @SuppressWarnings("unchecked") + public static void setenv(final String key, final String val, final int flag) { try { - address = unsafe.allocateMemory(eventBodyBytes.length); - for (int i = 0; i < eventBodyBytes.length; i++) { - unsafe.putByte(address + i, eventBodyBytes[i]); - } + Map env = System.getenv(); + Field field = env.getClass().getDeclaredField("m"); + field.setAccessible(true); + ((Map) field.get(env)).put(key, val); + field.setAccessible(false); } catch (Exception e) { - // Not sure, could happen if memory is exhausted? + // Should never happen on Lambda throw new RuntimeException(e); } - invokeStart = System.nanoTime(); - systemLog("START RequestId: " + INVOKE_ID + " Version: " + FUNCTION_VERSION); - return new InvokeRequest(-1, INVOKE_ID, X_AMZN_TRACE_ID, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, - AWS_SESSION_TOKEN, CLIENT_CONTEXT, COGNITO_IDENTITY_ID, COGNITO_IDENTITY_POOL_ID, address, - eventBodyBytes.length, false, FUNCTION_ARN); } - public static int getRemainingTime() { - return (int) ((TIMEOUT * 1000) - Math.round((System.nanoTime() - invokeStart) / 1_000_000d)); + private static String getEventBody() { + String eventBody = getEnv("AWS_LAMBDA_EVENT_BODY"); + if (eventBody == null) { + eventBody = getEnv("DOCKER_LAMBDA_USE_STDIN") != null ? new Scanner(System.in).useDelimiter("\\A").next() + : "{}"; + } + return eventBody; } - public static void sendContextLogs(final byte[] msg, final int length) { - System.err.print(new String(msg, 0, length, StandardCharsets.UTF_8)); + private static String getEnvOrDefault(String key, String defaultVal) { + String envVal = getEnv(key); + return envVal != null ? envVal : defaultVal; + } + + private static String randomLogStreamName(String functionVersion) { + byte[] randomBuf = new byte[16]; + new Random().nextBytes(randomBuf); + return String.format("%s/[%s]%016x", new SimpleDateFormat("yyyy/MM/dd").format(new Date()), functionVersion, + new BigInteger(1, randomBuf)); } - public static synchronized void streamLogsToSlicer(final byte[] p0, final int p1, final int p2) { + private static void systemErr(String str) { + ORIG_STDERR.println("\033[31m" + str + "\033[0m"); } private static String[] getCmdLineArgs() { return System.getProperty("sun.java.command").split(" ", 3); } - private static Map getMutableEnv() { - Class[] classes = Collections.class.getDeclaredClasses(); - Map env = System.getenv(); - for (Class cl : classes) { - if ("java.util.Collections$UnmodifiableMap".equals(cl.getName())) { - try { - Field field = cl.getDeclaredField("m"); - field.setAccessible(true); - Object obj = field.get(env); - return (Map) obj; - } catch (Exception e) { - // Should never happen on Lambda - throw new RuntimeException(e); - } - } + private static boolean isNullOrEmpty(String str) { + return str == null || str.isEmpty(); + } + + private static class CognitoIdentity { + private final String identity_id = null; + private final String identity_pool_id = null; + + private CognitoIdentity() { } - // Should never happen on Lambda - throw new RuntimeException("Could not find java.util.Collections$UnmodifiableMap class"); } public static class AWSCredentials { diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.orig.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.orig.java deleted file mode 100644 index e1b39bd7..00000000 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.orig.java +++ /dev/null @@ -1,112 +0,0 @@ -package lambdainternal; - -public class LambdaRuntime -{ - public static final int MEMORY_LIMIT = Integer.parseInt(getEnv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE")); - public static final String LOG_GROUP_NAME = getEnv("AWS_LAMBDA_LOG_GROUP_NAME"); - public static final String LOG_STREAM_NAME = getEnv("AWS_LAMBDA_LOG_STREAM_NAME"); - public static final String FUNCTION_NAME = getEnv("AWS_LAMBDA_FUNCTION_NAME"); - public static final String FUNCTION_VERSION = getEnv("AWS_LAMBDA_FUNCTION_VERSION"); - public static volatile boolean needsDebugLogs = false; - - public static String getEnv(String envVariableName) - { - return System.getenv(envVariableName); - } - - public static native void initRuntime(); - - public static native void reportRunning(String paramString); - - public static native void reportDone(String paramString, byte[] paramArrayOfByte, int paramInt1, int paramInt2); - - public static native void reportException(String paramString); - - public static native void reportUserInitStart(); - - public static native void reportUserInitEnd(); - - public static native void reportUserInvokeStart(); - - public static native void reportUserInvokeEnd(); - - public static native void reportFault(String paramString1, String paramString2, String paramString3, String paramString4); - - public static native void setenv(String paramString1, String paramString2, int paramInt); - - public static native void unsetenv(String paramString); - - public static native WaitForStartResult waitForStart(); - - public static native InvokeRequest waitForInvoke(); - - public static native int getRemainingTime(); - - public static native void sendContextLogs(byte[] paramArrayOfByte, int paramInt); - - public static synchronized native void streamLogsToSlicer(byte[] paramArrayOfByte, int paramInt1, int paramInt2); - - public static class AWSCredentials - { - public final String key; - public final String secret; - public final String session; - - public AWSCredentials(String key, String secret, String session) - { - this.key = key; - this.secret = secret; - this.session = session; - } - } - - public static class InvokeRequest - { - public final int sockfd; - public final String invokeid; - public final String xAmznTraceId; - public final LambdaRuntime.AWSCredentials credentials; - public final String clientContext; - public final String cognitoIdentityId; - public final String cognitoPoolId; - public final long eventBodyAddr; - public final int eventBodyLen; - public final boolean needsDebugLogs; - public final String invokedFunctionArn; - - public InvokeRequest(int sockfd, String invokeid, String xAmznTraceId, - String awskey, String awssecret, String awssession, String - clientcontext, String cognitoidentityid, String cognitopoolid, long - addr, int len, boolean needsDebugLogs, String invokedFunctionArn) { - this.sockfd = sockfd; - this.invokeid = invokeid; - this.xAmznTraceId = xAmznTraceId; - this.eventBodyAddr = addr; - this.eventBodyLen = len; - this.clientContext = clientcontext; - this.cognitoIdentityId = cognitoidentityid; - this.cognitoPoolId = cognitopoolid; - this.credentials = new LambdaRuntime.AWSCredentials(awskey, awssecret, awssession); - this.needsDebugLogs = needsDebugLogs; - this.invokedFunctionArn = invokedFunctionArn; - } - } - - public static class WaitForStartResult - { - public final String invokeid; - public final String handler; - public final String mode; - public final LambdaRuntime.AWSCredentials credentials; - public final boolean suppressInit; - - public WaitForStartResult(String invokeid, String handler, String mode, String awskey, String awssecret, String awssession, boolean suppressInit) - { - this.invokeid = invokeid; - this.handler = handler; - this.mode = mode; - this.credentials = new LambdaRuntime.AWSCredentials(awskey, awssecret, awssession); - this.suppressInit = suppressInit; - } - } -} From 035380a40a0d8bce58470af4adc61ebcc2ad84d3 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 10 Nov 2019 21:24:59 -0500 Subject: [PATCH 045/234] Add Lambda API support to dotnetcore2.0/2.1 --- dotnetcore2.0/run/Dockerfile | 5 + .../run/MockBootstraps/MockLambdaContext.cs | 61 +++++-- .../run/MockBootstraps/MockRuntime.cs | 171 +++++++++++++++--- dotnetcore2.0/run/MockBootstraps/Program.cs | 26 ++- dotnetcore2.1/run/Dockerfile | 5 + .../run/MockBootstraps/MockLambdaContext.cs | 61 +++++-- .../run/MockBootstraps/MockRuntime.cs | 171 +++++++++++++++--- dotnetcore2.1/run/MockBootstraps/Program.cs | 26 ++- examples/dotnetcore2.1/test.sln | 17 ++ 9 files changed, 453 insertions(+), 90 deletions(-) create mode 100644 examples/dotnetcore2.1/test.sln diff --git a/dotnetcore2.0/run/Dockerfile b/dotnetcore2.0/run/Dockerfile index fe348e1f..190e6767 100644 --- a/dotnetcore2.0/run/Dockerfile +++ b/dotnetcore2.0/run/Dockerfile @@ -10,6 +10,9 @@ COPY MockBootstraps/ . RUN dotnet publish --output /app/ --configuration Release +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV PATH=/var/lang/bin:$PATH \ @@ -21,6 +24,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY --from=0 /app/MockBootstraps.* /var/runtime/ +COPY --from=1 /var/runtime/init /var/runtime/mockserver + USER sbx_user1051 ENTRYPOINT ["/var/lang/bin/dotnet", "/var/runtime/MockBootstraps.dll"] diff --git a/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs b/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs index 901df2a2..1a3d6797 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs @@ -14,11 +14,17 @@ public MockLambdaContext(string handler, string eventBody) { RequestId = Guid.NewGuid().ToString(); StartTime = DateTime.Now; - InputStream = new MemoryStream(); - - var eventData = Encoding.UTF8.GetBytes(eventBody); - InputStream.Write(eventData, 0, eventData.Length); - InputStream.Position = 0; + Body = eventBody; + Timeout = Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_TIMEOUT", "300")); + MemorySize = Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536")); + FunctionName = EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_NAME", "test"); + FunctionVersion = EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); + LogGroup = EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_GROUP_NAME", $"/aws/lambda/{FunctionName}"); + LogStream = EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_STREAM_NAME", RandomLogStreamName); + Region = EnvHelper.GetOrDefault("AWS_REGION", EnvHelper.GetOrDefault("AWS_DEFAULT_REGION", "us-east-1")); + AccountId = EnvHelper.GetOrDefault("AWS_ACCOUNT_ID", "000000000000"); + Arn = EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_INVOKED_ARN", $"arn:aws:lambda:{Region}:{AccountId}:function:{FunctionName}"); + StayOpen = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("DOCKER_LAMBDA_STAY_OPEN")); Environment.SetEnvironmentVariable("AWS_LAMBDA_FUNCTION_NAME", FunctionName); Environment.SetEnvironmentVariable("AWS_LAMBDA_FUNCTION_VERSION", FunctionVersion); @@ -39,30 +45,51 @@ public TimeSpan RemainingTime() public long Duration => (long)(DateTime.Now - StartTime).TotalMilliseconds; public long BilledDuration => (long)(Math.Ceiling((DateTime.Now - StartTime).TotalMilliseconds / 100)) * 100; + public long DeadlineMs + { + set + { + Timeout = (int)DateTimeOffset.FromUnixTimeMilliseconds(value).Subtract(DateTime.Now).TotalSeconds; + } + } + + public string Body + { + set + { + InputStream = new MemoryStream(); + var eventData = Encoding.UTF8.GetBytes(value); + InputStream.Write(eventData, 0, eventData.Length); + InputStream.Position = 0; + } + } + public long MemoryUsed => Process.GetCurrentProcess().WorkingSet64; - public Stream InputStream { get; } + public Stream InputStream { get; set; } + + public string RequestId { get; set; } + public DateTime StartTime { get; set; } - public string RequestId { get; } - public DateTime StartTime { get; } + public int Timeout { get; set; } - public int Timeout => Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_TIMEOUT", "300")); + public int MemorySize { get; set; } - public int MemorySize => Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536")); + public string FunctionName { get; set; } - public string FunctionName => EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_NAME", "test"); + public string FunctionVersion { get; set; } - public string FunctionVersion => EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); + public string LogGroup { get; set; } - public string LogGroup => EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_GROUP_NAME", $"/aws/lambda/{FunctionName}"); + public string LogStream { get; set; } - public string LogStream => EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_STREAM_NAME", RandomLogStreamName); + public string Region { get; set; } - public string Region => EnvHelper.GetOrDefault("AWS_REGION", EnvHelper.GetOrDefault("AWS_DEFAULT_REGION", "us-east-1")); + public string AccountId { get; set; } - public string AccountId => EnvHelper.GetOrDefault("AWS_ACCOUNT_ID", "000000000000"); + public string Arn { get; set; } - public string Arn => EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_INVOKED_ARN", $"arn:aws:lambda:{Region}:{AccountId}:function:{FunctionName}"); + public bool StayOpen { get; } string RandomLogStreamName => $"{DateTime.Now.ToString("yyyy/MM/dd")}/[{FunctionVersion}]{random.Next().ToString("x") + random.Next().ToString("x")}"; } diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 8a28b249..36a82d14 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -3,10 +3,18 @@ using MockLambdaRuntime; using System; using System.Collections; +using System.Collections.Generic; using System.IO; using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Net.Sockets; using System.Runtime.InteropServices; using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; namespace AWSLambda.Internal.Bootstrap { @@ -16,6 +24,10 @@ internal class MockRuntime : ILambdaRuntime private bool invoked; + private bool logTail; + + private string logs; + private Exception invokeError; private readonly IntPtr sharedMem = Marshal.AllocHGlobal(SBSharedMem.UnmanagedStructSize); @@ -24,6 +36,8 @@ internal class MockRuntime : ILambdaRuntime private readonly MockLambdaContext context; + private static readonly HttpClient client = new HttpClient(); + public IEnvironment Environment { get; } = new SystemEnvironment(); public IXRayProfiler XRayProfiler { get; } = new MockXRayProfiler(); @@ -41,10 +55,11 @@ public MockRuntime(string handler, string body) { Handler = handler, InvokeId = context.RequestId, - SuppressUserCodeInit = false, + SuppressUserCodeInit = true, ErrorCode = null }; invoked = false; + client.Timeout = Timeout.InfiniteTimeSpan; } public bool KeepInvokeLoopRunning() @@ -54,14 +69,42 @@ public bool KeepInvokeLoopRunning() public void Init() { + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/ping").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } } - unsafe public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) + unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) { - Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } + if (invoked) + { + logs = ""; + } invoked = true; + var requestId = result.Headers.GetValues("Lambda-Runtime-Aws-Request-Id").First(); + var deadlineMs = result.Headers.GetValues("Lambda-Runtime-Deadline-Ms").First(); + var functionArn = result.Headers.GetValues("Lambda-Runtime-Invoked-Function-Arn").First(); + var xAmznTraceId = result.Headers.GetValues("Lambda-Runtime-Trace-Id").First(); + var clientContext = HeaderHelper.GetFirstOrDefault(result.Headers, "Lambda-Runtime-Client-Context"); + var cognitoIdentity = HeaderHelper.GetFirstOrDefault(result.Headers, "Lambda-Runtime-Cognito-Identity"); + + logTail = HeaderHelper.GetFirstOrDefault(result.Headers, "Docker-Lambda-Log-Type") == "Tail"; + + var body = result.Content.ReadAsStringAsync().Result; + + context.RequestId = requestId; + context.DeadlineMs = long.Parse(deadlineMs); + context.Body = body; + curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { @@ -72,52 +115,80 @@ unsafe public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, SecretAccessKey = EnvHelper.GetOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"), SessionToken = System.Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN") }, - XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), + XAmznTraceId = xAmznTraceId, InputStream = context.InputStream, OutputStream = new UnmanagedMemoryStream(curSBSharedMem.EventBody, 0, SBSharedMem.SizeOfEventBody, FileAccess.Write), LambdaContextInternal = new LambdaContextInternal( context.RemainingTime, SendCustomerLogMessage, - new Lazy(), + GetCognitoClientContextInternalLazy(clientContext), context.RequestId, new Lazy(context.Arn), - new Lazy(string.Empty), - new Lazy(string.Empty), + GetCognitoIdentityIdLazy(cognitoIdentity), + GetCognitoIdentityPoolIdLazy(cognitoIdentity), initialEnvironmentVariables ) }; } - /// Try to log everything to stderr except the function result - public void SendCustomerLogMessage(string message) - { - Console.Error.WriteLine(message); - } - public unsafe void ReportDone(string invokeId, string errorType, bool waitForExit) { if (!invoked && invokeError == null) return; - Console.Error.WriteLine($"END RequestId: {context.RequestId}"); + var output = Interop.InteropUtils.ReadUTF8String(curSBSharedMem.EventBody, curSBSharedMem.ResponseBodyLen); - Console.Error.WriteLine($"REPORT RequestId {context.RequestId}\t" + - $"Duration: {context.Duration} ms\t" + - $"Billed Duration: {context.BilledDuration} ms\t" + - $"Memory Size {context.MemorySize} MB\t" + - $"Max Memory Used: {context.MemoryUsed / (1024 * 1024)} MB"); + var suffix = errorType == null ? "response" : "error"; + Task task; + using (var requestMessage = new HttpRequestMessage(HttpMethod.Post, $"http://127.0.0.1:9001/2018-06-01/runtime/invocation/{context.RequestId}/{suffix}")) + { + if (logTail) + { + requestMessage.Headers.Add("Docker-Lambda-Log-Result", Convert.ToBase64String(LogsTail4k())); + } + requestMessage.Content = new StringContent(output); + task = client.SendAsync(requestMessage); + try + { + task.Wait(); + } + catch (AggregateException ae) + { + if (!context.StayOpen && ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && + (ae.InnerException.InnerException is SocketException || + // happens on dotnetcore2.0 + ae.InnerException.InnerException.GetType().ToString().Equals("System.Net.Http.CurlException"))) + { + System.Environment.Exit(string.IsNullOrEmpty(errorType) && invokeError == null ? 0 : 1); + } + else + { + throw ae; + } + } + var response = task.Result; + if (response.StatusCode != HttpStatusCode.Accepted) + { + throw new Exception($"Unknown response from invocation: {response.StatusCode}"); + } + } if (invokeError != null) { Console.Error.WriteLine(invokeError); - System.Environment.Exit(1); return; } + } - var output = Interop.InteropUtils.ReadUTF8String(curSBSharedMem.EventBody, curSBSharedMem.ResponseBodyLen); - - Console.WriteLine(output); - - System.Environment.Exit(string.IsNullOrEmpty(errorType) ? 0 : 1); + private byte[] LogsTail4k() + { + var logBuf = Encoding.UTF8.GetBytes(logs); + if (logBuf.Length <= 4096) + { + return logBuf; + } + var slicedLogBuf = new byte[4096]; + Array.Copy(logBuf, logBuf.Length - 4096, slicedLogBuf, 0, 4096); + return slicedLogBuf; } public void ReportError(string invokeId, ExceptionResponse exceptionResponse) @@ -138,6 +209,23 @@ public void ReportError(string invokeId, ExceptionResponse exceptionResponse) */ } + /// Try to log everything to stderr except the function result + public void SendCustomerLogMessage(string message) + { + if (context.StayOpen) + { + if (logTail) + { + logs += message + System.Environment.NewLine; + } + Console.WriteLine(message); + } + else + { + Console.Error.WriteLine(message); + } + } + private static void AppendStackTraceToStringBuilder(StringBuilder builder, ExceptionResponse ex) { if (!string.IsNullOrWhiteSpace(ex.StackTrace)) @@ -168,9 +256,27 @@ select s.Trim() into s } } + internal static Lazy GetCognitoIdentityIdLazy(string jsonStr) + { + return new Lazy(() => + { + var match = Regex.Match(jsonStr ?? "", "\"identity_id\":\"([^\"]+)\""); + return match.Success ? match.Groups[1].ToString() : string.Empty; + }); + } + + internal static Lazy GetCognitoIdentityPoolIdLazy(string jsonStr) + { + return new Lazy(() => + { + var match = Regex.Match(jsonStr ?? "", "\"identity_pool_id\":\"([^\"]+)\""); + return match.Success ? match.Groups[1].ToString() : string.Empty; + }); + } + internal static Lazy GetCognitoClientContextInternalLazy(string text) { - return new Lazy(delegate + return new Lazy(() => { CognitoClientContextInternal result = null; if (!string.IsNullOrEmpty(text)) @@ -212,4 +318,17 @@ public void ReportError(ExceptionResponse exceptionResponse) } } + class HeaderHelper + { + /// Gets the given environment variable with a fallback if it doesn't exist + public static string GetFirstOrDefault(HttpHeaders headers, string name) + { + if (headers.TryGetValues(name, out IEnumerable values)) + { + return values.FirstOrDefault(); + } + return null; + } + } + } diff --git a/dotnetcore2.0/run/MockBootstraps/Program.cs b/dotnetcore2.0/run/MockBootstraps/Program.cs index 69a15a43..df26073d 100644 --- a/dotnetcore2.0/run/MockBootstraps/Program.cs +++ b/dotnetcore2.0/run/MockBootstraps/Program.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; @@ -32,6 +33,12 @@ static void Main(string[] args) } AssemblyLoadContext.Default.Resolving += OnAssemblyResolving; + //Console.CancelKeyPress += delegate { + // // call methods to clean up + //}; + + Process mockServer = null; + try { var shouldWaitForDebugger = GetShouldWaitForDebuggerFlag(args, out var positionalArgs); @@ -39,6 +46,18 @@ static void Main(string[] args) var handler = GetFunctionHandler(positionalArgs); var body = GetEventBody(positionalArgs); + var lambdaRuntime = new MockRuntime(handler, body); + + mockServer = new Process(); + mockServer.StartInfo.FileName = "/var/runtime/mockserver"; + mockServer.StartInfo.CreateNoWindow = true; + mockServer.StartInfo.RedirectStandardInput = true; + mockServer.StartInfo.Environment["DOCKER_LAMBDA_NO_BOOTSTRAP"] = "1"; + mockServer.StartInfo.Environment["DOCKER_LAMBDA_USE_STDIN"] = "1"; + mockServer.Start(); + mockServer.StandardInput.Write(body); + mockServer.StandardInput.Close(); + if (shouldWaitForDebugger) { Console.Error.WriteLine("Waiting for the debugger to attach..."); @@ -51,8 +70,7 @@ static void Main(string[] args) } } - var lambdaRuntime = new MockRuntime(handler, body); - LambdaBootstrap lambdaBootstrap = new LambdaBootstrap(lambdaRuntime, InternalLogger.NO_OP_LOGGER); + var lambdaBootstrap = new LambdaBootstrap(lambdaRuntime, InternalLogger.NO_OP_LOGGER); UnhandledExceptionLogger.Register(); lambdaBootstrap.Initialize(); lambdaBootstrap.Invoke(); @@ -63,6 +81,10 @@ static void Main(string[] args) { Console.Error.WriteLine($"\nUnhandled exception occured in runner:\n{ex}"); } + finally + { + if (mockServer != null) mockServer.Dispose(); + } } /// Called when an assembly could not be resolved diff --git a/dotnetcore2.1/run/Dockerfile b/dotnetcore2.1/run/Dockerfile index 74004101..8ea4836f 100644 --- a/dotnetcore2.1/run/Dockerfile +++ b/dotnetcore2.1/run/Dockerfile @@ -10,6 +10,9 @@ COPY MockBootstraps/ . RUN dotnet publish --output /app/ --configuration Release +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV PATH=/var/lang/bin:$PATH \ @@ -21,6 +24,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY --from=0 /app/MockBootstraps.* /var/runtime/ +COPY --from=1 /var/runtime/init /var/runtime/mockserver + USER sbx_user1051 ENTRYPOINT ["/var/lang/bin/dotnet", "/var/runtime/MockBootstraps.dll"] diff --git a/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs b/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs index 901df2a2..1a3d6797 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs @@ -14,11 +14,17 @@ public MockLambdaContext(string handler, string eventBody) { RequestId = Guid.NewGuid().ToString(); StartTime = DateTime.Now; - InputStream = new MemoryStream(); - - var eventData = Encoding.UTF8.GetBytes(eventBody); - InputStream.Write(eventData, 0, eventData.Length); - InputStream.Position = 0; + Body = eventBody; + Timeout = Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_TIMEOUT", "300")); + MemorySize = Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536")); + FunctionName = EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_NAME", "test"); + FunctionVersion = EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); + LogGroup = EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_GROUP_NAME", $"/aws/lambda/{FunctionName}"); + LogStream = EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_STREAM_NAME", RandomLogStreamName); + Region = EnvHelper.GetOrDefault("AWS_REGION", EnvHelper.GetOrDefault("AWS_DEFAULT_REGION", "us-east-1")); + AccountId = EnvHelper.GetOrDefault("AWS_ACCOUNT_ID", "000000000000"); + Arn = EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_INVOKED_ARN", $"arn:aws:lambda:{Region}:{AccountId}:function:{FunctionName}"); + StayOpen = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("DOCKER_LAMBDA_STAY_OPEN")); Environment.SetEnvironmentVariable("AWS_LAMBDA_FUNCTION_NAME", FunctionName); Environment.SetEnvironmentVariable("AWS_LAMBDA_FUNCTION_VERSION", FunctionVersion); @@ -39,30 +45,51 @@ public TimeSpan RemainingTime() public long Duration => (long)(DateTime.Now - StartTime).TotalMilliseconds; public long BilledDuration => (long)(Math.Ceiling((DateTime.Now - StartTime).TotalMilliseconds / 100)) * 100; + public long DeadlineMs + { + set + { + Timeout = (int)DateTimeOffset.FromUnixTimeMilliseconds(value).Subtract(DateTime.Now).TotalSeconds; + } + } + + public string Body + { + set + { + InputStream = new MemoryStream(); + var eventData = Encoding.UTF8.GetBytes(value); + InputStream.Write(eventData, 0, eventData.Length); + InputStream.Position = 0; + } + } + public long MemoryUsed => Process.GetCurrentProcess().WorkingSet64; - public Stream InputStream { get; } + public Stream InputStream { get; set; } + + public string RequestId { get; set; } + public DateTime StartTime { get; set; } - public string RequestId { get; } - public DateTime StartTime { get; } + public int Timeout { get; set; } - public int Timeout => Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_TIMEOUT", "300")); + public int MemorySize { get; set; } - public int MemorySize => Convert.ToInt32(EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1536")); + public string FunctionName { get; set; } - public string FunctionName => EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_NAME", "test"); + public string FunctionVersion { get; set; } - public string FunctionVersion => EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); + public string LogGroup { get; set; } - public string LogGroup => EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_GROUP_NAME", $"/aws/lambda/{FunctionName}"); + public string LogStream { get; set; } - public string LogStream => EnvHelper.GetOrDefault("AWS_LAMBDA_LOG_STREAM_NAME", RandomLogStreamName); + public string Region { get; set; } - public string Region => EnvHelper.GetOrDefault("AWS_REGION", EnvHelper.GetOrDefault("AWS_DEFAULT_REGION", "us-east-1")); + public string AccountId { get; set; } - public string AccountId => EnvHelper.GetOrDefault("AWS_ACCOUNT_ID", "000000000000"); + public string Arn { get; set; } - public string Arn => EnvHelper.GetOrDefault("AWS_LAMBDA_FUNCTION_INVOKED_ARN", $"arn:aws:lambda:{Region}:{AccountId}:function:{FunctionName}"); + public bool StayOpen { get; } string RandomLogStreamName => $"{DateTime.Now.ToString("yyyy/MM/dd")}/[{FunctionVersion}]{random.Next().ToString("x") + random.Next().ToString("x")}"; } diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 8a28b249..36a82d14 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -3,10 +3,18 @@ using MockLambdaRuntime; using System; using System.Collections; +using System.Collections.Generic; using System.IO; using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Net.Sockets; using System.Runtime.InteropServices; using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; namespace AWSLambda.Internal.Bootstrap { @@ -16,6 +24,10 @@ internal class MockRuntime : ILambdaRuntime private bool invoked; + private bool logTail; + + private string logs; + private Exception invokeError; private readonly IntPtr sharedMem = Marshal.AllocHGlobal(SBSharedMem.UnmanagedStructSize); @@ -24,6 +36,8 @@ internal class MockRuntime : ILambdaRuntime private readonly MockLambdaContext context; + private static readonly HttpClient client = new HttpClient(); + public IEnvironment Environment { get; } = new SystemEnvironment(); public IXRayProfiler XRayProfiler { get; } = new MockXRayProfiler(); @@ -41,10 +55,11 @@ public MockRuntime(string handler, string body) { Handler = handler, InvokeId = context.RequestId, - SuppressUserCodeInit = false, + SuppressUserCodeInit = true, ErrorCode = null }; invoked = false; + client.Timeout = Timeout.InfiniteTimeSpan; } public bool KeepInvokeLoopRunning() @@ -54,14 +69,42 @@ public bool KeepInvokeLoopRunning() public void Init() { + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/ping").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } } - unsafe public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) + unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) { - Console.Error.WriteLine($"START RequestId: {context.RequestId} Version: {context.FunctionVersion}"); + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } + if (invoked) + { + logs = ""; + } invoked = true; + var requestId = result.Headers.GetValues("Lambda-Runtime-Aws-Request-Id").First(); + var deadlineMs = result.Headers.GetValues("Lambda-Runtime-Deadline-Ms").First(); + var functionArn = result.Headers.GetValues("Lambda-Runtime-Invoked-Function-Arn").First(); + var xAmznTraceId = result.Headers.GetValues("Lambda-Runtime-Trace-Id").First(); + var clientContext = HeaderHelper.GetFirstOrDefault(result.Headers, "Lambda-Runtime-Client-Context"); + var cognitoIdentity = HeaderHelper.GetFirstOrDefault(result.Headers, "Lambda-Runtime-Cognito-Identity"); + + logTail = HeaderHelper.GetFirstOrDefault(result.Headers, "Docker-Lambda-Log-Type") == "Tail"; + + var body = result.Content.ReadAsStringAsync().Result; + + context.RequestId = requestId; + context.DeadlineMs = long.Parse(deadlineMs); + context.Body = body; + curSBSharedMem = new SBSharedMem(sharedMem); return new InvokeData(curSBSharedMem) { @@ -72,52 +115,80 @@ unsafe public InvokeData ReceiveInvoke(IDictionary initialEnvironmentVariables, SecretAccessKey = EnvHelper.GetOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"), SessionToken = System.Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN") }, - XAmznTraceId = EnvHelper.GetOrDefault("_X_AMZN_TRACE_ID", ""), + XAmznTraceId = xAmznTraceId, InputStream = context.InputStream, OutputStream = new UnmanagedMemoryStream(curSBSharedMem.EventBody, 0, SBSharedMem.SizeOfEventBody, FileAccess.Write), LambdaContextInternal = new LambdaContextInternal( context.RemainingTime, SendCustomerLogMessage, - new Lazy(), + GetCognitoClientContextInternalLazy(clientContext), context.RequestId, new Lazy(context.Arn), - new Lazy(string.Empty), - new Lazy(string.Empty), + GetCognitoIdentityIdLazy(cognitoIdentity), + GetCognitoIdentityPoolIdLazy(cognitoIdentity), initialEnvironmentVariables ) }; } - /// Try to log everything to stderr except the function result - public void SendCustomerLogMessage(string message) - { - Console.Error.WriteLine(message); - } - public unsafe void ReportDone(string invokeId, string errorType, bool waitForExit) { if (!invoked && invokeError == null) return; - Console.Error.WriteLine($"END RequestId: {context.RequestId}"); + var output = Interop.InteropUtils.ReadUTF8String(curSBSharedMem.EventBody, curSBSharedMem.ResponseBodyLen); - Console.Error.WriteLine($"REPORT RequestId {context.RequestId}\t" + - $"Duration: {context.Duration} ms\t" + - $"Billed Duration: {context.BilledDuration} ms\t" + - $"Memory Size {context.MemorySize} MB\t" + - $"Max Memory Used: {context.MemoryUsed / (1024 * 1024)} MB"); + var suffix = errorType == null ? "response" : "error"; + Task task; + using (var requestMessage = new HttpRequestMessage(HttpMethod.Post, $"http://127.0.0.1:9001/2018-06-01/runtime/invocation/{context.RequestId}/{suffix}")) + { + if (logTail) + { + requestMessage.Headers.Add("Docker-Lambda-Log-Result", Convert.ToBase64String(LogsTail4k())); + } + requestMessage.Content = new StringContent(output); + task = client.SendAsync(requestMessage); + try + { + task.Wait(); + } + catch (AggregateException ae) + { + if (!context.StayOpen && ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && + (ae.InnerException.InnerException is SocketException || + // happens on dotnetcore2.0 + ae.InnerException.InnerException.GetType().ToString().Equals("System.Net.Http.CurlException"))) + { + System.Environment.Exit(string.IsNullOrEmpty(errorType) && invokeError == null ? 0 : 1); + } + else + { + throw ae; + } + } + var response = task.Result; + if (response.StatusCode != HttpStatusCode.Accepted) + { + throw new Exception($"Unknown response from invocation: {response.StatusCode}"); + } + } if (invokeError != null) { Console.Error.WriteLine(invokeError); - System.Environment.Exit(1); return; } + } - var output = Interop.InteropUtils.ReadUTF8String(curSBSharedMem.EventBody, curSBSharedMem.ResponseBodyLen); - - Console.WriteLine(output); - - System.Environment.Exit(string.IsNullOrEmpty(errorType) ? 0 : 1); + private byte[] LogsTail4k() + { + var logBuf = Encoding.UTF8.GetBytes(logs); + if (logBuf.Length <= 4096) + { + return logBuf; + } + var slicedLogBuf = new byte[4096]; + Array.Copy(logBuf, logBuf.Length - 4096, slicedLogBuf, 0, 4096); + return slicedLogBuf; } public void ReportError(string invokeId, ExceptionResponse exceptionResponse) @@ -138,6 +209,23 @@ public void ReportError(string invokeId, ExceptionResponse exceptionResponse) */ } + /// Try to log everything to stderr except the function result + public void SendCustomerLogMessage(string message) + { + if (context.StayOpen) + { + if (logTail) + { + logs += message + System.Environment.NewLine; + } + Console.WriteLine(message); + } + else + { + Console.Error.WriteLine(message); + } + } + private static void AppendStackTraceToStringBuilder(StringBuilder builder, ExceptionResponse ex) { if (!string.IsNullOrWhiteSpace(ex.StackTrace)) @@ -168,9 +256,27 @@ select s.Trim() into s } } + internal static Lazy GetCognitoIdentityIdLazy(string jsonStr) + { + return new Lazy(() => + { + var match = Regex.Match(jsonStr ?? "", "\"identity_id\":\"([^\"]+)\""); + return match.Success ? match.Groups[1].ToString() : string.Empty; + }); + } + + internal static Lazy GetCognitoIdentityPoolIdLazy(string jsonStr) + { + return new Lazy(() => + { + var match = Regex.Match(jsonStr ?? "", "\"identity_pool_id\":\"([^\"]+)\""); + return match.Success ? match.Groups[1].ToString() : string.Empty; + }); + } + internal static Lazy GetCognitoClientContextInternalLazy(string text) { - return new Lazy(delegate + return new Lazy(() => { CognitoClientContextInternal result = null; if (!string.IsNullOrEmpty(text)) @@ -212,4 +318,17 @@ public void ReportError(ExceptionResponse exceptionResponse) } } + class HeaderHelper + { + /// Gets the given environment variable with a fallback if it doesn't exist + public static string GetFirstOrDefault(HttpHeaders headers, string name) + { + if (headers.TryGetValues(name, out IEnumerable values)) + { + return values.FirstOrDefault(); + } + return null; + } + } + } diff --git a/dotnetcore2.1/run/MockBootstraps/Program.cs b/dotnetcore2.1/run/MockBootstraps/Program.cs index 69a15a43..df26073d 100644 --- a/dotnetcore2.1/run/MockBootstraps/Program.cs +++ b/dotnetcore2.1/run/MockBootstraps/Program.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; @@ -32,6 +33,12 @@ static void Main(string[] args) } AssemblyLoadContext.Default.Resolving += OnAssemblyResolving; + //Console.CancelKeyPress += delegate { + // // call methods to clean up + //}; + + Process mockServer = null; + try { var shouldWaitForDebugger = GetShouldWaitForDebuggerFlag(args, out var positionalArgs); @@ -39,6 +46,18 @@ static void Main(string[] args) var handler = GetFunctionHandler(positionalArgs); var body = GetEventBody(positionalArgs); + var lambdaRuntime = new MockRuntime(handler, body); + + mockServer = new Process(); + mockServer.StartInfo.FileName = "/var/runtime/mockserver"; + mockServer.StartInfo.CreateNoWindow = true; + mockServer.StartInfo.RedirectStandardInput = true; + mockServer.StartInfo.Environment["DOCKER_LAMBDA_NO_BOOTSTRAP"] = "1"; + mockServer.StartInfo.Environment["DOCKER_LAMBDA_USE_STDIN"] = "1"; + mockServer.Start(); + mockServer.StandardInput.Write(body); + mockServer.StandardInput.Close(); + if (shouldWaitForDebugger) { Console.Error.WriteLine("Waiting for the debugger to attach..."); @@ -51,8 +70,7 @@ static void Main(string[] args) } } - var lambdaRuntime = new MockRuntime(handler, body); - LambdaBootstrap lambdaBootstrap = new LambdaBootstrap(lambdaRuntime, InternalLogger.NO_OP_LOGGER); + var lambdaBootstrap = new LambdaBootstrap(lambdaRuntime, InternalLogger.NO_OP_LOGGER); UnhandledExceptionLogger.Register(); lambdaBootstrap.Initialize(); lambdaBootstrap.Invoke(); @@ -63,6 +81,10 @@ static void Main(string[] args) { Console.Error.WriteLine($"\nUnhandled exception occured in runner:\n{ex}"); } + finally + { + if (mockServer != null) mockServer.Dispose(); + } } /// Called when an assembly could not be resolved diff --git a/examples/dotnetcore2.1/test.sln b/examples/dotnetcore2.1/test.sln new file mode 100644 index 00000000..47c8aa8e --- /dev/null +++ b/examples/dotnetcore2.1/test.sln @@ -0,0 +1,17 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test", "test.csproj", "{0A83D120-2336-4F30-86F1-DC045C3C9B90}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal From 38ca7d5a586c090ec1e99b2a153f201bdf73631c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 9 Nov 2019 21:57:33 -0500 Subject: [PATCH 046/234] Add Lambda API support to go1.x --- go1.x/run/Dockerfile | 5 + go1.x/run/aws-lambda-mock.go | 311 +++++++++++++++++++++++------------ 2 files changed, 211 insertions(+), 105 deletions(-) diff --git a/go1.x/run/Dockerfile b/go1.x/run/Dockerfile index 30e2f877..b804db69 100644 --- a/go1.x/run/Dockerfile +++ b/go1.x/run/Dockerfile @@ -6,6 +6,9 @@ COPY aws-lambda-mock.go ./ RUN GOARCH=amd64 GOOS=linux go build aws-lambda-mock.go +FROM lambci/lambda:provided + + FROM lambci/lambda-base ENV AWS_EXECUTION_ENV=AWS_Lambda_go1.x @@ -15,6 +18,8 @@ RUN rm -rf /var/runtime /var/lang && \ COPY --from=0 /app/aws-lambda-mock /var/runtime/aws-lambda-go +COPY --from=1 /var/runtime/init /var/runtime/mockserver + USER sbx_user1051 ENTRYPOINT ["/var/runtime/aws-lambda-go"] diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index 129c578a..d29b79f3 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -1,17 +1,20 @@ package main import ( - "bufio" "bytes" + "encoding/base64" "encoding/hex" "encoding/json" "flag" "fmt" + "io" "io/ioutil" - "math" + "log" "math/rand" "net" + "net/http" "net/rpc" + "net/url" "os" "os/exec" "reflect" @@ -23,6 +26,8 @@ import ( "github.com/aws/aws-lambda-go/lambda/messages" ) +var apiBase = "http://127.0.0.1:9001/2018-06-01" + func main() { rand.Seed(time.Now().UTC().UnixNano()) @@ -32,6 +37,7 @@ func main() { delveAPI := flag.String("delveAPI", "1", "delve api version") flag.Parse() positionalArgs := flag.Args() + var handler string if len(positionalArgs) > 0 { handler = positionalArgs[0] @@ -54,6 +60,8 @@ func main() { } } + stayOpen := os.Getenv("DOCKER_LAMBDA_STAY_OPEN") != "" + mockContext := &mockLambdaContext{ RequestID: fakeGUID(), EventBody: eventBody, @@ -64,7 +72,6 @@ func main() { Region: getEnv("AWS_REGION", getEnv("AWS_DEFAULT_REGION", "us-east-1")), AccountID: getEnv("AWS_ACCOUNT_ID", strconv.FormatInt(int64(rand.Int31()), 10)), Start: time.Now(), - Pid: 1, } mockContext.ParseTimeout() @@ -82,6 +89,54 @@ func main() { os.Setenv("AWS_DEFAULT_REGION", mockContext.Region) os.Setenv("_HANDLER", handler) + var err error + + var mockServerCmd = exec.Command("/var/runtime/mockserver") + mockServerCmd.Env = append(os.Environ(), + "DOCKER_LAMBDA_NO_BOOTSTRAP=1", + "DOCKER_LAMBDA_USE_STDIN=1", + ) + mockServerCmd.Stdout = os.Stdout + mockServerCmd.Stderr = os.Stderr + stdin, _ := mockServerCmd.StdinPipe() + if err = mockServerCmd.Start(); err != nil { + log.Fatalf("Error starting mock server: %s", err.Error()) + return + } + stdin.Write([]byte(eventBody)) + stdin.Close() + + defer mockServerCmd.Wait() + + maxRetries := 20 + + for i := 1; i <= maxRetries; i++ { + resp, err := http.Get(apiBase + "/ping") + if err != nil { + if uerr, ok := err.(*url.Error); ok { + if oerr, ok := uerr.Unwrap().(*net.OpError); ok { + // Connection refused, try again + if oerr.Op == "dial" && oerr.Net == "tcp" { + if i == maxRetries { + log.Fatal("Mock server did not start in time") + return + } + time.Sleep(5 * time.Millisecond) + continue + } + } + } + log.Fatal(err) + return + } + if resp.StatusCode != 200 { + log.Fatal("Non 200 status code from local server") + return + } + resp.Body.Close() + break + } + var cmd *exec.Cmd if *debugMode == true { delveArgs := []string{ @@ -110,26 +165,31 @@ func main() { "AWS_SECURITY_TOKEN="+awsSessionToken, ) } - cmd.Stdout = os.Stderr - cmd.Stderr = os.Stderr - cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} - var err error + var logsBuf bytes.Buffer + + if stayOpen { + cmd.Stdout = io.MultiWriter(os.Stdout, &logsBuf) + cmd.Stderr = io.MultiWriter(os.Stderr, &logsBuf) + } else { + cmd.Stdout = os.Stderr + cmd.Stderr = os.Stderr + } + + cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} if err = cmd.Start(); err != nil { - defer abortRequest(mockContext, err) + defer abortInit(mockContext, err) return } - mockContext.Pid = cmd.Process.Pid - - defer syscall.Kill(-mockContext.Pid, syscall.SIGKILL) + defer syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL) var conn net.Conn for { conn, err = net.Dial("tcp", ":"+port) if mockContext.HasExpired() { - defer abortRequest(mockContext, mockContext.TimeoutErr()) + defer abortInit(mockContext, mockContext.TimeoutErr()) return } if err == nil { @@ -142,7 +202,7 @@ func main() { continue } } - defer abortRequest(mockContext, err) + defer abortInit(mockContext, err) return } @@ -151,7 +211,7 @@ func main() { for { err = client.Call("Function.Ping", messages.PingRequest{}, &messages.PingResponse{}) if mockContext.HasExpired() { - defer abortRequest(mockContext, mockContext.TimeoutErr()) + defer abortInit(mockContext, mockContext.TimeoutErr()) return } if err == nil { @@ -160,65 +220,137 @@ func main() { time.Sleep(5 * time.Millisecond) } - // XXX: The Go runtime seems to amortize the startup time, reset it here - mockContext.Start = time.Now() + for { + resp, err := http.Get(apiBase + "/runtime/invocation/next") + if err != nil { + if uerr, ok := err.(*url.Error); ok { + if uerr.Unwrap().Error() == "EOF" { + return + } + } + log.Fatal(err) + return + } + if resp.StatusCode != 200 { + log.Fatal("Non 200 status code from local server") + return + } + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + log.Fatal(err) + return + } + resp.Body.Close() + + deadlineMs, _ := strconv.ParseInt(resp.Header.Get("Lambda-Runtime-Deadline-Ms"), 10, 64) + deadline := time.Unix(0, deadlineMs*int64(time.Millisecond)) + + var invokeRequest = &messages.InvokeRequest{ + Payload: body, + RequestId: resp.Header.Get("Lambda-Runtime-Aws-Request-Id"), + XAmznTraceId: resp.Header.Get("Lambda-Runtime-Trace-Id"), + InvokedFunctionArn: resp.Header.Get("Lambda-Runtime-Invoked-Function-Arn"), + Deadline: messages.InvokeRequest_Timestamp{ + Seconds: deadline.Unix(), + Nanos: int64(deadline.Nanosecond()), + }, + ClientContext: []byte(resp.Header.Get("Lambda-Runtime-Client-Context")), + } - logStartRequest(mockContext) + cognitoIdentityHeader := []byte(resp.Header.Get("Lambda-Runtime-Cognito-Identity")) + if len(cognitoIdentityHeader) > 0 { + var identityObj *cognitoIdentity + err := json.Unmarshal(cognitoIdentityHeader, &identityObj) + if err != nil { + log.Fatal(err) + return + } + invokeRequest.CognitoIdentityId = identityObj.IdentityID + invokeRequest.CognitoIdentityPoolId = identityObj.IdentityPoolID + } - err = client.Call("Function.Invoke", mockContext.Request(), &mockContext.Reply) + logTail := resp.Header.Get("Docker-Lambda-Log-Type") == "Tail" - // We want the process killed before this, so defer it - defer logEndRequest(mockContext, err) -} + logsBuf.Reset() -func abortRequest(mockContext *mockLambdaContext, err error) { - logStartRequest(mockContext) - logEndRequest(mockContext, err) -} + var reply *messages.InvokeResponse + err = client.Call("Function.Invoke", invokeRequest, &reply) -func logStartRequest(mockContext *mockLambdaContext) { - systemLog("START RequestId: " + mockContext.RequestID + " Version: " + mockContext.Version) -} + suffix := "/response" + payload := reply.Payload + if err != nil || reply.Error != nil { + suffix = "/error" + var lambdaErr lambdaError + if err != nil { + lambdaErr = toLambdaError(mockContext, err) + } else if reply.Error != nil { + lambdaErr = lambdaError{ + Message: reply.Error.Message, + Type: reply.Error.Type, + StackTrace: reply.Error.StackTrace, + } + } + payload, _ = json.Marshal(lambdaErr) + } + req, err := http.NewRequest("POST", apiBase+"/runtime/invocation/"+invokeRequest.RequestId+suffix, bytes.NewBuffer(payload)) + if err != nil { + log.Fatal(err) + return + } -func logEndRequest(mockContext *mockLambdaContext, err error) { - curMem, _ := calculateMemoryInMb(mockContext.Pid) - diffMs := math.Min(float64(time.Now().Sub(mockContext.Start).Nanoseconds()), - float64(mockContext.TimeoutDuration.Nanoseconds())) / 1e6 - - systemLog("END RequestId: " + mockContext.RequestID) - systemLog(fmt.Sprintf( - "REPORT RequestId: %s\t"+ - "Duration: %.2f ms\t"+ - "Billed Duration: %.f ms\t"+ - "Memory Size: %s MB\t"+ - "Max Memory Used: %d MB\t", - mockContext.RequestID, diffMs, math.Ceil(diffMs/100)*100, mockContext.MemSize, curMem)) - - if err == nil && mockContext.HasExpired() { - err = mockContext.TimeoutErr() - } + if logTail { + // This is very annoying but seems to be necessary to ensure we get all the stdout/stderr from the process + time.Sleep(1 * time.Millisecond) - if err != nil { - responseErr := messages.InvokeResponse_Error{ - Message: err.Error(), - Type: getErrorType(err), - } - if responseErr.Type == "errorString" { - responseErr.Type = "" - if responseErr.Message == "unexpected EOF" { - responseErr.Message = "RequestId: " + mockContext.RequestID + " Process exited before completing request" + logs := logsBuf.Bytes() + + if len(logs) > 0 { + if len(logs) > 4096 { + logs = logs[len(logs)-4096:] + } + req.Header.Add("Docker-Lambda-Log-Result", base64.StdEncoding.EncodeToString(logs)) } } - systemErr(&responseErr) - os.Exit(1) + + resp, err = http.DefaultClient.Do(req) + if err != nil { + log.Fatal(err) + return + } + if resp.StatusCode != 202 { + log.Fatal("Non 202 status code from local server") + return + } + resp.Body.Close() } +} - if mockContext.Reply.Error != nil { - systemErr(mockContext.Reply.Error) - os.Exit(1) +func abortInit(mockContext *mockLambdaContext, err error) { + lambdaErr := toLambdaError(mockContext, err) + jsonBytes, _ := json.Marshal(lambdaErr) + resp, err := http.Post(apiBase+"/runtime/init/error", "application/json", bytes.NewBuffer(jsonBytes)) + if err != nil { + log.Fatal(err) + return } + resp.Body.Close() +} - fmt.Println(string(mockContext.Reply.Payload)) +func toLambdaError(mockContext *mockLambdaContext, exitErr error) lambdaError { + err := &exitError{err: exitErr, context: mockContext} + responseErr := lambdaError{ + Message: err.Error(), + Type: getErrorType(err), + } + if responseErr.Type == "errorString" { + responseErr.Type = "" + if responseErr.Message == "unexpected EOF" { + responseErr.Message = "RequestId: " + mockContext.RequestID + " Process exited before completing request" + } + } else if responseErr.Type == "ExitError" { + responseErr.Type = "Runtime.ExitError" // XXX: Hack to add 'Runtime.' to error type + } + return responseErr } func getEnv(key, fallback string) string { @@ -265,35 +397,6 @@ func arn(region string, accountID string, fnName string) string { return "arn:aws:lambda:" + region + ":" + nonDigit.ReplaceAllString(accountID, "") + ":function:" + fnName } -// Thanks to https://stackoverflow.com/a/31881979 -func calculateMemoryInMb(pid int) (uint64, error) { - f, err := os.Open(fmt.Sprintf("/proc/%d/smaps", pid)) - if err != nil { - return 0, err - } - defer f.Close() - - res := uint64(0) - pfx := []byte("Pss:") - r := bufio.NewScanner(f) - for r.Scan() { - line := r.Bytes() - if bytes.HasPrefix(line, pfx) { - var size uint64 - _, err := fmt.Sscanf(string(line[4:]), "%d", &size) - if err != nil { - return 0, err - } - res += size - } - } - if err := r.Err(); err != nil { - return 0, err - } - - return res / 1024, nil -} - func getErrorType(err interface{}) string { errorType := reflect.TypeOf(err) if errorType.Kind() == reflect.Ptr { @@ -302,26 +405,21 @@ func getErrorType(err interface{}) string { return errorType.Name() } -func systemLog(msg string) { - fmt.Fprintln(os.Stderr, "\033[32m"+msg+"\033[0m") -} - -// Try to match the output of the Lambda web console -func systemErr(err *messages.InvokeResponse_Error) { - jsonBytes, _ := json.MarshalIndent(lambdaError{ - Message: err.Message, - Type: err.Type, - StackTrace: err.StackTrace, - }, "", " ") - fmt.Fprintln(os.Stderr, "\033[31m"+string(jsonBytes)+"\033[0m") -} - type lambdaError struct { Message string `json:"errorMessage"` Type string `json:"errorType,omitempty"` StackTrace []*messages.InvokeResponse_Error_StackFrame `json:"stackTrace,omitempty"` } +type exitError struct { + err error + context *mockLambdaContext +} + +func (e *exitError) Error() string { + return fmt.Sprintf("RequestId: %s Error: %s", e.context.RequestID, e.err.Error()) +} + type mockLambdaContext struct { RequestID string EventBody string @@ -333,8 +431,6 @@ type mockLambdaContext struct { AccountID string Start time.Time TimeoutDuration time.Duration - Pid int - Reply *messages.InvokeResponse } func (mc *mockLambdaContext) ParseTimeout() { @@ -370,3 +466,8 @@ func (mc *mockLambdaContext) TimeoutErr() error { return fmt.Errorf("%s %s Task timed out after %s.00 seconds", time.Now().Format("2006-01-02T15:04:05.999Z"), mc.RequestID, mc.Timeout) } + +type cognitoIdentity struct { + IdentityID string `json:"identity_id,omitempty"` + IdentityPoolID string `json:"identity_pool_id,omitempty"` +} From f802a10618ff1bc4f814bba5fd504a35d5ad0bad Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 17 Nov 2019 16:39:12 -0500 Subject: [PATCH 047/234] =?UTF-8?q?Add=20note=20to=20test-all.sh=20?= =?UTF-8?q?=E2=80=93=20will=20document=20on=20README=20later?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ base/test-all.sh | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/README.md b/README.md index f6b9efb8..06044cc0 100644 --- a/README.md +++ b/README.md @@ -265,6 +265,8 @@ Administrative keys for lambci/lambda:provided - `AWS_SECRET_ACCESS_KEY` - `AWS_SESSION_TOKEN` - `DOCKER_LAMBDA_USE_STDIN` + - `DOCKER_LAMBDA_STAY_OPEN` + - `DOCKER_LAMBDA_API_PORT` ## Build environment diff --git a/base/test-all.sh b/base/test-all.sh index adabcded..d0ff7f10 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -45,3 +45,14 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:go1.x handler '{"Records": []} cd ${EXAMPLES_DIR}/provided docker run --rm -v "$PWD":/var/task lambci/lambda:provided handler '{"some": "event"}' + +# To invoke and keep open: +# docker run --rm -v $PWD:/var/task -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ + # lambci/lambda:ruby2.5 lambda_function.lambda_handler + +# Contents of post.lua: +# wrk.method = "POST" +# wrk.body = "{}" +# wrk.headers["Content-Type"] = "application/json" + +# wrk -s post.lua 'http://localhost:9001/2015-03-31/functions/myfunction/invocations' From 78995b1c8581b6b187efadf3d10485cbc07c5958 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 17 Nov 2019 16:49:25 -0500 Subject: [PATCH 048/234] Fix formatting in README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 06044cc0..7e417b91 100644 --- a/README.md +++ b/README.md @@ -265,8 +265,8 @@ Administrative keys for lambci/lambda:provided - `AWS_SECRET_ACCESS_KEY` - `AWS_SESSION_TOKEN` - `DOCKER_LAMBDA_USE_STDIN` - - `DOCKER_LAMBDA_STAY_OPEN` - - `DOCKER_LAMBDA_API_PORT` + - `DOCKER_LAMBDA_STAY_OPEN` + - `DOCKER_LAMBDA_API_PORT` ## Build environment From 9c9585e927eb4f89f5707e1fcdc09ab73e117b01 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 18 Nov 2019 16:02:58 -0500 Subject: [PATCH 049/234] Allow up to a second of pings for each runtime to reach the server --- .../run/MockBootstraps/MockRuntime.cs | 22 +++++++++++++++--- .../run/MockBootstraps/MockRuntime.cs | 22 +++++++++++++++--- go1.x/run/aws-lambda-mock.go | 23 ++++++------------- .../java/lambdainternal/LambdaRuntime.java | 5 ++-- nodejs4.3/run/awslambda-mock.js | 16 ++++++++----- nodejs6.10/run/awslambda-mock.js | 16 ++++++++----- nodejs8.10/run/awslambda-mock.js | 16 ++++++++----- python2.7/run/runtime_mock.py | 5 ++-- python3.6/run/runtime_mock.py | 5 ++-- 9 files changed, 84 insertions(+), 46 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 36a82d14..967c31f7 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -69,10 +69,26 @@ public bool KeepInvokeLoopRunning() public void Init() { - var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/ping").Result; - if (result.StatusCode != HttpStatusCode.OK) + var timeout = DateTimeOffset.Now.AddSeconds(1); + while (true) { - throw new Exception("Got a bad response from the bootstrap"); + try + { + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/ping").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } + break; + } + catch (Exception e) + { + if (DateTimeOffset.Now > timeout) + { + throw e; + } + } + Thread.Sleep(5); } } diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 36a82d14..967c31f7 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -69,10 +69,26 @@ public bool KeepInvokeLoopRunning() public void Init() { - var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/ping").Result; - if (result.StatusCode != HttpStatusCode.OK) + var timeout = DateTimeOffset.Now.AddSeconds(1); + while (true) { - throw new Exception("Got a bad response from the bootstrap"); + try + { + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/ping").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } + break; + } + catch (Exception e) + { + if (DateTimeOffset.Now > timeout) + { + throw e; + } + } + Thread.Sleep(5); } } diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index d29b79f3..c42d0392 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -108,26 +108,17 @@ func main() { defer mockServerCmd.Wait() - maxRetries := 20 + pingTimeout := time.Now().Add(1 * time.Second) - for i := 1; i <= maxRetries; i++ { + for { resp, err := http.Get(apiBase + "/ping") if err != nil { - if uerr, ok := err.(*url.Error); ok { - if oerr, ok := uerr.Unwrap().(*net.OpError); ok { - // Connection refused, try again - if oerr.Op == "dial" && oerr.Net == "tcp" { - if i == maxRetries { - log.Fatal("Mock server did not start in time") - return - } - time.Sleep(5 * time.Millisecond) - continue - } - } + if time.Now().After(pingTimeout) { + log.Fatal("Mock server did not start in time") + return } - log.Fatal(err) - return + time.Sleep(5 * time.Millisecond) + continue } if resp.StatusCode != 200 { log.Fatal("Non 200 status code from local server") diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index 0e2f67b1..cf3883d7 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -99,7 +99,8 @@ public class LambdaRuntime { } public static void initRuntime() { - for (int i = 0; i < 20; i++) { + long pingTimeout = System.currentTimeMillis() + 1000; + while (true) { try { HttpURLConnection conn = (HttpURLConnection) new URL(API_BASE + "/ping").openConnection(); int responseCode = conn.getResponseCode(); @@ -108,7 +109,7 @@ public static void initRuntime() { } break; } catch (Exception e) { - if (i < 19) + if (System.currentTimeMillis() < pingTimeout) continue; throw new RuntimeException(e); } diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index f953acd9..9f7c89cb 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -82,11 +82,15 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false -var pingPromise = new Promise(resolve => ping(PING_RETRIES, resolve)) -var reportDonePromise = new Promise(resolve => resolve()) +var pingPromise +var reportDonePromise module.exports = { - initRuntime: function () { return OPTIONS }, + initRuntime: function () { + pingPromise = new Promise(resolve => ping(Date.now() + 1000, resolve)) + reportDonePromise = new Promise(resolve => resolve()) + return OPTIONS + }, waitForInvoke: function (cb) { Promise.all([pingPromise, reportDonePromise]).then(() => { http.get({ @@ -169,13 +173,13 @@ module.exports = { maxLoggerErrorSize: 256 * 1024, } -function ping(retries, cb) { +function ping(timeout, cb) { http.get({ hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/ping' }, cb).on('error', () => { - if (!retries) { + if (Date.now() > timeout) { console.error('Mock server did not respond to pings in time') process.exit(1) } - setTimeout(ping, 5, retries - 1, cb) + setTimeout(ping, 5, timeout, cb) }) } diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index f953acd9..9f7c89cb 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -82,11 +82,15 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false -var pingPromise = new Promise(resolve => ping(PING_RETRIES, resolve)) -var reportDonePromise = new Promise(resolve => resolve()) +var pingPromise +var reportDonePromise module.exports = { - initRuntime: function () { return OPTIONS }, + initRuntime: function () { + pingPromise = new Promise(resolve => ping(Date.now() + 1000, resolve)) + reportDonePromise = new Promise(resolve => resolve()) + return OPTIONS + }, waitForInvoke: function (cb) { Promise.all([pingPromise, reportDonePromise]).then(() => { http.get({ @@ -169,13 +173,13 @@ module.exports = { maxLoggerErrorSize: 256 * 1024, } -function ping(retries, cb) { +function ping(timeout, cb) { http.get({ hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/ping' }, cb).on('error', () => { - if (!retries) { + if (Date.now() > timeout) { console.error('Mock server did not respond to pings in time') process.exit(1) } - setTimeout(ping, 5, retries - 1, cb) + setTimeout(ping, 5, timeout, cb) }) } diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index f953acd9..9f7c89cb 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -82,11 +82,15 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false -var pingPromise = new Promise(resolve => ping(PING_RETRIES, resolve)) -var reportDonePromise = new Promise(resolve => resolve()) +var pingPromise +var reportDonePromise module.exports = { - initRuntime: function () { return OPTIONS }, + initRuntime: function () { + pingPromise = new Promise(resolve => ping(Date.now() + 1000, resolve)) + reportDonePromise = new Promise(resolve => resolve()) + return OPTIONS + }, waitForInvoke: function (cb) { Promise.all([pingPromise, reportDonePromise]).then(() => { http.get({ @@ -169,13 +173,13 @@ module.exports = { maxLoggerErrorSize: 256 * 1024, } -function ping(retries, cb) { +function ping(timeout, cb) { http.get({ hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/ping' }, cb).on('error', () => { - if (!retries) { + if (Date.now() > timeout) { console.error('Mock server did not respond to pings in time') process.exit(1) } - setTimeout(ping, 5, retries - 1, cb) + setTimeout(ping, 5, timeout, cb) }) } diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index 1a7a4742..a8e01e32 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -118,7 +118,8 @@ def report_user_invoke_end(): def receive_start(): global MOCKSERVER_CONN - for retry in range(20): + ping_timeout = time.time() + 1 + while True: try: MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) MOCKSERVER_CONN.request("GET", "/2018-06-01/ping") @@ -128,7 +129,7 @@ def receive_start(): resp.read() break except Exception: - if retry >= 19: + if time.time() > ping_timeout: raise else: time.sleep(.005) diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index 1a7a4742..a8e01e32 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -118,7 +118,8 @@ def report_user_invoke_end(): def receive_start(): global MOCKSERVER_CONN - for retry in range(20): + ping_timeout = time.time() + 1 + while True: try: MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) MOCKSERVER_CONN.request("GET", "/2018-06-01/ping") @@ -128,7 +129,7 @@ def receive_start(): resp.read() break except Exception: - if retry >= 19: + if time.time() > ping_timeout: raise else: time.sleep(.005) From ce1203ba9d49ded2b836ff54ff7afd8715cdb758 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 18 Nov 2019 16:45:13 -0500 Subject: [PATCH 050/234] Make init durations more accurate --- .../run/MockBootstraps/MockRuntime.cs | 47 +++++--- .../run/MockBootstraps/MockRuntime.cs | 47 +++++--- go1.x/run/aws-lambda-mock.go | 22 +++- .../java/lambdainternal/LambdaRuntime.java | 18 ++- nodejs4.3/run/awslambda-mock.js | 26 ++++- nodejs6.10/run/awslambda-mock.js | 26 ++++- nodejs8.10/run/awslambda-mock.js | 26 ++++- provided/run/init.go | 103 ++++++++++++------ python2.7/run/runtime_mock.py | 30 +++-- python3.6/run/runtime_mock.py | 30 +++-- 10 files changed, 275 insertions(+), 100 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index 967c31f7..fd7165e0 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -26,6 +26,10 @@ internal class MockRuntime : ILambdaRuntime private bool logTail; + private bool initTimeSent; + + private DateTimeOffset receivedInvokeAt = DateTimeOffset.MinValue; + private string logs; private Exception invokeError; @@ -38,9 +42,11 @@ internal class MockRuntime : ILambdaRuntime private static readonly HttpClient client = new HttpClient(); + private readonly MockXRayProfiler xRayProfiler = new MockXRayProfiler(); + public IEnvironment Environment { get; } = new SystemEnvironment(); - public IXRayProfiler XRayProfiler { get; } = new MockXRayProfiler(); + public IXRayProfiler XRayProfiler { get { return xRayProfiler; } } public InitData InitData { @@ -94,17 +100,20 @@ public void Init() unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) { - var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; - if (result.StatusCode != HttpStatusCode.OK) + if (!invoked) { - throw new Exception("Got a bad response from the bootstrap"); + receivedInvokeAt = DateTimeOffset.Now; + invoked = true; } - - if (invoked) + else { logs = ""; } - invoked = true; + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } var requestId = result.Headers.GetValues("Lambda-Runtime-Aws-Request-Id").First(); var deadlineMs = result.Headers.GetValues("Lambda-Runtime-Deadline-Ms").First(); @@ -162,6 +171,12 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi { requestMessage.Headers.Add("Docker-Lambda-Log-Result", Convert.ToBase64String(LogsTail4k())); } + if (!initTimeSent) + { + requestMessage.Headers.Add("Docker-Lambda-Invoke-Wait", receivedInvokeAt.ToUnixTimeMilliseconds().ToString()); + requestMessage.Headers.Add("Docker-Lambda-Init-End", xRayProfiler.InitEnd.ToUnixTimeMilliseconds().ToString()); + initTimeSent = true; + } requestMessage.Content = new StringContent(output); task = client.SendAsync(requestMessage); try @@ -246,16 +261,13 @@ private static void AppendStackTraceToStringBuilder(StringBuilder builder, Excep { if (!string.IsNullOrWhiteSpace(ex.StackTrace)) { - string[] array = (from s in ex.StackTrace.Split(new string[] - { - System.Environment.NewLine - }, StringSplitOptions.None) - select s.Trim() into s - where !string.IsNullOrWhiteSpace(s) - select STACK_TRACE_INDENT + s).ToArray(); - foreach (string value in array) + foreach (var line in ex.StackTrace + .Split(new string[] { System.Environment.NewLine }, StringSplitOptions.None) + .Select(s => s.Trim()) + .Where(s => !string.IsNullOrWhiteSpace(s)) + .Select(s => STACK_TRACE_INDENT + s)) { - builder.AppendLine(value); + builder.AppendLine(line); } } if (ex.InnerException != null) @@ -313,12 +325,15 @@ internal static Lazy GetCognitoClientContextIntern internal class MockXRayProfiler : IXRayProfiler { + public DateTimeOffset InitEnd { get; private set; } + public void ReportUserInitStart() { } public void ReportUserInitEnd() { + InitEnd = DateTimeOffset.Now; } public void ReportUserInvokeStart() diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 967c31f7..fd7165e0 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -26,6 +26,10 @@ internal class MockRuntime : ILambdaRuntime private bool logTail; + private bool initTimeSent; + + private DateTimeOffset receivedInvokeAt = DateTimeOffset.MinValue; + private string logs; private Exception invokeError; @@ -38,9 +42,11 @@ internal class MockRuntime : ILambdaRuntime private static readonly HttpClient client = new HttpClient(); + private readonly MockXRayProfiler xRayProfiler = new MockXRayProfiler(); + public IEnvironment Environment { get; } = new SystemEnvironment(); - public IXRayProfiler XRayProfiler { get; } = new MockXRayProfiler(); + public IXRayProfiler XRayProfiler { get { return xRayProfiler; } } public InitData InitData { @@ -94,17 +100,20 @@ public void Init() unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVariables, RuntimeReceiveInvokeBuffers buffers) { - var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; - if (result.StatusCode != HttpStatusCode.OK) + if (!invoked) { - throw new Exception("Got a bad response from the bootstrap"); + receivedInvokeAt = DateTimeOffset.Now; + invoked = true; } - - if (invoked) + else { logs = ""; } - invoked = true; + var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + if (result.StatusCode != HttpStatusCode.OK) + { + throw new Exception("Got a bad response from the bootstrap"); + } var requestId = result.Headers.GetValues("Lambda-Runtime-Aws-Request-Id").First(); var deadlineMs = result.Headers.GetValues("Lambda-Runtime-Deadline-Ms").First(); @@ -162,6 +171,12 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi { requestMessage.Headers.Add("Docker-Lambda-Log-Result", Convert.ToBase64String(LogsTail4k())); } + if (!initTimeSent) + { + requestMessage.Headers.Add("Docker-Lambda-Invoke-Wait", receivedInvokeAt.ToUnixTimeMilliseconds().ToString()); + requestMessage.Headers.Add("Docker-Lambda-Init-End", xRayProfiler.InitEnd.ToUnixTimeMilliseconds().ToString()); + initTimeSent = true; + } requestMessage.Content = new StringContent(output); task = client.SendAsync(requestMessage); try @@ -246,16 +261,13 @@ private static void AppendStackTraceToStringBuilder(StringBuilder builder, Excep { if (!string.IsNullOrWhiteSpace(ex.StackTrace)) { - string[] array = (from s in ex.StackTrace.Split(new string[] - { - System.Environment.NewLine - }, StringSplitOptions.None) - select s.Trim() into s - where !string.IsNullOrWhiteSpace(s) - select STACK_TRACE_INDENT + s).ToArray(); - foreach (string value in array) + foreach (var line in ex.StackTrace + .Split(new string[] { System.Environment.NewLine }, StringSplitOptions.None) + .Select(s => s.Trim()) + .Where(s => !string.IsNullOrWhiteSpace(s)) + .Select(s => STACK_TRACE_INDENT + s)) { - builder.AppendLine(value); + builder.AppendLine(line); } } if (ex.InnerException != null) @@ -313,12 +325,15 @@ internal static Lazy GetCognitoClientContextIntern internal class MockXRayProfiler : IXRayProfiler { + public DateTimeOffset InitEnd { get; private set; } + public void ReportUserInitStart() { } public void ReportUserInitEnd() { + InitEnd = DateTimeOffset.Now; } public void ReportUserInvokeStart() diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index c42d0392..91c81860 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -211,7 +211,18 @@ func main() { time.Sleep(5 * time.Millisecond) } + var initEndSent bool + var invoked bool + var receivedInvokeAt time.Time + for { + if !invoked { + receivedInvokeAt = time.Now() + invoked = true + } else { + logsBuf.Reset() + } + resp, err := http.Get(apiBase + "/runtime/invocation/next") if err != nil { if uerr, ok := err.(*url.Error); ok { @@ -262,7 +273,10 @@ func main() { logTail := resp.Header.Get("Docker-Lambda-Log-Type") == "Tail" - logsBuf.Reset() + var initEnd time.Time + if !initEndSent { + initEnd = time.Now() + } var reply *messages.InvokeResponse err = client.Call("Function.Invoke", invokeRequest, &reply) @@ -303,6 +317,12 @@ func main() { } } + if !initEndSent { + req.Header.Add("Docker-Lambda-Invoke-Wait", strconv.FormatInt(receivedInvokeAt.UnixNano()/int64(time.Millisecond), 10)) + req.Header.Add("Docker-Lambda-Init-End", strconv.FormatInt(initEnd.UnixNano()/int64(time.Millisecond), 10)) + initEndSent = true + } + resp, err = http.DefaultClient.Do(req) if err != nil { log.Fatal(err) diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index cf3883d7..5349d331 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -41,6 +41,9 @@ public class LambdaRuntime { private static long deadlineMs; private static boolean invoked = false; private static boolean errored = false; + private static boolean initEndSent = false; + private static long initEnd; + private static long receivedInvokeAt; public static final int MEMORY_LIMIT; public static final String LOG_GROUP_NAME; @@ -126,7 +129,12 @@ public static WaitForStartResult waitForStart() { } public static InvokeRequest waitForInvoke() { - invoked = true; + if (!invoked) { + receivedInvokeAt = System.currentTimeMillis(); + invoked = true; + } else { + LOGS.reset(); + } try { HttpURLConnection conn = (HttpURLConnection) new URL(API_BASE + "/runtime/invocation/next") .openConnection(); @@ -151,7 +159,6 @@ public static InvokeRequest waitForInvoke() { } needsDebugLogs = "Tail".equals(conn.getHeaderField("Docker-Lambda-Log-Type")); - LOGS.reset(); String responseBody = ""; try (Scanner scanner = new Scanner(conn.getInputStream())) { @@ -192,6 +199,12 @@ public static void reportDone(final String invokeid, final byte[] result, final } conn.setRequestProperty("Docker-Lambda-Log-Result", Base64.getEncoder().encodeToString(logs)); } + + if (!initEndSent) { + conn.setRequestProperty("Docker-Lambda-Invoke-Wait", Long.toString(receivedInvokeAt)); + conn.setRequestProperty("Docker-Lambda-Init-End", Long.toString(initEnd)); + initEndSent = true; + } byte[] resultCopy = result == null ? new byte[0] : new String(result, 0, resultLength).getBytes(StandardCharsets.UTF_8); @@ -235,6 +248,7 @@ public static void reportUserInitStart() { } public static void reportUserInitEnd() { + initEnd = System.currentTimeMillis(); } public static void reportUserInvokeStart() { diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index 9f7c89cb..025f3070 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -82,6 +82,9 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false +var initEndSent = false +var receivedInvokeAt +var initEnd var pingPromise var reportDonePromise @@ -93,6 +96,12 @@ module.exports = { }, waitForInvoke: function (cb) { Promise.all([pingPromise, reportDonePromise]).then(() => { + if (!invoked) { + receivedInvokeAt = Date.now() + invoked = true + } else { + LOGS = '' + } http.get({ hostname: '127.0.0.1', port: 9001, @@ -102,10 +111,6 @@ module.exports = { console.error(`Mock server invocation/next returned a ${res.statusCode} response`) return process.exit(1) } - if (invoked) { - LOGS = '' - } - invoked = true OPTIONS.invokeId = OPTIONS.initInvokeId = OPTIONS.invokeid = res.headers['lambda-runtime-aws-request-id'] OPTIONS.invokedFunctionArn = res.headers['lambda-runtime-invoked-function-arn'] OPTIONS['x-amzn-trace-id'] = res.headers['lambda-runtime-trace-id'] @@ -140,12 +145,21 @@ module.exports = { if (!invoked) return if (errType) errored = true reportDonePromise = new Promise(resolve => { + var headers = {} + if (LOG_TAIL) { + headers['Docker-Lambda-Log-Result'] = newBuffer(LOGS).slice(-4096).toString('base64') + } + if (!initEndSent) { + headers['Docker-Lambda-Invoke-Wait'] = receivedInvokeAt + headers['Docker-Lambda-Init-End'] = initEnd + initEndSent = true + } http.request({ method: 'POST', hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/invocation/' + invokeId + (errType == null ? '/response' : '/error'), - headers: LOG_TAIL ? { 'Docker-Lambda-Log-Result': newBuffer(LOGS).slice(-4096).toString('base64') } : {}, + headers, }, res => { if (res.statusCode !== 202) { console.error(err || 'Got status code: ' + res.statusCode) @@ -164,7 +178,7 @@ module.exports = { if (errStack) systemErr(errStack) }, reportUserInitStart: function () { }, - reportUserInitEnd: function () { }, + reportUserInitEnd: function () { initEnd = Date.now() }, reportUserInvokeStart: function () { }, reportUserInvokeEnd: function () { }, reportException: function () { }, diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index 9f7c89cb..025f3070 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -82,6 +82,9 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false +var initEndSent = false +var receivedInvokeAt +var initEnd var pingPromise var reportDonePromise @@ -93,6 +96,12 @@ module.exports = { }, waitForInvoke: function (cb) { Promise.all([pingPromise, reportDonePromise]).then(() => { + if (!invoked) { + receivedInvokeAt = Date.now() + invoked = true + } else { + LOGS = '' + } http.get({ hostname: '127.0.0.1', port: 9001, @@ -102,10 +111,6 @@ module.exports = { console.error(`Mock server invocation/next returned a ${res.statusCode} response`) return process.exit(1) } - if (invoked) { - LOGS = '' - } - invoked = true OPTIONS.invokeId = OPTIONS.initInvokeId = OPTIONS.invokeid = res.headers['lambda-runtime-aws-request-id'] OPTIONS.invokedFunctionArn = res.headers['lambda-runtime-invoked-function-arn'] OPTIONS['x-amzn-trace-id'] = res.headers['lambda-runtime-trace-id'] @@ -140,12 +145,21 @@ module.exports = { if (!invoked) return if (errType) errored = true reportDonePromise = new Promise(resolve => { + var headers = {} + if (LOG_TAIL) { + headers['Docker-Lambda-Log-Result'] = newBuffer(LOGS).slice(-4096).toString('base64') + } + if (!initEndSent) { + headers['Docker-Lambda-Invoke-Wait'] = receivedInvokeAt + headers['Docker-Lambda-Init-End'] = initEnd + initEndSent = true + } http.request({ method: 'POST', hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/invocation/' + invokeId + (errType == null ? '/response' : '/error'), - headers: LOG_TAIL ? { 'Docker-Lambda-Log-Result': newBuffer(LOGS).slice(-4096).toString('base64') } : {}, + headers, }, res => { if (res.statusCode !== 202) { console.error(err || 'Got status code: ' + res.statusCode) @@ -164,7 +178,7 @@ module.exports = { if (errStack) systemErr(errStack) }, reportUserInitStart: function () { }, - reportUserInitEnd: function () { }, + reportUserInitEnd: function () { initEnd = Date.now() }, reportUserInvokeStart: function () { }, reportUserInvokeEnd: function () { }, reportException: function () { }, diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index 9f7c89cb..025f3070 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -82,6 +82,9 @@ OPTIONS.invokeid = OPTIONS.invokeId var invoked = false var errored = false +var initEndSent = false +var receivedInvokeAt +var initEnd var pingPromise var reportDonePromise @@ -93,6 +96,12 @@ module.exports = { }, waitForInvoke: function (cb) { Promise.all([pingPromise, reportDonePromise]).then(() => { + if (!invoked) { + receivedInvokeAt = Date.now() + invoked = true + } else { + LOGS = '' + } http.get({ hostname: '127.0.0.1', port: 9001, @@ -102,10 +111,6 @@ module.exports = { console.error(`Mock server invocation/next returned a ${res.statusCode} response`) return process.exit(1) } - if (invoked) { - LOGS = '' - } - invoked = true OPTIONS.invokeId = OPTIONS.initInvokeId = OPTIONS.invokeid = res.headers['lambda-runtime-aws-request-id'] OPTIONS.invokedFunctionArn = res.headers['lambda-runtime-invoked-function-arn'] OPTIONS['x-amzn-trace-id'] = res.headers['lambda-runtime-trace-id'] @@ -140,12 +145,21 @@ module.exports = { if (!invoked) return if (errType) errored = true reportDonePromise = new Promise(resolve => { + var headers = {} + if (LOG_TAIL) { + headers['Docker-Lambda-Log-Result'] = newBuffer(LOGS).slice(-4096).toString('base64') + } + if (!initEndSent) { + headers['Docker-Lambda-Invoke-Wait'] = receivedInvokeAt + headers['Docker-Lambda-Init-End'] = initEnd + initEndSent = true + } http.request({ method: 'POST', hostname: '127.0.0.1', port: 9001, path: '/2018-06-01/runtime/invocation/' + invokeId + (errType == null ? '/response' : '/error'), - headers: LOG_TAIL ? { 'Docker-Lambda-Log-Result': newBuffer(LOGS).slice(-4096).toString('base64') } : {}, + headers, }, res => { if (res.statusCode !== 202) { console.error(err || 'Got status code: ' + res.statusCode) @@ -164,7 +178,7 @@ module.exports = { if (errStack) systemErr(errStack) }, reportUserInitStart: function () { }, - reportUserInitEnd: function () { }, + reportUserInitEnd: function () { initEnd = Date.now() }, reportUserInvokeStart: function () { }, reportUserInvokeEnd: function () { }, reportException: function () { }, diff --git a/provided/run/init.go b/provided/run/init.go index dd691446..bd0fd7e5 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -56,6 +56,7 @@ var bootstrapPath *string var bootstrapArgs []string var bootstrapMutex sync.Mutex var logsBuf bytes.Buffer +var serverInitEnd time.Time func newContext() *mockLambdaContext { context := &mockLambdaContext{ @@ -168,6 +169,8 @@ func main() { exitCode := 0 + serverInitEnd = time.Now() + if stayOpen { systemLog(fmt.Sprintf("Lambda API listening on port %s...", apiPort)) <-interrupt @@ -416,7 +419,7 @@ func createRuntimeRouter() *chi.Mux { w.Header().Set("Content-Type", "application/json") w.Header().Set("Lambda-Runtime-Aws-Request-Id", context.RequestID) - w.Header().Set("Lambda-Runtime-Deadline-Ms", strconv.FormatInt(context.Deadline().UnixNano()/1e6, 10)) + w.Header().Set("Lambda-Runtime-Deadline-Ms", strconv.FormatInt(context.Deadline().UnixNano()/int64(time.Millisecond), 10)) w.Header().Set("Lambda-Runtime-Invoked-Function-Arn", context.InvokedFunctionArn) w.Header().Set("Lambda-Runtime-Trace-Id", context.XAmznTraceID) @@ -454,7 +457,8 @@ func createRuntimeRouter() *chi.Mux { debug("Setting Reply in /response") curContext.Reply = &invokeResponse{Payload: body} - curContext.LogTail = extractLogTail(r, curContext) + curContext.SetLogTail(r) + curContext.SetInitEnd(r) render.Render(w, r, acceptedResponse) w.(http.Flusher).Flush() @@ -489,7 +493,8 @@ func handleErrorRequest(w http.ResponseWriter, r *http.Request) { curContext.Reply = &invokeResponse{Error: lambdaErr} - curContext.LogTail = extractLogTail(r, curContext) + curContext.SetLogTail(r) + curContext.SetInitEnd(r) render.Render(w, r, response) w.(http.Flusher).Flush() @@ -531,31 +536,6 @@ func awsRequestIDValidator(next http.Handler) http.Handler { }) } -func extractLogTail(r *http.Request, context *mockLambdaContext) string { - defer logsBuf.Reset() - - if context.LogType != "Tail" { - return "" - } - if noBootstrap { - return r.Header.Get("Docker-Lambda-Log-Result") - } - - // This is very annoying but seems to be necessary to ensure we get all the stdout/stderr from the subprocess - time.Sleep(1 * time.Millisecond) - - logs := logsBuf.Bytes() - - if len(logs) == 0 { - return "" - } - - if len(logs) > 4096 { - logs = logs[len(logs)-4096:] - } - return base64.StdEncoding.EncodeToString(logs) -} - type statusResponse struct { HTTPStatusCode int `json:"-"` Status string `json:"status"` @@ -731,6 +711,7 @@ type mockLambdaContext struct { ClientContext string CognitoIdentity string Start time.Time + InvokeWait time.Time InitEnd time.Time TimeoutDuration time.Duration Reply *invokeResponse @@ -768,6 +749,55 @@ func (mc *mockLambdaContext) TimeoutErr() error { mc.RequestID, mc.Timeout) } +func (mc *mockLambdaContext) SetLogTail(r *http.Request) { + defer logsBuf.Reset() + + mc.LogTail = "" + + if mc.LogType != "Tail" { + return + } + if noBootstrap { + mc.LogTail = r.Header.Get("Docker-Lambda-Log-Result") + return + } + + // This is very annoying but seems to be necessary to ensure we get all the stdout/stderr from the subprocess + time.Sleep(1 * time.Millisecond) + + logs := logsBuf.Bytes() + + if len(logs) == 0 { + return + } + + if len(logs) > 4096 { + logs = logs[len(logs)-4096:] + } + mc.LogTail = base64.StdEncoding.EncodeToString(logs) +} + +func (mc *mockLambdaContext) SetInitEnd(r *http.Request) { + invokeWaitHeader := r.Header.Get("Docker-Lambda-Invoke-Wait") + if invokeWaitHeader != "" { + invokeWaitMs, err := strconv.ParseInt(invokeWaitHeader, 10, 64) + if err != nil { + log.Fatal(fmt.Errorf("Could not parse Docker-Lambda-Invoke-Wait header as int. Error: %s", err)) + return + } + mc.InvokeWait = time.Unix(0, invokeWaitMs*int64(time.Millisecond)) + } + initEndHeader := r.Header.Get("Docker-Lambda-Init-End") + if initEndHeader != "" { + initEndMs, err := strconv.ParseInt(initEndHeader, 10, 64) + if err != nil { + log.Fatal(fmt.Errorf("Could not parse Docker-Lambda-Init-End header as int. Error: %s", err)) + return + } + mc.InitEnd = time.Unix(0, initEndMs*int64(time.Millisecond)) + } +} + func (mc *mockLambdaContext) SetError(exitErr error) { err := &exitError{err: exitErr, context: mc} responseErr := lambdaError{ @@ -829,16 +859,23 @@ func (mc *mockLambdaContext) LogEndRequest() { mc.MaxMem = maxMem } - initDiffMs := math.Min(float64(mc.InitEnd.Sub(mc.Start).Nanoseconds()), - float64(mc.TimeoutDuration.Nanoseconds())) / 1e6 - diffMs := math.Min(float64(time.Now().Sub(mc.InitEnd).Nanoseconds()), - float64(mc.TimeoutDuration.Nanoseconds())) / 1e6 + float64(mc.TimeoutDuration.Nanoseconds())) / float64(time.Millisecond) initStr := "" if !initPrinted { - initPrinted = true + proc1stat, _ := os.Stat("/proc/1") + processStartTime := proc1stat.ModTime() + if mc.InvokeWait.IsZero() { + mc.InvokeWait = serverInitEnd + } + if mc.InvokeWait.Before(processStartTime) { + mc.InvokeWait = processStartTime + } + initDiffNs := mc.InvokeWait.Sub(proc1stat.ModTime()).Nanoseconds() + mc.InitEnd.Sub(mc.Start).Nanoseconds() + initDiffMs := math.Min(float64(initDiffNs), float64(mc.TimeoutDuration.Nanoseconds())) / float64(time.Millisecond) initStr = fmt.Sprintf("Init Duration: %.2f ms\t", initDiffMs) + initPrinted = true } systemLog("END RequestId: " + mc.RequestID) diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index a8e01e32..0c2a8662 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -66,6 +66,9 @@ TRACE_ID = None INVOKED = False ERRORED = False +INIT_END_SENT = False +INIT_END = time.time() +RECEIVED_INVOKE_AT = time.time() TODAY = datetime.date.today() # export needed stuff os.environ['AWS_LAMBDA_LOG_GROUP_NAME'] = '/aws/lambda/%s' % FUNCTION_NAME @@ -104,7 +107,8 @@ def report_user_init_start(): def report_user_init_end(): - return + global INIT_END + INIT_END = time.time() def report_user_invoke_start(): @@ -157,6 +161,16 @@ def receive_invoke(): global CONTEXT_OBJS global LOGS global LOG_TAIL + global RECEIVED_INVOKE_AT + + ORIG_STDOUT.flush() + ORIG_STDERR.flush() + + if not INVOKED: + RECEIVED_INVOKE_AT = time.time() + INVOKED = True + else: + LOGS = "" try: MOCKSERVER_CONN.request("GET", "/2018-06-01/runtime/invocation/next") @@ -169,11 +183,6 @@ def receive_invoke(): return () raise - if INVOKED: - LOGS = "" - - INVOKED = True - INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') DEADLINE_MS = resp.getheader('Lambda-Runtime-Deadline-Ms') INVOKED_FUNCTION_ARN = resp.getheader( @@ -214,6 +223,7 @@ def report_fault(invokeid, msg, except_value, trace): def report_done(invokeid, errortype, result, is_fatal): global ERRORED + global INIT_END_SENT if not INVOKED: return @@ -226,7 +236,13 @@ def report_done(invokeid, errortype, result, is_fatal): result_obj['stackTrace'] = traceback.format_list(stack_trace) result = json.dumps(result_obj) - headers = {"Docker-Lambda-Log-Result": base64.b64encode(LOGS.encode())} if LOG_TAIL else {} + headers = {} + if LOG_TAIL: + headers['Docker-Lambda-Log-Result'] = base64.b64encode(LOGS.encode()) + if not INIT_END_SENT: + headers['Docker-Lambda-Invoke-Wait'] = int(RECEIVED_INVOKE_AT * 1000) + headers['Docker-Lambda-Init-End'] = int(INIT_END * 1000) + INIT_END_SENT = True MOCKSERVER_CONN.request("POST", "/2018-06-01/runtime/invocation/%s/%s" % \ (invokeid, "response" if errortype is None else "error"), result, headers) diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index a8e01e32..0c2a8662 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -66,6 +66,9 @@ TRACE_ID = None INVOKED = False ERRORED = False +INIT_END_SENT = False +INIT_END = time.time() +RECEIVED_INVOKE_AT = time.time() TODAY = datetime.date.today() # export needed stuff os.environ['AWS_LAMBDA_LOG_GROUP_NAME'] = '/aws/lambda/%s' % FUNCTION_NAME @@ -104,7 +107,8 @@ def report_user_init_start(): def report_user_init_end(): - return + global INIT_END + INIT_END = time.time() def report_user_invoke_start(): @@ -157,6 +161,16 @@ def receive_invoke(): global CONTEXT_OBJS global LOGS global LOG_TAIL + global RECEIVED_INVOKE_AT + + ORIG_STDOUT.flush() + ORIG_STDERR.flush() + + if not INVOKED: + RECEIVED_INVOKE_AT = time.time() + INVOKED = True + else: + LOGS = "" try: MOCKSERVER_CONN.request("GET", "/2018-06-01/runtime/invocation/next") @@ -169,11 +183,6 @@ def receive_invoke(): return () raise - if INVOKED: - LOGS = "" - - INVOKED = True - INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') DEADLINE_MS = resp.getheader('Lambda-Runtime-Deadline-Ms') INVOKED_FUNCTION_ARN = resp.getheader( @@ -214,6 +223,7 @@ def report_fault(invokeid, msg, except_value, trace): def report_done(invokeid, errortype, result, is_fatal): global ERRORED + global INIT_END_SENT if not INVOKED: return @@ -226,7 +236,13 @@ def report_done(invokeid, errortype, result, is_fatal): result_obj['stackTrace'] = traceback.format_list(stack_trace) result = json.dumps(result_obj) - headers = {"Docker-Lambda-Log-Result": base64.b64encode(LOGS.encode())} if LOG_TAIL else {} + headers = {} + if LOG_TAIL: + headers['Docker-Lambda-Log-Result'] = base64.b64encode(LOGS.encode()) + if not INIT_END_SENT: + headers['Docker-Lambda-Invoke-Wait'] = int(RECEIVED_INVOKE_AT * 1000) + headers['Docker-Lambda-Init-End'] = int(INIT_END * 1000) + INIT_END_SENT = True MOCKSERVER_CONN.request("POST", "/2018-06-01/runtime/invocation/%s/%s" % \ (invokeid, "response" if errortype is None else "error"), result, headers) From 8e042124c6fbd2fb868ece033ca4497c0e7254f0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 18 Nov 2019 16:54:02 -0500 Subject: [PATCH 051/234] Remove deprecated `latest` tags from build script --- base/build-all.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/base/build-all.sh b/base/build-all.sh index 0a0d9ed4..f62b8794 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -13,7 +13,6 @@ for RUNTIME in $RUNTIMES; do docker build -t lambci/lambda:${RUNTIME} . done -docker tag lambci/lambda:nodejs4.3 lambci/lambda:latest for RUNTIME in $RUNTIMES; do echo build-${RUNTIME} @@ -22,4 +21,3 @@ for RUNTIME in $RUNTIMES; do docker build -t lambci/lambda:build-${RUNTIME} . done -docker tag lambci/lambda:build-nodejs4.3 lambci/lambda:build From 1e51df44a0ad0b624789c8fd6b95ef1cb228aaa0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 7 Nov 2019 16:19:15 -0500 Subject: [PATCH 052/234] Add --enable-msg-logs to provided init --- provided/run/init.go | 1 + 1 file changed, 1 insertion(+) diff --git a/provided/run/init.go b/provided/run/init.go index bd0fd7e5..5723e2a8 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -101,6 +101,7 @@ func main() { bootstrapPath = flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") bootstrapArgsString := flag.String("bootstrap-args", "[]", "additional arguments passed to bootstrap, as a stringified JSON Array") + flag.Bool("enable-msg-logs", false, "enable message logs") flag.Parse() positionalArgs := flag.Args() From e3584851892ab17bdf502bb5c39dbcbb2f409fce Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 7 Nov 2019 15:27:51 -0500 Subject: [PATCH 053/234] Add nodejs12.x runtime --- README.md | 10 ++++++---- base/build-all.sh | 2 +- base/diff-2.sh | 8 +++++++- base/dump-node12x.js | 38 +++++++++++++++++++++++++++++++++++++ base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 1 + nodejs12.x/build/Dockerfile | 12 ++++++++++++ nodejs12.x/run/Dockerfile | 21 ++++++++++++++++++++ 9 files changed, 88 insertions(+), 8 deletions(-) create mode 100644 base/dump-node12x.js create mode 100644 nodejs12.x/build/Dockerfile create mode 100644 nodejs12.x/run/Dockerfile diff --git a/README.md b/README.md index 7e417b91..68dc38cc 100644 --- a/README.md +++ b/README.md @@ -60,11 +60,11 @@ You can also use [yumda](https://github.com/lambci/yumda) to install precompiled ## Run Examples ```sh -# Test an index.handler function from the current directory on Node.js v10.x -docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.handler +# Test an index.handler function from the current directory on Node.js v12.x +docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.handler # If using a function other than index.handler, with a custom event -docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.myHandler '{"some": "event"}' +docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.myHandler '{"some": "event"}' # Use the Node.js v8.10 runtime in a similar fashion docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 index.myHandler '{}' @@ -123,7 +123,7 @@ To use the build images, for compilation, deployment, etc: ```sh # To compile native deps in node_modules -docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs10.x npm rebuild +docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs12.x npm rebuild # To resolve dependencies on go1.x (working directory is /go/src/handler) docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x go mod download @@ -200,6 +200,7 @@ These follow the Lambda runtime names: - `nodejs6.10` - `nodejs8.10` - `nodejs10.x` + - `nodejs12.x` - `python2.7` - `python3.6` - `python3.7` @@ -213,6 +214,7 @@ These follow the Lambda runtime names: - `build-nodejs6.10` - `build-nodejs8.10` - `build-nodejs10.x` + - `build-nodejs12.x` - `build-python2.7` - `build-python3.6` - `build-python3.7` diff --git a/base/build-all.sh b/base/build-all.sh index f62b8794..a5bf4aa9 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" TOP_DIR="${PWD}/.." diff --git a/base/diff-2.sh b/base/diff-2.sh index 13fba545..3cf5966e 100755 --- a/base/diff-2.sh +++ b/base/diff-2.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="nodejs10.x" +RUNTIMES="nodejs10.x nodejs12.x" rm -rf diff-2 mkdir -p diff-2 @@ -39,3 +39,9 @@ echo diff docker/var/runtime lambda/var/runtime echo diff -qr docker lambda + +cd ${DIFF_DIR}/nodejs12.x +pwd +diff docker/var/runtime lambda/var/runtime +diff -qr docker lambda +echo diff --git a/base/dump-node12x.js b/base/dump-node12x.js new file mode 100644 index 00000000..765af273 --- /dev/null +++ b/base/dump-node12x.js @@ -0,0 +1,38 @@ +const fs = require('fs') +const { execSync } = require('child_process') +const AWS = require('aws-sdk') +const s3 = new AWS.S3() + +// Depends on tar-find-layer for the tar/find/xargs binaries +exports.handler = async(event, context) => { + const execOpts = { stdio: 'inherit', maxBuffer: 16 * 1024 * 1024 } + + let filename = 'nodejs12.x.tgz' + let cmd = 'tar -cpzf /tmp/' + filename + + ' --numeric-owner --ignore-failed-read /var/runtime /var/lang /var/rapid' + + execSync(cmd, execOpts) + + console.log('Zipping done! Uploading...') + + let data = await s3.upload({ + Bucket: 'lambci', + Key: 'fs/' + filename, + Body: fs.createReadStream('/tmp/' + filename), + ACL: 'public-read', + }).promise() + + console.log('Uploading done!') + + console.log(process.execPath) + console.log(process.execArgv) + console.log(process.argv) + console.log(process.cwd()) + console.log(__filename) + console.log(process.env) + execSync('echo /proc/1/environ; xargs -n 1 -0 < /proc/1/environ', execOpts) + execSync("bash -O extglob -c 'for cmd in /proc/+([0-9])/cmdline; do echo $cmd; xargs -n 1 -0 < $cmd; done'", execOpts) + console.log(context) + + return data +} diff --git a/base/publish-all.sh b/base/publish-all.sh index 1541598b..70d1a05a 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index 82bd6ca4..de966001 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index d0ff7f10..45655483 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -10,6 +10,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 cd ${EXAMPLES_DIR}/nodejs8.10 docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.handler +docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.handler cd ${EXAMPLES_DIR}/nodejs-native-module npm run build diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile new file mode 100644 index 00000000..4c613272 --- /dev/null +++ b/nodejs12.x/build/Dockerfile @@ -0,0 +1,12 @@ +FROM lambci/lambda-base-2:build + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_nodejs12.x \ + NODE_PATH=/opt/nodejs/node12/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules + +RUN rm -rf /var/runtime /var/lang /var/rapid && \ + curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / + +# Add these as a separate layer as they get updated frequently +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/nodejs12.x/run/Dockerfile b/nodejs12.x/run/Dockerfile new file mode 100644 index 00000000..1c4467a5 --- /dev/null +++ b/nodejs12.x/run/Dockerfile @@ -0,0 +1,21 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_nodejs12.x + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap"] From a94337ae2410a94a9ac878622eb82b26bc385a92 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 7 Nov 2019 16:05:11 -0500 Subject: [PATCH 054/234] Add python3.8 runtime --- README.md | 4 ++- base/build-all.sh | 2 +- base/diff-2.sh | 8 +++++- base/dump-python38.py | 43 ++++++++++++++++++++++++++++++ base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 2 ++ examples/python/lambda_function.py | 1 - nodejs12.x/run/Dockerfile | 2 +- python3.8/build/Dockerfile | 15 +++++++++++ python3.8/run/Dockerfile | 22 +++++++++++++++ 11 files changed, 96 insertions(+), 7 deletions(-) create mode 100644 base/dump-python38.py create mode 100644 python3.8/build/Dockerfile create mode 100644 python3.8/run/Dockerfile diff --git a/README.md b/README.md index 68dc38cc..ddf32cca 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:python2.7 # Test on Python 3.6 with a custom file named my_module.py containing a my_handler function docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 my_module.my_handler -# Python 3.7 requires the handler be given explicitly +# Python 3.7/3.8 require the handler be given explicitly docker run --rm -v "$PWD":/var/task lambci/lambda:python3.7 lambda_function.lambda_handler # Similarly with Ruby 2.5 @@ -204,6 +204,7 @@ These follow the Lambda runtime names: - `python2.7` - `python3.6` - `python3.7` + - `python3.8` - `ruby2.5` - `java8` - `go1.x` @@ -218,6 +219,7 @@ These follow the Lambda runtime names: - `build-python2.7` - `build-python3.6` - `build-python3.7` + - `build-python3.8` - `build-ruby2.5` - `build-java8` - `build-go1.x` diff --git a/base/build-all.sh b/base/build-all.sh index a5bf4aa9..123ffc02 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" TOP_DIR="${PWD}/.." diff --git a/base/diff-2.sh b/base/diff-2.sh index 3cf5966e..f0368f9a 100755 --- a/base/diff-2.sh +++ b/base/diff-2.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="nodejs10.x nodejs12.x" +RUNTIMES="nodejs10.x nodejs12.x python3.8" rm -rf diff-2 mkdir -p diff-2 @@ -45,3 +45,9 @@ pwd diff docker/var/runtime lambda/var/runtime diff -qr docker lambda echo + +cd ${DIFF_DIR}/python3.8 +pwd +diff docker/var/runtime lambda/var/runtime +diff -qr docker lambda +echo diff --git a/base/dump-python38.py b/base/dump-python38.py new file mode 100644 index 00000000..319fe042 --- /dev/null +++ b/base/dump-python38.py @@ -0,0 +1,43 @@ +from __future__ import print_function + +import os +import sys +import subprocess +import json +import boto3 +from boto3.s3.transfer import S3Transfer + +TRANSFER = S3Transfer(boto3.client('s3')) + + +def lambda_handler(event, context): + if 'cmd' in event: + return print(subprocess.check_output(['sh', '-c', event['cmd']]).decode('utf-8')) + + filename = 'python3.8.tgz' + + subprocess.call(['sh', '-c', f'tar -cpzf /tmp/{filename} --numeric-owner --ignore-failed-read ' + + '/var/runtime /var/lang /var/rapid']) + + print('Zipping done! Uploading...') + + TRANSFER.upload_file(f'/tmp/{filename}', 'lambci', + f'fs/{filename}', extra_args={'ACL': 'public-read'}) + + print('Uploading done!') + + info = {'sys.executable': sys.executable, + 'sys.argv': sys.argv, + 'sys.path': sys.path, + 'os.getcwd': os.getcwd(), + '__file__': __file__, + 'os.environ': {k: str(v) for k, v in os.environ.items()}, + 'context': {k: str(v) for k, v in context.__dict__.items()}, + 'proc environ': subprocess.check_output( + ['sh', '-c', 'echo /proc/1/environ; xargs -n 1 -0 < /proc/1/environ']).decode('utf-8').splitlines(), + 'ps aux': subprocess.check_output( + ['bash', '-O', 'extglob', '-c', 'for cmd in /proc/+([0-9])/cmdline; do echo $cmd; xargs -n 1 -0 < $cmd; done']).decode('utf-8').splitlines()} + + print(json.dumps(info, indent=2)) + + return info diff --git a/base/publish-all.sh b/base/publish-all.sh index 70d1a05a..dc67d7cc 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index de966001..cd8f2e60 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index 45655483..b3f3ec7c 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -20,10 +20,12 @@ cd ${EXAMPLES_DIR}/python docker run --rm -v "$PWD":/var/task lambci/lambda:python2.7 docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 docker run --rm -v "$PWD":/var/task lambci/lambda:python3.7 lambda_function.lambda_handler +docker run --rm -v "$PWD":/var/task lambci/lambda:python3.8 lambda_function.lambda_handler docker run --rm -it lambci/lambda:build-python2.7 pip install marisa-trie docker run --rm -it lambci/lambda:build-python3.6 pip install marisa-trie docker run --rm -it lambci/lambda:build-python3.7 pip install marisa-trie +docker run --rm -it lambci/lambda:build-python3.8 pip install marisa-trie cd ${EXAMPLES_DIR}/ruby docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda_handler diff --git a/examples/python/lambda_function.py b/examples/python/lambda_function.py index 651e749c..ffe1d550 100644 --- a/examples/python/lambda_function.py +++ b/examples/python/lambda_function.py @@ -29,6 +29,5 @@ def lambda_handler(event, context): "__file__": str(__file__), "os.environ": str(os.environ), "context.__dict__": str(context.__dict__), - "ps aux": str(subprocess.check_output(['ps', 'aux'])), "event": event } diff --git a/nodejs12.x/run/Dockerfile b/nodejs12.x/run/Dockerfile index 1c4467a5..9864f768 100644 --- a/nodejs12.x/run/Dockerfile +++ b/nodejs12.x/run/Dockerfile @@ -18,4 +18,4 @@ COPY --from=1 /var/runtime/init /var/rapid/init USER sbx_user1051 -ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap"] +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap", "--enable-msg-logs"] diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile new file mode 100644 index 00000000..8d14bba9 --- /dev/null +++ b/python3.8/build/Dockerfile @@ -0,0 +1,15 @@ +FROM lambci/lambda-base-2:build + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_python3.8 \ + PYTHONPATH=/var/runtime \ + PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig + +RUN rm -rf /var/runtime /var/lang /var/rapid && \ + curl https://lambci.s3.amazonaws.com/fs/python3.8.tgz | tar -zx -C / + +# Add these as a separate layer as they get updated frequently +RUN pip install -U pip setuptools --no-cache-dir && \ + pip install -U virtualenv pipenv --no-cache-dir && \ + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/python3.8/run/Dockerfile b/python3.8/run/Dockerfile new file mode 100644 index 00000000..ac587b3a --- /dev/null +++ b/python3.8/run/Dockerfile @@ -0,0 +1,22 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/python3.8.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_python3.8 + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap", "--enable-msg-logs"] + From 3bf429aaad7f057cd57c9814618ddd515032d7a1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 7 Nov 2019 17:08:41 -0500 Subject: [PATCH 055/234] Add java11 runtime --- .gitignore | 4 ++ README.md | 2 + base/build-all.sh | 2 +- base/diff-2.sh | 8 ++- base/dump-java11/build.gradle | 28 ++++++++ .../java/org/lambci/lambda/DumpJava11.java | 66 +++++++++++++++++++ base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 1 + examples/java/README.md | 3 + .../org/lambci/lambda/ExampleHandler.java | 6 +- java11/build/Dockerfile | 17 +++++ java11/run/Dockerfile | 22 +++++++ 13 files changed, 157 insertions(+), 6 deletions(-) create mode 100644 base/dump-java11/build.gradle create mode 100644 base/dump-java11/src/main/java/org/lambci/lambda/DumpJava11.java create mode 100644 java11/build/Dockerfile create mode 100644 java11/run/Dockerfile diff --git a/.gitignore b/.gitignore index 6cdca017..14cb2c21 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,7 @@ examples/go1.x/handler examples/dotnetcore2.0/pub examples/dotnetcore2.1/pub base/tar-find-layer/layer.zip +base/dump-java11/build +base/dump-java11/.settings +base/dump-java11/.project +base/dump-java11/.vscode diff --git a/README.md b/README.md index ddf32cca..3b21930d 100644 --- a/README.md +++ b/README.md @@ -207,6 +207,7 @@ These follow the Lambda runtime names: - `python3.8` - `ruby2.5` - `java8` + - `java11` - `go1.x` - `dotnetcore2.0` - `dotnetcore2.1` @@ -222,6 +223,7 @@ These follow the Lambda runtime names: - `build-python3.8` - `build-ruby2.5` - `build-java8` + - `build-java11` - `build-go1.x` - `build-dotnetcore2.0` - `build-dotnetcore2.1` diff --git a/base/build-all.sh b/base/build-all.sh index 123ffc02..d743840c 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 java11 dotnetcore2.0 dotnetcore2.1" TOP_DIR="${PWD}/.." diff --git a/base/diff-2.sh b/base/diff-2.sh index f0368f9a..8028371f 100755 --- a/base/diff-2.sh +++ b/base/diff-2.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="nodejs10.x nodejs12.x python3.8" +RUNTIMES="nodejs10.x nodejs12.x python3.8 java11" rm -rf diff-2 mkdir -p diff-2 @@ -51,3 +51,9 @@ pwd diff docker/var/runtime lambda/var/runtime diff -qr docker lambda echo + +cd ${DIFF_DIR}/java11 +pwd +diff docker/var/runtime lambda/var/runtime +diff -qr docker lambda +echo diff --git a/base/dump-java11/build.gradle b/base/dump-java11/build.gradle new file mode 100644 index 00000000..f0e6e682 --- /dev/null +++ b/base/dump-java11/build.gradle @@ -0,0 +1,28 @@ +apply plugin: 'java' + +sourceCompatibility = '11' +targetCompatibility = '11' + +repositories { + mavenCentral() +} + +dependencies { + compile ( + 'com.amazonaws:aws-lambda-java-core:1.2.0', + 'com.amazonaws:aws-lambda-java-events:2.2.7', + 'com.amazonaws:aws-java-sdk-s3:1.11.667' + ) +} + +task buildZip(type: Zip) { + from compileJava + from processResources + into('lib') { + from configurations.runtime + } +} + +build.dependsOn buildZip + +// docker run --rm -v "$PWD":/app -w /app gradle:jdk11 gradle build diff --git a/base/dump-java11/src/main/java/org/lambci/lambda/DumpJava11.java b/base/dump-java11/src/main/java/org/lambci/lambda/DumpJava11.java new file mode 100644 index 00000000..f2f00f35 --- /dev/null +++ b/base/dump-java11/src/main/java/org/lambci/lambda/DumpJava11.java @@ -0,0 +1,66 @@ +package org.lambci.lambda; + +import java.io.File; +import java.lang.management.ManagementFactory; +import java.util.Map; +import java.util.Scanner; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import com.amazonaws.services.s3.model.CannedAccessControlList; +import com.amazonaws.services.s3.model.PutObjectRequest; +import com.amazonaws.services.s3.model.PutObjectResult; + +public class DumpJava11 implements RequestHandler { + + @Override + public PutObjectResult handleRequest(Object input, Context context) { + String filename = "java11.tgz"; + String cmd = "tar -cpzf /tmp/" + filename + " --numeric-owner --ignore-failed-read /var/runtime /var/lang"; + AmazonS3 s3client = AmazonS3ClientBuilder.standard().withRegion("us-east-1").build(); + + System.out.println(ManagementFactory.getRuntimeMXBean().getInputArguments().toString()); + System.out.println(System.getProperty("sun.java.command")); + System.out.println(System.getProperty("java.home")); + System.out.println(System.getProperty("java.library.path")); + System.out.println(System.getProperty("java.class.path")); + System.out.println(System.getProperty("user.dir")); + System.out.println(System.getProperty("user.home")); + System.out.println(System.getProperty("user.name")); + System.out.println(new File(".").getAbsolutePath()); + Map env = System.getenv(); + for (String envName : env.keySet()) { + System.out.println(envName + "=" + env.get(envName)); + } + + try { + Process process = Runtime.getRuntime().exec(new String[] { "sh", "-c", cmd }); + + try (Scanner stdoutScanner = new Scanner(process.getInputStream()); + Scanner stderrScanner = new Scanner(process.getErrorStream())) { + // Echo all stdout first + while (stdoutScanner.hasNextLine()) { + System.out.println(stdoutScanner.nextLine()); + } + // Then echo stderr + while (stderrScanner.hasNextLine()) { + System.err.println(stderrScanner.nextLine()); + } + } + + process.waitFor(); + if (process.exitValue() != 0) { + return null; + } + + System.out.println("Zipping done! Uploading..."); + + return s3client.putObject(new PutObjectRequest("lambci", "fs/" + filename, new File("/tmp/" + filename)) + .withCannedAcl(CannedAccessControlList.PublicRead)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/base/publish-all.sh b/base/publish-all.sh index dc67d7cc..decd3730 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 java11 dotnetcore2.0 dotnetcore2.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index cd8f2e60..6a738714 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 java11 dotnetcore2.0 dotnetcore2.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index b3f3ec7c..c034c2a6 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -33,6 +33,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda cd ${EXAMPLES_DIR}/java docker run --rm -v "$PWD":/app -w /app gradle gradle build docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' +docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java11 org.lambci.lambda.ExampleHandler '{"some": "event"}' cd ${EXAMPLES_DIR}/dotnetcore2.0 docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.0 dotnet publish -c Release -o pub diff --git a/examples/java/README.md b/examples/java/README.md index d5811ddb..7ebb7a0e 100644 --- a/examples/java/README.md +++ b/examples/java/README.md @@ -8,4 +8,7 @@ docker run --rm -v "$PWD":/app -w /app gradle:6.0 gradle build # Then you can run using that directory as the task directory docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' + +# OR +docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java11 org.lambci.lambda.ExampleHandler '{"some": "event"}' ``` diff --git a/examples/java/src/main/java/org/lambci/lambda/ExampleHandler.java b/examples/java/src/main/java/org/lambci/lambda/ExampleHandler.java index 42ab8ad9..98c2b01b 100644 --- a/examples/java/src/main/java/org/lambci/lambda/ExampleHandler.java +++ b/examples/java/src/main/java/org/lambci/lambda/ExampleHandler.java @@ -36,8 +36,10 @@ public String handleRequest(Object input, Context context) { logger.log(context.getInvokedFunctionArn() + "\n"); logger.log(context.getLogGroupName() + "\n"); logger.log(context.getLogStreamName() + "\n"); - logger.log(context.getIdentity().getIdentityId() + "\n"); - logger.log(context.getIdentity().getIdentityPoolId() + "\n"); + if (context.getIdentity() != null) { + logger.log(context.getIdentity().getIdentityId() + "\n"); + logger.log(context.getIdentity().getIdentityPoolId() + "\n"); + } logger.log(context.getClientContext() + "\n"); logger.log(context.getMemoryLimitInMB() + "\n"); logger.log(context.getRemainingTimeInMillis() + "\n"); diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile new file mode 100644 index 00000000..e978ed37 --- /dev/null +++ b/java11/build/Dockerfile @@ -0,0 +1,17 @@ +FROM lambci/lambda-base-2:build + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_java11 + +RUN rm -rf /var/runtime /var/lang /var/rapid && \ + curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-5.6-bin.zip && \ + unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ + curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz | \ + tar -zx -C /usr/local/maven + +ENV PATH="/usr/local/gradle/gradle-5.6/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" + +# Add these as a separate layer as they get updated frequently +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/java11/run/Dockerfile b/java11/run/Dockerfile new file mode 100644 index 00000000..77148fc1 --- /dev/null +++ b/java11/run/Dockerfile @@ -0,0 +1,22 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_java11 + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap", "--enable-msg-logs"] + From 473d446ebd09e61d59b6fc32bfa8030cba422986 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 18 Nov 2019 17:30:40 -0500 Subject: [PATCH 056/234] Add new runtimes to dump.sh --- base/dump.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/dump.sh b/base/dump.sh index a33ceb1d..dd6e3896 100755 --- a/base/dump.sh +++ b/base/dump.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="node43 node610 node810 node10x python27 python36 python37 ruby25 java8 go1x dotnetcore20 dotnetcore21 provided" +RUNTIMES="node43 node610 node810 node10x node12x python27 python36 python37 python38 ruby25 java8 java11 go1x dotnetcore20 dotnetcore21 provided" for RUNTIME in $RUNTIMES; do echo $RUNTIME From ade5bdb8e1ffac4770899660368b66327c6d76cc Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 18 Nov 2019 18:24:18 -0500 Subject: [PATCH 057/234] Update gradle to 6.0.x on java build images --- java11/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index e978ed37..7e571674 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-5.6-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.0-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-5.6/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 7261708d..1cb54d3b 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-5.6-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.0-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-5.6/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir From 79430814a59b2f17bfe5e1d0765d71163f155019 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 18 Nov 2019 22:48:06 -0500 Subject: [PATCH 058/234] Clean up java settings and ignores --- .gitignore | 32 +++++--- base/dump-java11/.classpath | 12 +++ base/dump-java11/.project | 23 ++++++ .../org.eclipse.buildship.core.prefs | 13 ++++ .../.settings/org.eclipse.jdt.core.prefs | 4 + base/dump-java11/build.gradle | 4 +- base/dump-java8/.classpath | 27 ++----- base/dump-java8/.project | 4 +- .../org.eclipse.buildship.core.prefs | 13 ++++ base/dump-java8/build.gradle | 28 +++++++ base/dump-java8/dependency-reduced-pom.xml | 66 ---------------- base/dump-java8/pom.xml | 75 ------------------- .../java/org/lambci/lambda/DumpJava8.java | 2 - examples/java/.classpath | 24 +----- examples/java/.project | 6 -- .../org.eclipse.buildship.core.prefs | 2 +- examples/java/pom.xml | 71 ------------------ 17 files changed, 127 insertions(+), 279 deletions(-) create mode 100644 base/dump-java11/.classpath create mode 100644 base/dump-java11/.project create mode 100644 base/dump-java11/.settings/org.eclipse.buildship.core.prefs create mode 100644 base/dump-java11/.settings/org.eclipse.jdt.core.prefs create mode 100644 base/dump-java8/.settings/org.eclipse.buildship.core.prefs create mode 100644 base/dump-java8/build.gradle delete mode 100644 base/dump-java8/dependency-reduced-pom.xml delete mode 100644 base/dump-java8/pom.xml delete mode 100644 examples/java/pom.xml diff --git a/.gitignore b/.gitignore index 14cb2c21..e19d1af5 100644 --- a/.gitignore +++ b/.gitignore @@ -5,17 +5,25 @@ base/diff-2 *.vs *.userprefs .gradle -target -vendor -bin -obj -examples/java/build -go1.x/run/aws-lambda-mock -examples/go1.x/handler -examples/dotnetcore2.0/pub -examples/dotnetcore2.1/pub base/tar-find-layer/layer.zip +base/dump-java8/bin +base/dump-java8/build +base/dump-java11/bin base/dump-java11/build -base/dump-java11/.settings -base/dump-java11/.project -base/dump-java11/.vscode +base/dump-dotnetcore20/bin +base/dump-dotnetcore20/obj +base/dump-dotnetcore21/bin +base/dump-dotnetcore21/obj +dotnetcore2.0/run/MockBootstraps/bin +dotnetcore2.0/run/MockBootstraps/obj +dotnetcore2.1/run/MockBootstraps/bin +dotnetcore2.1/run/MockBootstraps/obj +examples/dotnetcore2.0/bin +examples/dotnetcore2.0/obj +examples/dotnetcore2.0/pub +examples/dotnetcore2.1/bin +examples/dotnetcore2.1/obj +examples/dotnetcore2.1/pub +examples/java/bin +examples/java/build +java8/run/lambda-runtime-mock/target diff --git a/base/dump-java11/.classpath b/base/dump-java11/.classpath new file mode 100644 index 00000000..e16509f7 --- /dev/null +++ b/base/dump-java11/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/base/dump-java11/.project b/base/dump-java11/.project new file mode 100644 index 00000000..47ed2d4d --- /dev/null +++ b/base/dump-java11/.project @@ -0,0 +1,23 @@ + + + dump-java11 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/base/dump-java11/.settings/org.eclipse.buildship.core.prefs b/base/dump-java11/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 00000000..39c6821c --- /dev/null +++ b/base/dump-java11/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0-20191016123526+0000)) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home= +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/base/dump-java11/.settings/org.eclipse.jdt.core.prefs b/base/dump-java11/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..18ad8952 --- /dev/null +++ b/base/dump-java11/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.source=11 diff --git a/base/dump-java11/build.gradle b/base/dump-java11/build.gradle index f0e6e682..2e356d91 100644 --- a/base/dump-java11/build.gradle +++ b/base/dump-java11/build.gradle @@ -8,7 +8,7 @@ repositories { } dependencies { - compile ( + implementation ( 'com.amazonaws:aws-lambda-java-core:1.2.0', 'com.amazonaws:aws-lambda-java-events:2.2.7', 'com.amazonaws:aws-java-sdk-s3:1.11.667' @@ -19,7 +19,7 @@ task buildZip(type: Zip) { from compileJava from processResources into('lib') { - from configurations.runtime + from configurations.runtimeClasspath } } diff --git a/base/dump-java8/.classpath b/base/dump-java8/.classpath index 95f634dc..4857be40 100644 --- a/base/dump-java8/.classpath +++ b/base/dump-java8/.classpath @@ -1,27 +1,12 @@ - + - - + + - - - - - - - - - - - - - - - - - - + + + diff --git a/base/dump-java8/.project b/base/dump-java8/.project index a2a50935..0e30deb7 100644 --- a/base/dump-java8/.project +++ b/base/dump-java8/.project @@ -11,13 +11,13 @@ - org.eclipse.m2e.core.maven2Builder + org.eclipse.buildship.core.gradleprojectbuilder org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature + org.eclipse.buildship.core.gradleprojectnature diff --git a/base/dump-java8/.settings/org.eclipse.buildship.core.prefs b/base/dump-java8/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 00000000..39c6821c --- /dev/null +++ b/base/dump-java8/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0-20191016123526+0000)) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home= +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/base/dump-java8/build.gradle b/base/dump-java8/build.gradle new file mode 100644 index 00000000..a2ec1bc8 --- /dev/null +++ b/base/dump-java8/build.gradle @@ -0,0 +1,28 @@ +apply plugin: 'java' + +sourceCompatibility = '1.8' +targetCompatibility = '1.8' + +repositories { + mavenCentral() +} + +dependencies { + implementation ( + 'com.amazonaws:aws-lambda-java-core:1.2.0', + 'com.amazonaws:aws-lambda-java-events:2.2.7', + 'com.amazonaws:aws-java-sdk-s3:1.11.667' + ) +} + +task buildZip(type: Zip) { + from compileJava + from processResources + into('lib') { + from configurations.runtimeClasspath + } +} + +build.dependsOn buildZip + +// docker run --rm -v "$PWD":/app -w /app gradle:jdk8 gradle build diff --git a/base/dump-java8/dependency-reduced-pom.xml b/base/dump-java8/dependency-reduced-pom.xml deleted file mode 100644 index 3f463e17..00000000 --- a/base/dump-java8/dependency-reduced-pom.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - 4.0.0 - org.lambci.lambda - dump-java8 - 1.0.0 - - - - maven-compiler-plugin - 3.8.0 - - 1.8 - 1.8 - UTF-8 - true - - - - maven-shade-plugin - 3.2.0 - - - package - - shade - - - - - com.amazonaws:aws-lambda-java-events - com.amazonaws:aws-lambda-java-core - - - - - - - - - - - com.amazonaws - aws-lambda-java-events - 2.2.4 - compile - - - com.amazonaws - aws-lambda-java-core - 1.2.0 - compile - - - - - - com.amazonaws - aws-java-sdk-bom - 1.11.452 - pom - import - - - - diff --git a/base/dump-java8/pom.xml b/base/dump-java8/pom.xml deleted file mode 100644 index 56d4fa00..00000000 --- a/base/dump-java8/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ - - 4.0.0 - - org.lambci.lambda - dump-java8 - 1.0.0 - jar - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.0 - - 1.8 - 1.8 - UTF-8 - true - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.0 - - - package - - shade - - - - - com.amazonaws:aws-lambda-java-events - com.amazonaws:aws-lambda-java-core - - - - - - - - - - - - - com.amazonaws - aws-java-sdk-bom - 1.11.452 - pom - import - - - - - - - com.amazonaws - aws-java-sdk-s3 - - - com.amazonaws - aws-lambda-java-events - 2.2.4 - - - com.amazonaws - aws-lambda-java-core - 1.2.0 - - - diff --git a/base/dump-java8/src/main/java/org/lambci/lambda/DumpJava8.java b/base/dump-java8/src/main/java/org/lambci/lambda/DumpJava8.java index 46456a8c..c573ab05 100644 --- a/base/dump-java8/src/main/java/org/lambci/lambda/DumpJava8.java +++ b/base/dump-java8/src/main/java/org/lambci/lambda/DumpJava8.java @@ -19,8 +19,6 @@ public class DumpJava8 implements RequestHandler { public PutObjectResult handleRequest(Object input, Context context) { String filename = "java8.tgz"; String cmd = "tar -cpzf /tmp/" + filename + " --numeric-owner --ignore-failed-read /var/runtime /var/lang"; -// String filename = "java8.fs.txt"; -// String cmd = "find / -ls | grep -v /proc | grep -v /var/runtime | grep -v /var/task | grep -v /var/lang | sort -k11 > /tmp/" + filename; AmazonS3 s3client = AmazonS3ClientBuilder.standard().withRegion("us-east-1").build(); System.out.println(ManagementFactory.getRuntimeMXBean().getInputArguments().toString()); diff --git a/examples/java/.classpath b/examples/java/.classpath index 194b56bf..4857be40 100644 --- a/examples/java/.classpath +++ b/examples/java/.classpath @@ -1,30 +1,12 @@ - + - - - - - - - + - - - - - - - - - - - - - + diff --git a/examples/java/.project b/examples/java/.project index d932d68d..b4c37dd9 100644 --- a/examples/java/.project +++ b/examples/java/.project @@ -15,15 +15,9 @@ - - org.eclipse.m2e.core.maven2Builder - - - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature org.eclipse.buildship.core.gradleprojectnature diff --git a/examples/java/.settings/org.eclipse.buildship.core.prefs b/examples/java/.settings/org.eclipse.buildship.core.prefs index 72b2d90d..39c6821c 100644 --- a/examples/java/.settings/org.eclipse.buildship.core.prefs +++ b/examples/java/.settings/org.eclipse.buildship.core.prefs @@ -1,7 +1,7 @@ arguments= auto.sync=false build.scans.enabled=false -connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0)) +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0-20191016123526+0000)) connection.project.dir= eclipse.preferences.version=1 gradle.user.home= diff --git a/examples/java/pom.xml b/examples/java/pom.xml deleted file mode 100644 index ece4ba18..00000000 --- a/examples/java/pom.xml +++ /dev/null @@ -1,71 +0,0 @@ - - 4.0.0 - - org.lambci.lambda - example-handler - 1.0.0 - jar - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.6.0 - - 1.8 - 1.8 - UTF-8 - true - - - - org.apache.maven.plugins - maven-shade-plugin - 3.0.0 - - - package - - shade - - - - - com.amazonaws:aws-lambda-java-events - com.amazonaws:aws-lambda-java-core - - - - - - - - - - - - - com.amazonaws - aws-java-sdk-bom - 1.11.124 - pom - import - - - - - - - com.amazonaws - aws-lambda-java-events - 1.3.0 - - - com.amazonaws - aws-lambda-java-core - 1.1.0 - - - From 19c978aec06f1a92c9d4df4eb6b9d68acd4e9afa Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 19 Nov 2019 09:21:57 -0500 Subject: [PATCH 059/234] Add VSCode workspace --- project.code-workspace | 52 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 project.code-workspace diff --git a/project.code-workspace b/project.code-workspace new file mode 100644 index 00000000..00529d7f --- /dev/null +++ b/project.code-workspace @@ -0,0 +1,52 @@ +{ + "folders": [ + { + "path": "." + }, + { + "path": "go1.x/run" + }, + { + "path": "provided/run" + }, + { + "path": "examples/go1.x" + }, + { + "path": "base/dump-go1x" + }, + { + "path": "base/dump-java11" + }, + { + "path": "base/dump-java8" + }, + { + "path": "examples/java" + }, + { + "path": "java8/run/lambda-runtime-mock" + }, + { + "path": "base/dump-dotnetcore20" + }, + { + "path": "base/dump-dotnetcore21" + }, + { + "path": "examples/dotnetcore2.0" + }, + { + "path": "examples/dotnetcore2.1" + }, + { + "path": "dotnetcore2.0/run/MockBootstraps" + }, + { + "path": "dotnetcore2.1/run/MockBootstraps" + } + ], + "settings": { + "java.configuration.updateBuildConfiguration": "automatic" + } +} From aabdba167bc77d9108091ff6bbb31ae97c30017f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 19 Nov 2019 10:33:26 -0500 Subject: [PATCH 060/234] Update aws-lambda-builders to 0.6.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 0e735fea..a1fa5b54 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 77515648..61b6dcfe 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index bf7c147f..3a41c746 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 7e571674..f5778d9e 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 1cb54d3b..94b1120c 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 447594fe..0e953ae5 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 4c613272..eea916f9 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 09348b97..d23ca599 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 2631f428..650d677c 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 123ef00a..5e5f04cd 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index b6ab5d5d..672342ce 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index aa9c5f62..cc284b1d 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index aee7ebcb..38eba9c9 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index fdc99f9c..760cbd0f 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 8d14bba9..eeb1403f 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 1787aef6..0a230952 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.5.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir From 11780d00d2d5082a76a1608734219bb4f833a5e2 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 19 Nov 2019 13:31:33 -0500 Subject: [PATCH 061/234] Update amazonlinux2 packages --- base/base-2/amazonlinux2.txt | 2 +- base/base-2/dump-packages.sh | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index b338bb3e..60183af6 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -68,7 +68,7 @@ nss-sysinit-3.44.0-4.amzn2.0.2.x86_64 nss-tools-3.44.0-4.amzn2.0.2.x86_64 nss-util-3.44.0-3.amzn2.0.2.x86_64 openldap-2.4.44-15.amzn2.x86_64 -openssl-libs-1.0.2k-16.amzn2.1.1.x86_64 +openssl-libs-1.0.2k-19.amzn2.0.1.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 diff --git a/base/base-2/dump-packages.sh b/base/base-2/dump-packages.sh index 954f6701..fae87fa4 100755 --- a/base/base-2/dump-packages.sh +++ b/base/base-2/dump-packages.sh @@ -9,6 +9,7 @@ docker run --rm amazonlinux:2 bash -c 'yum upgrade -y > /dev/null && rpm -qa' | if diff -w -d amazonlinux2.txt packages.txt | grep -q '>'; then echo 'Mismatching packages on images' + diff -w -d amazonlinux2.txt packages.txt else diff -w -d amazonlinux2.txt packages.txt | grep '<' | awk '{print $2}' > diff.txt fi From 805a3716480ff43c295b2207626670b53fd8fc24 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 19 Nov 2019 15:27:03 -0500 Subject: [PATCH 062/234] Use full _X_AMZN_TRACE_ID in base images instead of just Parent Fixes #222 --- base/Dockerfile | 2 +- base/base-2/Dockerfile | 2 +- nodejs4.3/run/awslambda-mock.js | 2 +- nodejs6.10/run/awslambda-mock.js | 2 +- nodejs8.10/run/awslambda-mock.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/base/Dockerfile b/base/Dockerfile index 8cdf775a..ab3ea957 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -21,7 +21,7 @@ ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ _AWS_XRAY_DAEMON_PORT=2000 \ AWS_XRAY_DAEMON_ADDRESS=169.254.79.2:2000 \ AWS_XRAY_CONTEXT_MISSING=LOG_ERROR \ - _X_AMZN_TRACE_ID='Parent=11560be54abce8ed' + _X_AMZN_TRACE_ID='Root=1-dc99d00f-c079a84d433534434534ef0d;Parent=91ed514f1e5c03b2;Sampled=1' RUN yum reinstall -y filesystem; \ yum clean all && \ diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index 7c2ae2fa..12b79b22 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -21,7 +21,7 @@ ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ _AWS_XRAY_DAEMON_PORT=2000 \ AWS_XRAY_DAEMON_ADDRESS=169.254.79.2:2000 \ AWS_XRAY_CONTEXT_MISSING=LOG_ERROR \ - _X_AMZN_TRACE_ID='Parent=11560be54abce8ed' + _X_AMZN_TRACE_ID='Root=1-dc99d00f-c079a84d433534434534ef0d;Parent=91ed514f1e5c03b2;Sampled=1' RUN rm -rf /var/cache/yum /var/lib/rpm/__db.* && \ > /var/log/yum.log && \ diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index 025f3070..901e1f94 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -25,7 +25,7 @@ var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) -var TRACE_ID = process.env._X_AMZN_TRACE_ID || 'root=1-5d9639c7-ac2df104a29f3070f507bdb4;sampled=0' +var TRACE_ID = process.env._X_AMZN_TRACE_ID var CLIENT_CONTEXT = process.env.AWS_LAMBDA_CLIENT_CONTEXT var COGNITO_IDENTITY = process.env.AWS_LAMBDA_COGNITO_IDENTITY var COGNITO_IDENTITY_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_id diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index 025f3070..901e1f94 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -25,7 +25,7 @@ var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) -var TRACE_ID = process.env._X_AMZN_TRACE_ID || 'root=1-5d9639c7-ac2df104a29f3070f507bdb4;sampled=0' +var TRACE_ID = process.env._X_AMZN_TRACE_ID var CLIENT_CONTEXT = process.env.AWS_LAMBDA_CLIENT_CONTEXT var COGNITO_IDENTITY = process.env.AWS_LAMBDA_COGNITO_IDENTITY var COGNITO_IDENTITY_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_id diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index 025f3070..901e1f94 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -25,7 +25,7 @@ var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) -var TRACE_ID = process.env._X_AMZN_TRACE_ID || 'root=1-5d9639c7-ac2df104a29f3070f507bdb4;sampled=0' +var TRACE_ID = process.env._X_AMZN_TRACE_ID var CLIENT_CONTEXT = process.env.AWS_LAMBDA_CLIENT_CONTEXT var COGNITO_IDENTITY = process.env.AWS_LAMBDA_COGNITO_IDENTITY var COGNITO_IDENTITY_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_id From f81f800c02a355ed2bce0a355a6638b4438d80bc Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 20 Nov 2019 16:23:44 -0500 Subject: [PATCH 063/234] Cast DEADLINE_MS as int in python runtimes Fixes #225 (thanks to @jhaenchen) --- python2.7/run/runtime_mock.py | 2 +- python3.6/run/runtime_mock.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index 0c2a8662..539ec980 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -184,7 +184,7 @@ def receive_invoke(): raise INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') - DEADLINE_MS = resp.getheader('Lambda-Runtime-Deadline-Ms') + DEADLINE_MS = int(resp.getheader('Lambda-Runtime-Deadline-Ms')) INVOKED_FUNCTION_ARN = resp.getheader( 'Lambda-Runtime-Invoked-Function-Arn') XRAY_TRACE_ID = resp.getheader('Lambda-Runtime-Trace-Id') diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index 0c2a8662..539ec980 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -184,7 +184,7 @@ def receive_invoke(): raise INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') - DEADLINE_MS = resp.getheader('Lambda-Runtime-Deadline-Ms') + DEADLINE_MS = int(resp.getheader('Lambda-Runtime-Deadline-Ms')) INVOKED_FUNCTION_ARN = resp.getheader( 'Lambda-Runtime-Invoked-Function-Arn') XRAY_TRACE_ID = resp.getheader('Lambda-Runtime-Trace-Id') From a86ac3b3a6f761ea17366b82eb30f6607dad3572 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 21 Nov 2019 14:21:47 -0500 Subject: [PATCH 064/234] Move post.lua into examples And add note about Lambda-Runtime-Function-XRay-Error-Cause --- base/test-all.sh | 7 ------- examples/post.lua | 5 +++++ provided/run/init.go | 2 ++ 3 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 examples/post.lua diff --git a/base/test-all.sh b/base/test-all.sh index c034c2a6..1b299cc2 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -53,10 +53,3 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:provided handler '{"some": "ev # To invoke and keep open: # docker run --rm -v $PWD:/var/task -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ # lambci/lambda:ruby2.5 lambda_function.lambda_handler - -# Contents of post.lua: -# wrk.method = "POST" -# wrk.body = "{}" -# wrk.headers["Content-Type"] = "application/json" - -# wrk -s post.lua 'http://localhost:9001/2015-03-31/functions/myfunction/invocations' diff --git a/examples/post.lua b/examples/post.lua new file mode 100644 index 00000000..9066aac1 --- /dev/null +++ b/examples/post.lua @@ -0,0 +1,5 @@ +-- Run with: +-- wrk -s post.lua 'http://localhost:9001/2015-03-31/functions/myfunction/invocations' +wrk.method = "POST" +wrk.body = "{}" +wrk.headers["Content-Type"] = "application/json" diff --git a/provided/run/init.go b/provided/run/init.go index 5723e2a8..cae7b108 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -489,6 +489,8 @@ func handleErrorRequest(w http.ResponseWriter, r *http.Request) { curContext.ErrorType = errorType } + // TODO: Figure out whether we want to handle Lambda-Runtime-Function-XRay-Error-Cause + debug("Setting Reply in handleErrorRequest") debug(lambdaErr) From f3df1cce19d1a2f586632443551a2b09fc708d88 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 21 Nov 2019 16:54:36 -0500 Subject: [PATCH 065/234] Convert stack traces correctly in go1.x Fixes #226 --- go1.x/run/aws-lambda-mock.go | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index 91c81860..fde4d947 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -289,11 +289,7 @@ func main() { if err != nil { lambdaErr = toLambdaError(mockContext, err) } else if reply.Error != nil { - lambdaErr = lambdaError{ - Message: reply.Error.Message, - Type: reply.Error.Type, - StackTrace: reply.Error.StackTrace, - } + lambdaErr = convertInvokeResponseError(reply.Error) } payload, _ = json.Marshal(lambdaErr) } @@ -329,8 +325,15 @@ func main() { return } if resp.StatusCode != 202 { - log.Fatal("Non 202 status code from local server") - return + log.Printf("Non 202 status code from local server: %d\n", resp.StatusCode) + body, _ = ioutil.ReadAll(resp.Body) + log.Println(string(body)) + log.Println("When trying to send payload:") + log.Println(string(payload)) + if resp.StatusCode >= 300 { + os.Exit(1) + return + } } resp.Body.Close() } @@ -364,6 +367,18 @@ func toLambdaError(mockContext *mockLambdaContext, exitErr error) lambdaError { return responseErr } +func convertInvokeResponseError(err *messages.InvokeResponse_Error) lambdaError { + var stackTrace []string + for _, v := range err.StackTrace { + stackTrace = append(stackTrace, fmt.Sprintf("%s:%d %s", v.Path, v.Line, v.Label)) + } + return lambdaError{ + Message: err.Message, + Type: err.Type, + StackTrace: stackTrace, + } +} + func getEnv(key, fallback string) string { value := os.Getenv(key) if value != "" { @@ -417,9 +432,9 @@ func getErrorType(err interface{}) string { } type lambdaError struct { - Message string `json:"errorMessage"` - Type string `json:"errorType,omitempty"` - StackTrace []*messages.InvokeResponse_Error_StackFrame `json:"stackTrace,omitempty"` + Message string `json:"errorMessage"` + Type string `json:"errorType,omitempty"` + StackTrace []string `json:"stackTrace,omitempty"` } type exitError struct { From ceb292c658099edf377b31dd17327c751163aa59 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 21 Nov 2019 17:10:14 -0500 Subject: [PATCH 066/234] Enable debugging with DOCKER_LAMBDA_DEBUG --- provided/run/init.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/provided/run/init.go b/provided/run/init.go index cae7b108..d5749f44 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -30,7 +30,7 @@ import ( "github.com/go-chi/render" ) -var logDebug = false +var logDebug = os.Getenv("DOCKER_LAMBDA_DEBUG") != "" var curState = "STATE_INIT" @@ -480,7 +480,10 @@ func handleErrorRequest(w http.ResponseWriter, r *http.Request) { body, err := ioutil.ReadAll(r.Body) if err != nil || json.Unmarshal(body, lambdaErr) != nil { + debug("Could not parse error body as JSON") + debug(body) response = &statusResponse{Status: "InvalidErrorShape", HTTPStatusCode: 299} + lambdaErr = &lambdaError{Message: "InvalidErrorShape"} } r.Body.Close() From 3f0431e76bb56660c63ee9e63f22e326ec9c8eac Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 21 Nov 2019 17:46:52 -0500 Subject: [PATCH 067/234] Update aws-sam-cli to 0.32.0 on all build images --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index a1fa5b54..9f2a67d7 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 61b6dcfe..25645db1 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 3a41c746..d3bcdcd3 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index f5778d9e..042f7f6c 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 94b1120c..78dc5fb4 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 0e953ae5..822f1d2c 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index eea916f9..443a2465 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index d23ca599..6f169309 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 650d677c..e4af05c9 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 5e5f04cd..652bfdf3 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 672342ce..fd272b08 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 38eba9c9..0555a2f0 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 760cbd0f..c795ff6e 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index eeb1403f..e309560c 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.31.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 0a230952..0eb43d96 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.31.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir From 9715fa94beef940e3f4bc926cf16c58984c6ebe9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 22 Nov 2019 14:33:39 -0500 Subject: [PATCH 068/234] Add documentation for DOCKER_LAMBDA_STAY_OPEN Fixes #14 Fixes #30 Fixes #160 Fixes #221 --- README.md | 135 ++++++++++++++++++++++++++--------------- examples/terminal.png | Bin 72948 -> 0 bytes examples/terminal2.png | Bin 0 -> 629156 bytes 3 files changed, 87 insertions(+), 48 deletions(-) delete mode 100644 examples/terminal.png create mode 100644 examples/terminal2.png diff --git a/README.md b/README.md index 3b21930d..80d1c44f 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ environment almost identically – including installed software and libraries, file structure and permissions, environment variables, context objects and behaviors – even the user and running process are the same. -![Terminal Example](https://raw.githubusercontent.com/lambci/docker-lambda/master/examples/terminal.png "Example usage when index.js in current dir") +Example usage with java11 runtime You can use it for [running your functions](#run-examples) in the same strict Lambda environment, knowing that they'll exhibit the same behavior when deployed live. You can @@ -34,84 +34,125 @@ the [AWS CLI](https://aws.amazon.com/cli/). ### Running Lambda functions You can run your Lambdas from local directories using the `-v` arg with -`docker run` – logging goes to stderr and the callback result goes to stdout. +`docker run`. You can run them in two modes: as a single execution, or as an API server that listens for invoke events. +The default is single execution mode, which outputs all logging to stderr and the result of the handler to stdout. You mount your (unzipped) lambda code at `/var/task` and any (unzipped) layer code at `/opt`, and most runtimes take two arguments – the first for the handler and the second for the event, ie: ```sh -docker run [--rm] -v :/var/task [-v :/opt] lambci/lambda: [] [] +docker run --rm \ + -v :/var/task:ro,delegated \ + [-v :/opt:ro,delegated] \ + lambci/lambda: \ + [] [] ``` -(the `--rm` flag will remove the docker container once it has run, which is usually what you want) +(the `--rm` flag will remove the docker container once it has run, which is usually what you want, +and the `ro,delegated` options ensure the directories are mounted read-only and have the highest performance) You can pass environment variables (eg `-e AWS_ACCESS_KEY_ID=abcd`) to talk to live AWS services, or modify aspects of the runtime. See [below](#environment-variables) for a list. -### Building Lambda functions +#### Running in "stay-open" API mode + +If you pass the environment variable `DOCKER_LAMBDA_STAY_OPEN=1` to the container, then instead of +executing the event and shutting down, it will start an API server (on port 9001 by default), which +you can then call with HTTP following the [Lambda Invoke API](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html). +This allows you to make fast subsequent calls to your handler without paying the "cold start" penalty each time. ```sh -docker run [--rm] -v :/var/task [-v :/opt] lambci/lambda:build- +docker run --rm [-d] \ + -e DOCKER_LAMBDA_STAY_OPEN=1 \ + -p 9001:9001 \ + -v :/var/task:ro,delegated \ + [-v :/opt:ro,delegated] \ + lambci/lambda: \ + [] ``` -You can also use [yumda](https://github.com/lambci/yumda) to install precompiled native dependencies using `yum install`. +(the `-d` flag will start the container in detached mode, in the background) -## Run Examples +You should then see: + +```sh +Lambda API listening on port 9001... +``` + +Then, in another terminal shell/window you can invoke your function using the [AWS CLI](https://aws.amazon.com/cli/) +(or any http client, like `curl`): ```sh -# Test an index.handler function from the current directory on Node.js v12.x -docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.handler +aws lambda invoke --endpoint http://localhost:9001 --no-sign-request \ + --function-name myfunction --payload '{}' output.json +``` + +Or just: + +```sh +curl -d '{}' http://localhost:9001/2015-03-31/functions/myfunction/invocations +``` -# If using a function other than index.handler, with a custom event -docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.myHandler '{"some": "event"}' +It also supports the [documented Lambda API headers](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html) +`X-Amz-Invocation-Type`, `X-Amz-Log-Type` and `X-Amz-Client-Context`. -# Use the Node.js v8.10 runtime in a similar fashion -docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs8.10 index.myHandler '{}' +If you want to change the exposed port, eg run on port 3000 on the host, use `-p 3000:9001` (then query `http://localhost:3000`). -# Use the Node.js v6.10 runtime with the default handler (index.handler) -docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs6.10 +You can change the internal API port from `9001` by passing `-e DOCKER_LAMBDA_API_PORT=` (it's unlikely that you'll need to do this). -# Test a default function (lambda_function.lambda_handler) from the current directory on Python 2.7 -docker run --rm -v "$PWD":/var/task lambci/lambda:python2.7 +### Building Lambda functions + +The build images have a [number of extra system packages installed](#build-environment) +intended for building and packaging your Lambda functions. You can run your build commands (eg, `gradle` on the java image), and then package up your function using `zip` or the +[AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html), +all from within the image. + +```sh +docker run [--rm] -v :/var/task [-v :/opt] lambci/lambda:build- +``` + +You can also use [yumda](https://github.com/lambci/yumda) to install precompiled native dependencies using `yum install`. + +## Run Examples -# Test on Python 3.6 with a custom file named my_module.py containing a my_handler function -docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 my_module.my_handler +```sh +# Test a `handler` function from an `index.js` file in the current directory on Node.js v12.x +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:nodejs12.x index.handler -# Python 3.7/3.8 require the handler be given explicitly -docker run --rm -v "$PWD":/var/task lambci/lambda:python3.7 lambda_function.lambda_handler +# Using a different file and handler, with a custom event +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:nodejs12.x app.myHandler '{"some": "event"}' + +# Test a `lambda_handler` function in `lambda_function.py` with an empty event on Python 3.8 +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:python3.8 lambda_function.lambda_handler # Similarly with Ruby 2.5 -docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda_handler +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:ruby2.5 lambda_function.lambda_handler # Test on Go 1.x with a compiled handler named my_handler and a custom event -docker run --rm -v "$PWD":/var/task lambci/lambda:go1.x my_handler '{"some": "event"}' +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:go1.x my_handler '{"some": "event"}' -# Test a function from the current directory on Java 8 +# Test a function from the current directory on Java 11 # The directory must be laid out in the same way the Lambda zip file is, # with top-level package source directories and a `lib` directory for third-party jars # http://docs.aws.amazon.com/lambda/latest/dg/create-deployment-pkg-zip-java.html -# The default handler is "index.Handler", but you'll likely have your own package and class -docker run --rm -v "$PWD":/var/task lambci/lambda:java8 org.myorg.MyHandler +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:java11 org.myorg.MyHandler -# Test on .NET Core 2.0 given a test.dll assembly in the current directory, +# Test on .NET Core 2.1 given a test.dll assembly in the current directory, # a class named Function with a FunctionHandler method, and a custom event -docker run --rm -v "$PWD":/var/task lambci/lambda:dotnetcore2.0 test::test.Function::FunctionHandler '{"some": "event"}' - -# Test on .NET Core 2.1 in the same way -docker run --rm -v "$PWD":/var/task lambci/lambda:dotnetcore2.1 test::test.Function::FunctionHandler '{"some": "event"}' +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:dotnetcore2.1 test::test.Function::FunctionHandler '{"some": "event"}' -# Test with a provided runtime (assumes you have a bootstrap file in the current directory) -docker run --rm -v "$PWD":/var/task lambci/lambda:provided handler '{"some": "event"}' +# Test with a provided runtime (assumes you have a `bootstrap` executable in the current directory) +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:provided handler '{"some": "event"}' -# Test with layers (assumes all layers have been unzipped to ../opt) -docker run --rm -v "$PWD":/var/task -v "$PWD"/../opt:/opt lambci/lambda:nodejs8.10 +# Test with layers (assumes your function code is in `./fn` and your layers in `./layer`) +docker run --rm -v "$PWD"/fn:/var/task:ro,delegated -v "$PWD"/layer:/opt:ro,delegated lambci/lambda:nodejs12.x # Run custom commands -docker run --rm --entrypoint node lambci/lambda:nodejs8.10 -v +docker run --rm --entrypoint node lambci/lambda:nodejs12.x -v -# For large events you can pipe them into stdin if you set DOCKER_LAMBDA_USE_STDIN (on any runtime) -echo '{"some": "event"}' | docker run --rm -v "$PWD":/var/task -i -e DOCKER_LAMBDA_USE_STDIN=1 lambci/lambda:nodejs8.10 +# For large events you can pipe them into stdin if you set DOCKER_LAMBDA_USE_STDIN +echo '{"some": "event"}' | docker run --rm -v "$PWD":/var/task:ro,delegated -i -e DOCKER_LAMBDA_USE_STDIN=1 lambci/lambda:nodejs12.x ``` You can see more examples of how to build docker images and run different @@ -130,13 +171,13 @@ docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x go mod downl # For .NET Core 2.0, this will publish the compiled code to `./pub`, # which you can then use to run with `-v "$PWD"/pub:/var/task` -docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.0 dotnet publish -c Release -o pub +docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.1 dotnet publish -c Release -o pub # Run custom commands on a build container -docker run --rm lambci/lambda:build-python2.7 aws --version +docker run --rm lambci/lambda:build-python3.8 aws --version # To run an interactive session on a build container -docker run -it lambci/lambda:build-python3.6 bash +docker run -it lambci/lambda:build-python3.8 bash ``` ## Using a Dockerfile to build @@ -144,7 +185,7 @@ docker run -it lambci/lambda:build-python3.6 bash Create your own Docker image to build and deploy: ```dockerfile -FROM lambci/lambda:build-nodejs8.10 +FROM lambci/lambda:build-nodejs12.x ENV AWS_DEFAULT_REGION us-east-1 @@ -172,13 +213,10 @@ Using the Node.js module (`npm install docker-lambda`) – for example in tests: var dockerLambda = require('docker-lambda') // Spawns synchronously, uses current dir – will throw if it fails -var lambdaCallbackResult = dockerLambda({event: {some: 'event'}}) +var lambdaCallbackResult = dockerLambda({event: {some: 'event'}, dockerImage: 'lambci/lambda:nodejs12.x'}) // Manually specify directory and custom args -lambdaCallbackResult = dockerLambda({taskDir: __dirname, dockerArgs: ['-m', '1.5G']}) - -// Use a different image from the default Node.js v4.3 -lambdaCallbackResult = dockerLambda({dockerImage: 'lambci/lambda:nodejs6.10'}) +lambdaCallbackResult = dockerLambda({taskDir: __dirname, dockerArgs: ['-m', '1.5G'], dockerImage: 'lambci/lambda:nodejs12.x'}) ``` Options to pass to `dockerLambda()`: @@ -273,6 +311,7 @@ Administrative keys for lambci/lambda:provided - `DOCKER_LAMBDA_USE_STDIN` - `DOCKER_LAMBDA_STAY_OPEN` - `DOCKER_LAMBDA_API_PORT` + - `DOCKER_LAMBDA_DEBUG` ## Build environment diff --git a/examples/terminal.png b/examples/terminal.png deleted file mode 100644 index 57a19a481d429444eb1af88e3bb0fadf60769eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72948 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 Vv=U26>|O diff --git a/examples/terminal2.png b/examples/terminal2.png new file mode 100644 index 0000000000000000000000000000000000000000..055b0913b96023db1c23759c747b7c2986653137 GIT binary patch literal 629156 zcmZU)2UHYIvp)<1f}#Xba!^nZ5m0hokt|sxiMRw2kennl0!k3cNl8o2f*^>*l^`Hd zGLn{@(-Ie$o%yfN^WJ;k^L=wp(>>i?-E>b^RoAa-!*#S&E?;E6NJK<*Sxr^(F%c1Y z5D^ja0mXSj&A7-cJrU6*4O;~T9W@1o>pHGZFKz9uh=^3f6Aj6q#jCKOJzvCqIY%2q zdvwK$f;5J<<^A>RdNheKq*s(bT##>zOt@oI6BhJzpg2saSD^mR#^V{{OvCQvUwgX#L>F`4?Y-^P8O^P7r!S&hCA#`M zP?)im;r5F(9FCF5st~SksH39M2Yzb)JnYB9cg{bIeMm%fh1w-a=f>?fI2EGZ$AKEp zDTrb(AAS?2w7QcTbX9I=FHW#eeberC zML$_{xGtu5_13GE`Gt#fLBqQX_bXd)H#O6|UJ3wy4czPv6m3KT6eM>u-||yxkk>vK zoSB@W1ZvJ=%7kNM2b z|G2-CB>K7l(ZF>M$e`F-EwnN34JK20k9y}Eqn(_6aRsn0p+lE5ay!(^*he9$&DnzS z{(DAw_x9f1>oP>qf&Db&GA?4<;#aqLd|S94lF!|kW6p|qwoA!<0x8|4d%&|8{rhFw zp?CXtlEs5|1?+=Ps!uN5j_0R#D}GaxQ-@?UW+jzGnj}hZU=}6Qnyp30CUmEGZ(EVx zdOLrxq+!Znx?@hSuY@R%<{mAbD|QW4X*%e~m-amzR{?Cp`P+{y3n~`IjW=mVFBy&N zmXg)KVKbPU6Fo@vxqR7MU8f_S-1{cH+c9?fME~*J%9y}L%D!J(+nytTvo4+eC;$1q5e)fT@9lWUSW%+Dujk3hsr?6)kmt-` zb6g4r%5~cenQWFM>MNzYy`;pzGN7xvgh*!9I|#r;`r%hKS}|OS2aZdE5i$ zj~6%YhHMy9y$q5xyK$R5(TvQ9QtVBy8Q=JYCi1ff!V;uW!Kh|$=L^qBJZDeW&TGqa zc#)l_A-!?K{cYe!PJ=Mn`S)I&_BSams9401-n{%v(UpcbTXFe%M9iZX*D8ts1PyZ` zu9L?ubQ;1h$6@w^=}sKYgU&f`HxrhP)Na*o>SRT1*^z@$v8RiP^8&kCM7 znyW4cGCr5L6j9lD#vktYxL-!rn%jSf_-VdoB*xvbY<|t?nn9?j#phjAQ;>&6Ol61S}BYibA()|Sd zd7|}HdqPv{QJuy*cjJwXn9rRVixjR>#*YMU8OD0XM#l)obHtP1KE3Mu9&sy*Gq)%E zZh?JH)nkFjb-W}`NQ${cV^S1*^8|7Y^jL}t3O$Pi-QC^o-9dNmbyauz)h8R9Ba%7$ z4_5elW0oH-3<}vinh=_xnz%o~KS3##zWsnYt6+$7t$X$GfbQVzK)mkK^gx}AY1X#i zH1jm~ba!3xb)l2W$tmr+#?vQ_)lML#NeamV1|EF3n%M zcqxf_Q%J&Yw=L$ysu`o>ZIQdeQ?I;QzC;Axw`Y15@}?rJBGTpkfPsdjko%brCWc}tL|^T-%KqhUrt(ETZuP2 zMwtdrJNUkroqTSO?t`lEcH}CdPeRMtQrI#iQY7|R)md3scccc=gVJA0j7XY#a7%qn z-%k^lLb}SEHkh^vhzc;6>KbwwhHog3Md`lP4amvOSy!HR&Z%{odOyWH#s1-CR1}k` zRGs(1*ZZ$62Rlkx-F$jfJe`jHjvcl=WiH9K`zH8Q`G8An^SryI*oJkbsK^e*-8OMeIoIOj-CcGiw^Y+rq1pnSEv(W&zHoyR9^n zH0GU0F&(VdS_0PME5?Psg)#>ZR_)3Vo&v{4jP&$O2DGE>j*JW8yQO;1rf8$95omfF+xw{d-%dHO2=`_>t>IdM0%%cTGDquto~!0!M$ARUs}Jq z7QbC>O!$y+nlM&mUR3f}nkVv;i09ym$X5}yr|MF?vbX$wec;92Uv@m6)?U^L*3VG$ z5_w)-e~Mn}?H90T8XLoV$I-N7w2C4SD8!e(O?7EpY ziK{NJ&5nvUc_afROWb_gn&B20)R$HEiqFMvU{q!D@wap+3U7*k{dFsG60sSxy*l;j z%l?Z-Cx5)azG*kh@AFm){o5a=lbfi|n(_udyL7WJXLL21mAmfjAYMSu{>X!-Z}?4o zBw_+K@_plynSH@FWn_5luH&}7n%$a&1Y~An_h2Isr3_as#2jX&w6=#Pb7ZmeN(*^a zE!x2M|5VH@NOsguy4L_!?46%U>H*15rQ1DNYgzqHaEV{|5XdD{S%ClOX~*H>hPcy< zsnrJFhLc4D=<`ZVgd_Eov2(I>&3p#bSbVm8yb<65d1x1CugsB~Qwzvw_<0qm|2{kr z|LL?--_1V2p)dQ*=Na6#|0^paEJGcw4KZLU3VI^j4E49mIs94(-30MA!bhsW^G zAiv%6JV6cQrkCWAl?mVn;|A&xH#{& ziZO2T6Gip@o)Xl5_|`MnX@oWT(@)AD410pWn>THbEkbV+%!~I{MrtoLHHq#J$`nMT z#LPrwgc30!$q}>sZ&{i6HWA4`_2-C)LT!mi|Iz(;J|MIa$?GYosS$ELOIIr^M>iWMcM}U#7NO#Tv#PNh5fS~Zzlm7w z@y%Vr_+z$DjNFYhHKZ(^90bf?I9XT;csV%#9fwH9ONvl*uyQxQ?&VReZFa<#fHDj*_ok5lgA_3PJVTwlDDdaS7YA9BK*ET@gT zyR(#_pr@y&fTys4ldHAheMw14!Fxi2LPGq69{g_Jj_&4O{Elv1{|@p$<0x9WS-RRf zyW2WBUjI9;xrLL5yDTT?---VB`S<^{^0NKEnH=5zvn;{_1^>1P-WRwh_`hQlNM-)k zO6k~oS=k#Y+By*Sj4+4XeMuo9nSTiWe@*{4<-er*ZdR@eP7VZ0ce(%D_5Tq6cjNz; z@Si!2|8Gvwd-wi(%KvKl52cLY-=+W8R{Xoq|I`vTTJEBZ;QxL!xr^)Pg{27Jk=0gF z`w1Z@oU(tOQ^Mcdg!DH*B_a#^)okA$Pek;9NKH}xi5Kx^BYCEkzV{J&`^mb_`K$6$ zk3+KWT{ohOT)W@M7@5K-8pO`(#i27X#&O&0!~Hq}}>vN*eI~WA&p_zB?8ACDBai{pCa3 zyK9Ur5l;S5(a{^OcO53b@kjDM-ui|W*;eM|e_UIf(>p&Urh9K$N|Y?&G^#_?VshgWIQ5Ayp9KV~P@BKd@6f7q-b%4h?v9MAu1LmWHYF2}`&>OVWMW(s{- z0>)lasYXb$_X$NqJoR_ywIgy#>??y2<*`Q6wdUfGPOeTY{e~j)$hUlYRjM>KLw7sw z3S3yeA(*6T3fwu*C?+qH=8i8HhOVZ%HeD;z8-v$RtxaJM8AmSXMGo4@jZ@D)?G2n> z2Zvf_6xsu<=91Wn9M{>W?uA3Q&`}A1E!*|C>;2m}I&Z|M)EB+VyQcP}!m+c#KS?~W zzw_enYcd}6Tis2&JNn0f+>u}Cao2+aJHZFPwO8I?-Az`0gfHq?gWVo9Z59!)j4Noq z4i{BMAgh1y;sVe2z2_)0I59jcfeaV4BMEaCEjaZeItvo64TB}iC{Z}W2b%N#IrJBbX z>P+y>lZ6Y+YDVKtQt1a#@tTkzL-WR|Vr z{uNrwtLDQVw03-HGtY`?XO*Gv2wkyT2$N9jxr?nS zLyR4Imgbb930YiG9rSbz$*_G|;%Q`+(?iQRoC2aMx1o(G}Q1UYqEv!y2I-OT&AS`ms z;Y3=@sI#Kx7joPz9MhNNts<;40FoNJ-b*xpw8$G-X1O4-EcIN3G-LvoM%DX_XIJBm zL$&*|)F?x0tCCZTY0UAgp-Qlze-^K^4*QDZoEyp*HXRq)+%;4DvGJ`4R{~aKNIX3& zKMGZRkFwzUx&V+xficp=q+<~h^flQRm6#ZmtoYwm;+p+gfTyQb-Fd<9I67*%q1tgG zOXhU15*ys=6!o~B203*xmP|eXphP246uVv^?`gOwA!%;ChWAFx~G7X!X6`mpQ z^OS8+$Ew8YZ~Z=GxaHgjiw53y3rWLA2n?)B2aP%IDt)qQ<5afBa`6CNB>2@EO(*@- z`X{fI7atzdqBZWQ#z{2j=5?qfcO(Q3$I~}&LUGso9fNKkp078jJpXIOXpLuFS*ccQ z>ii1hzHjcx!k9d|m!w6fniB(vg#8Y`;6q zN$vRPZS7H;JQu{dwd=UA_nuSjwTXUoQJ)>X1!t0~MUaw{px9SpOZE{&K5Ir{p%l0H zK{8FlxDYAg1yRnt3Y9*@=v9q)7qJeALc=(d4vx`p8#t4FYQg8DV1!@gUlFmL4tU+6 zlZ@xS3Yt~-INYOm<#p}CMdNL>9!hiDEIqSyhzBU&oGoH&fc>%Gd*@601M?6lav|-i zM@)sy;>74>ZQX+9s z0N2J}cm%y&rSIPQ9#sH-oGtI5jpOOXm;JbvE7g%k^e%V!o-{?mbOP(A5$~8@vp*g# z=z0Xke^@`&8-vzQNg%^9#5Ke^NT*P^uO0pJeqW6K(K5yZkKP9E6}0H%hGSPaJm7+D zU<4e>xX*LK6LHRdM=EioW=s^91Upzl4jNq?2ta-D~WP zPri;db)lvckro4Q^_po7_>zr7sN`B<%goFVfk78jo`Cw$2viKuk%0@z1#J<`fa_E# zwk8VU8YTsef;r1bQMmNv`1XFZ47L-Q0VG7SMi%rS+W$;l0`4aFyn|`oTE=|vh{f%bXf5Bx zo$)JHdF2by{$i^)i4vq{kJ?e^-ssRE#yWo2^1UH(9aaFa7sjRF;(hJ*1SzD;Pk?bC@ zP0{4LCHwTMjzYG_TYK`2?{{lxOWNx@?yH3v3Ct7EpS;!ivf6yJ&8)C9{^~`rdx(+I zh6BIgi?NK>uHQr>>yGnN2SZrO^D4}LkXmC^%jH0(j(OA9`joPGpZ#T~h2z{36wu5; z2Fw8iad~xQzG@TSmIA9BHb%|t6(MU9givY`sL~>ci+F7u#q5#a8sF<++ug1?`5BJg zrF4qMTj3c_7$63Ila%({2!~@#c}JZ6<);N-(7L;VPn#mP>^Jf?Gj5Vx;o9y%(4BFR zA-t65(DSGOuxQV4bG#2{2$oMEtI=0jRM_AWSRXFIhWfRry^~Y!2kf95wwhw_7Y$n8 z+LXmRfui5?_X`aiCqKn!l11%#y_~1JJURN}$B*tt%XfUQBNG_v`MuI^vn1^6{(!o@MxWzI2qySr17w(4=QLK}`GDXSc*bhod@D<9m+^33{G7-QdK8 z>Sr1AS>X`_yD%G^It#a51`RWDF7E|f6}m$z%54U*E;RLWQaX}>^vOg{EDMhS&@xgP zh-g+flv~FIU;W~A^ZuXHczv-yxS_BFY|EoVoC3mdjm7^PwuYeJk%#F25gMrfoNXB< z)dhJ^Sd=GPZy9wdm(>a$Ik{`8ezhKPvQj+K5rwIK-T3NB*5hSbh*mQ3&KAtSn54A;HBPR>_?@f{8PWMH38g+v!^3;doF^6+i_R+F~)hKY~ z03Qw5KL+piy`dcUW%sl3nM%d*UY{JiWsR0_sKbA=T_D$Tv&kbB<5@sQa6qx=tO^>| zFWaK&IN}|_O(1Uv+(H)0&_B)e5Q3~JVT~ok9Y{qETeOD5_`7s6j4VYZH?8+nVf!Xu zmcqJNhBFp!xCQ=I?&ts1d;ZrNIRj*UnsjiFWe@4nX6>%_Oz{lh zP&NE#89g7(xNo+P*4;v{qt_A2+vH<7y)D!Lx9jD0=JrS_NR@)^)Aa;q_!YPj4pdUJ z|565>*##oZ6-30MJqFZ%Sj_RhPwUs+Qmp9|0R?v=ij#t0e4l#Fw_zF8dh;RXNY_s^ z`Oxq9-2Izl8>I(1F+x$91+&z!r&2Su78_ZI4v33@x|SdR27Xsb^Gnd#Z6V!W%{A;S;t$F&Wgh8jHhlU^dh8)^SsqOwz_`;wZT|-a39&F zRCgdMsKv7Ln>+PNx9)Da1lZ|*nmXgSn4G>p@4oZ7X7R$%Do!))0zKmZd3DY_PuOl4 zO;Vti^h!fje+5r|svx9Mw_c90nVI#tLpTw@s^#e($2FJ>1rAp|VriB$dq&ah{i_5S zw_U$wfJ!yIq}5S)O6X8{Z6*K@peTS~dX);)7Ku00ZW*+1VHYk36T9{beKCjeD zOGin3y`b@R=$dH!A$4$O4GF{SQ;?V))M>lsu9)g)yZ6l+pEs}a_OC*0K^Ma#IK6ow z675}Dw4lvK5Qe(@<)KDUQI(F06SO6?2dgr;tLzqae8BW7JB!@1XkW~>y~-=bW@!_7 z5{Gha)!vZ&_@S^-T!{p!K`K*`{oLOeF;J65oT`AdPJ_R-g={;(`-unD$DoT~z=W4Y zRtQv(rAZ`{ICy-~;deTeU&FL|Ya(+pH_}Y?+-JHh+TE`|T5@xZXV&%*WC3WHug2K_ z$lDg9&yy>Pg6&TY{!nD7fWnDzAsGMU?sNKRm6@|nmAsL1$$lyGeW+;?kg&u@zXxKV z`aMAq#aU}nFjCf+&<$2 z2}htEE&;9SVHGTz6|@A`+TeA7`Mbn7OYrj^DjkbH1rFg)i|7$}c>=!56&|g%`>8o* zqvURA-?FR~Rj&6;%nIvsBSUJx`l^D9jDGf9e+Cg&}NF<`yow)=6N_kO#cDZL|i(r!u`)zirl=un9%z&4s2_B zhhF8lyxazF#{XbowjadufK|9};Us8^FB}^RXlksk&4+IT?byO`F*cjjvr{T!pCI*A zbY2Q4g^kPlL=`DqjI}ZbicV@GTZA6Ycz`QKEFRF7IRj$;tpalLEA&F8n$iH~VjaP8 zMSRg5!O=mY`}j~P__0PT)6$ddC|DFOIzgTP^fC&%-U;9*k6)I(iRidQggyq7uf9`J zz3H^) zw!@c`sOLAJiTas1N4R~AGvcaf>#pFauUAKny(lD0J#c-{~gjlfbU@siXxO@EaLcFN$}m-?H4@&}R%9 zw7@_1=}x+E#NbJ4rvSzE=a(S%cReMko*sl0e&`)zLc#3;g675Z3J}9g!Kgwe}Wu=+i)g-g^c@t^g3`O zkQp$VAHA;z8Frx4Z9&6~j<4DmC<^tFkEZ9jkj`ouZQ@7BC?Rc^be1LN>Km{KYeDQ{ zXPurlS)RlB^m1N9%%%Dtq9U_}Wo8~tNdt=Yo#@LZOEJW(t^y059a=0Sx>Us>?3cqr zQe(d(9|--RN6*qf{IL|mHhv9A1ggvfF6-l&gdfx*b3{$3Kt>$I%Jx5s#fEb3*+EbZQ6^f8(`Bn{D2(n;pDPLlYm} z?mT?+sZ!8@($kl$!)dz>UkAA|a0ykq(G!ga)o3Rv@;PLa#g2QAa7OBp@)Bh}W?OS;OZ@SMmS-bzAT0u<~z)O90YZkHC5g;WCRtX=-&9zp|f8}?0>S_4Y zvsZNO3_hh^gAO;qk^t?XQyhm$tsg4+OTMM5#}}XwmNNAXr#iW5 z91_mIyvCnI2bKp^Z&S!=vBWUgk?fTp*w}PS%TeR8C^c%|gQEQX(ei-%pHHR=o^Zt9 z-@ZcxcP(f?3I%cfwnNykD*K=B-FJG$3+mB_y$9*hu>VAzZBEv}?+EF-htS!Y>Gx1@ zacC%CdPmg|?hPH9lLBy-9LYysi{@)hCXQO30V~DsTWEioX<#gU0HrP5z4(Oz&ON0T zn_>X@s1T1lJDc<~-9tC+<_CVa9#D7X)o-UzN#MiR=1Tf0jJF$|CSJq&?mH8rYo{=X zUK9*B34y0lD;`M2%7E#5cf3pbID*uzfT6v&#w;N zmL3wHfy=74Pj|$RI?}t&Sbc-o2mH^YS9u3VEXCz zslIpeLr$* z`ih3z`6$)OQ@o~>6L?h1a{8Jcb)sOSm`vrr>)`5l<-Q}IK3QfL37XwV(-+yQ9})U} zz12V4G6Ff~{=q`L1gEh5SH|zA)gB^l*npVvbEx-hfU_p+phHWCu@5h_j*YToOJjgn zQoiem#V$;s{7CKBYh&P4l|B#W?Y(n?3p>UzFZQ9sBe3Meu+w80%ai+AJ7GCYcK?vU zO#j62M4Em04R1TOAKE% zEf@^ito{&5iUJR<^I8Me8P?K9k;jb(Bc5nc*)Qg%!IVB!z^PyX7l38TW@Abf*1ME* zJk`MMzs1I2^YvJ3jM4F49MwrUN>c@~P&0&|m}Y$ZRvQ39-~!Ri<%v$Xu@p@6FAh7uB-VJS=>9q)3k-R9jLTo z((6QbUiobZEcUyT@4O3C&#yd9qa1ANV0B87ZPwQw_nFP`Jq(yh9hy;*>AIQ)*O#5V zCftJ?vzmbvdn=TF2iLhtm2spqU0PJ$4h+BvO~>J|gNYz$XCR7$JQd4l8 zW)#8Ko?Qbd+@y~F;~u!F^B1)i?t#~FbhWS9fE6b&@>x_Tn>YW7rCaCq#B@nnw@(7k z9(E~5PFQ^1mUm@R^1dOTw~Z1OXZBbZm4A$I;4SGP!WjfN<0ARR^%Q1*H_RTBkx4x$ zQ8P4e^%Prc89UHxfGW=RP+NW!PeKSRJ&L$M@=`Y9$*pjr} zSdLs9G(;teVZO4f@#Srpna~ zwq};YsM#Pm42i3D9~Q)i{4qMl@7V0`(AjSIvkXDe#_3dNpO7LZGLKGOr^8FxrWqCA z0TtV<{w*dmsjvT7bLf3J+KU+CM>gDas5>jGD%jRC&FauaIPZkGZvkM5a}8KN%01uI zk^a%~6f8K1GHXmVi2fqCb|R=njaX1?_c%*Lj!l>B985Rv_9I@@MbFgurm#!*G_&<$ zM)Gm((vI5Xa@)UVR`cel(SF9Kr>Ms6i`!jrOab0rYWWkIEt`RND$B1M0OXw=4^8Ve zM4I-Z5F${(2?N+8sv8kcaZT*Bf6vp}<{HtZOQ0{CcY;koiEWd{4#kYulU9=xj53#jGB;D0Yy*1h2I8PQtgVVO; z!j0>PxD;%^f0=Ve8)wOC=|jC=FvL#I5of^aQbiM4Knd)83PS%JDQGy2^fBDe@hEFs z4Llq2K!FSx*}n9;4w((lyrjHkY~>g}pzfF+?|gk9Xo+|pOXamm*Ync>8K3UI96zyW z8XJRs9xXMo_25VP%JCy@mmf>n2RCu`F!A)|0Q0)DiJkL69my%tbb2~{IJ(|Z8wD&y z9PrJILh>(+t-+yK*dB-c$4#ew|MMxPY5|BuNP;W6QEFaHTij7Vv2H1<_b(9Cg}6!c z+HlM1BFx256?zA*?5AHVLP3erfI7s4Ir!nZ)S!{=3bDNTF(!MC>ednbSo2Zo{{2HI zJd*$Rit`i&tGkO^vb^;ykC#M10$4AS>${y(F7ZTXKALj%w%2xf9XFi&CWjpHHLepa zd}~12VH)Ve?$|(l5Stx9eeJ{(k9Mip?A`(=1JeAd$?fN()1Rkw38dw5KhULtI9A#O zT>ZA$(`jH=Q*Ef^haxclK#}3c`ZM?>m>3XrWQqHbQ_c^?8Gz(u& zTzJBLWpiC&%!R9ejcJQP*yZVt`Nd2>EgAr4(zRb_dXWj%hWHzb1 zJ&m8<$rWte(&Tj*X&oH)!d9AktgL$1Ngt?kEk&6*k(N0AVfTHtkL@3fTdL1L6n~c5 z1SW~+exA50(%1svwDAvphRYF?bg?@i9+}G`w+}OeB^mpEPC^R(BOLgBkkOj)PP_<; z**Y26=AJ(OuJ3abtF&eUz_ACb$!Y0F(sM7=9k;Ad>W26wl&#RMiFc@n+$O5;RH$}7 zt1uwGm@CwQhvmPIPnDq#x&4#1m;xxF9KCyLn15*JD3T7vT&g9ogtgpQmHnRvNrK9q zN!tFt{-||@g#G+4bOg$6)!8K7a|x9T^xUW#+v``}wZvq4lB&(txe8%fhv%MSQxqQ!$E33Ssr>)3$ z=r*zLW1dZk&{;I*BbCp*-cT_{R$Zrk=x6z$=`SA{u_Mo7dkc=~PrYp;JLyg9EO)4> zju0oq?t9&Rfm!aY1+c9D3I{YnxG+v4WQ~tH^SA2k%CwLHlPB3~byr|@ck7dNw|;eB zwty<^esJ(vz;^>Y%?F}2qf!;5({#fxT>TM17)$d^c3GsFk-&iA+fz*|85d4Nlh(Qr z2_y5UGC1(-_`h7}KKV1U zY-(a(&@^l+4q))R(`y=R0noFa``wGkiTZ_{#Y!Ntp_$T;O7_Z+#0ww>TJtOL@l^!K z5!&J6K~rXw%j*(|n|qX)=r!vlk1D(Xk4b8pcAZ9CmpG?mG>hK{=>-cX<_Yh6|emcrDDthH!!3^f(>ie0*-}G5xuGF z4Nk_0E4UKs+`o8zw7M262JAlG=$r39k^KSEyy3Wp6EKw(Vpbv;!6(Ji_osb+{#;|> z2q-@*lvpg^;QjA z!lgJuKbE(^9RdK0BkeQ#Hw1-C`)>%!GME!Z00^en_NkdFLUB4)i^#s}j|FWqK^4*H zk6bbCN|5^3alacv?adyWd5aCivv>AoJ6T?`$4v=J-gt`P}DpA3?ZZs>Gvj{XxO%N35nNlld=*Z%l^oQ7_nU zmGc2+)ki$Co(Jf!v*kxTd7Ak^!n#plt`ENdbVY&O1B}4scuO^BRv;43rY>6n5gvmR zPgo|Oo{=nb$_kbC0hO$`1WBK*V3LCD!*o?cJH%2mxHIjy2)g^uM4ty-SPlS(MsC_)v@p)7_$Z1sh z%SC**OVDR!OR2W^p#e$7y)6Wzi(t(xF*Q+E+h3t<;`r2XR2cypO`RQdKC9cx)|_9+ zzz0>?WBdn`XZ#$MZ+{HxZRXy3cv8vFfxNZ zD{}cV;`>0V`z*4!;~`>+1Xy@`Bn{&R+*{$Z+)Og~W*eA-Dhc9{$TwXoSZ8ZKdqr}k zS?R>6Zix@6it)lobMI=)o|XH`Y`!^=*!CK|g>zF`C{SZJHzMI7)1 z2(aN(u~D-TNa!JUd+v+-zPOpf96!v{Fneq5O$S_fcsWA=@)$FXFZ(`Qodrly&jP5{ zg@ND0&s%b`oZzfU?RP+bFqM|C%--+6Fhai7S*b?7U5>AltQLy|QetOhjXi+odYa5j zUzBC^*jW^V1U^DQp2##Rzxn8}|j?imZl z>3xSM^7N?#Y553SGiO~109qZZuqGTyEdH)aZSuSZbRT07Tb@&D*~laBnUcXq@#)q5 zY~VEEr#waaETFK6=!D*gCV~;LKKM8oEdR$(h-hbE`x{-bLHs!$9>J31X+`i5{E=MT9NC(95A2gq8O3sIp(*ilAdPPBDmUFO6S&LE~J!^-O#2B+O z!DPEW7`#GCFXCFdfadA`0K}I9iCFTAlTMxwvZiM_eFBCn7)`LcW*(-$Knvi-!cueS64`6Xm7+YAA)ZNB{Rs`JD77V z^gkgxd;YT-mu+i8IcCkaKqZP%Q(w)AZyxGTUB-1MB%Y^;O*uQ%&4Xhi4yz55U7>kA zs};Qu=cL7)8s{HB&}u8Mw9LRxxqoqXoUY>aKT_)7YpOCSCaItHS-^m@_>I^vpA9 zDwPhu@r2?dt17j;ZTrq;m-JRc8RpZsW^Gp4F5M(PAF$p@lp=#=vmBUj{GW%pJ{WFL z8E_PbYR5U$Tr2w>=$^H|0WTm2tKnnR@Kv86xb?th)iUEm+IGm)Ghh9AR;1a`MUh)q zq{yl2NFFf27kqa1hzr*6)x=$^(;C(+j&(DsmBraM*I{3_X0~SF#itW3`^Nb3tWTmiH8-cu_qkzcOQka_(AjX~A=O+CfUmW6nwDe@ zdXwY&W9>Wmz_SVCY#I$UoBQv7hGn6G4fDN%>Bk4QPYAj0I>%wbPV3)Z5TO`H;x zIzFId7(tcfRXR;d&1>kTtY`~3zMG@=sk}R-@9o#3PoU1aoPw!nNXfH`@iGCQ=(C1@ zj+MH|wZK1BSD%sH`&n-ELSb&F$~Eh5L3O&lMJ-iH*FBpV1J}d_4(z=Sw9)YH(_rzR z!U11IoJlQ<523M(^YpZu#x#>ELLlZ5)QS88- zfXf9|pp|`ML8rz#q*4zr`YFUQdBZAbPW}@>7%J`ZB=x<+%S0FBg}(Ev{#MkmsK3OK zalbmX^r6ezq))-N1M(!htNqH3fvi#VvFvO(B8320Ag&FFMO_wujw&0SPTMHMKfkFF zB3vfz2k@~$Zs?EO=(BBi>>ulO0Sx~-y*iJwmgg>?x720eE|}lRp^XY?cFM2#{PA+t(uKq~&epeg zK1~x4hqb}6v^-{Pj`T+qsO2EDp5{r8!F__=Ik+uvNCdQx&tvj`J+VJuNeeDl^%pPT z%P=g5(4STSGQ_X0^lpsi!BFd1!I>kvnjBHJ=`wp`4eR6`-HpZudfF|VxTbG(f(mGl zd!%qP0uo*`nx<{QI*J7$6+2YZlq?5s(5dp2vO&iZyR%g#+wJd|MD;JDr3Tq(<0KEV zg%=T*;2D+Os96H`Io5D*7(E*6hl??>Gbk{@9kspQxaom*@(b@%eSqgc;9@M|h8PzWkiM9Pq-bUNS*pP254Y9&e;S6j96BPHl*7}TS#Vo1YeT(Y^y zGZR}QH*U53aF$+Kt>dl{20MixrOz=V{3SEF=Cx-FF5#HabIcLT;;%Z|HJf){n}V;# zeiH{Y|7PXfzL|@h#mgH`|JZR?tnK0Rb(j}(27w&=;T1|4z@Gj7x%@$F<-Ud;Z z1|c*3ZQ_+9h;_HA^vZz*9JN39{qh^l3dX=~2)V*R!K|eCtn7p#DbRu8EZ&~m7)Xgc zq_#Zx{{GJ9RW`5^XqVA@7yJTa5m{2GrQBC{GurT&ZP6PaaUL`)NjO~Opb>aB0!7f2 z;4QHu@EINu!f~hv}?N3_m$%az&A(ay$a{tBtkP_I28xj~$qzF7O?Z9Tl91U^>Ul7@-j`bR= zDZ6s}9Cd2mI_Gx+^slKMFcx~4F(>;MVq0exCeo%2Rt*<+Zy>rG#vxCn?{jXE`0$kv}bCq(PIw z_*sM^OLGUfOn_jI$_`GF5gg|=Q_c71Jc+9JoN)cPR?d)afDvl!&dIv*fspph3F9F82i_E49*ha zIrdrV^q>M@#{Jph970nZn6s$iTKOAoHLtznm6TcTHS}j@^&8%yfZ+MY+&ekmM`Clv zcF~_EfJB13+i(zyH4-uZHs2D&f%lRB?A4#1OKWpe4@KFu2#M|k~zxl>elQZ0@QUB}|6z(cmg7=+a1-a}&hHJ~iS)q!z6TKFE`@B|UI z>2w9JmuPtx`?FbiQhBW0G;i-pL~BxZ)?|@F%A+ZD{um28<^y-`!Z z_G72J*h2IhX-Hc3*9HQY)p-G$#98-TgM-zfUK}D3pXG1-ZWBX(RF1I!aCq)RdT|_V zA^p`34#q0zRl_u|4*?5<&iQ5r`1~aN42Su0h&X#12~(HhkR5OeOe16mjV)s6<~b^j zJ=O;nJU@r4Cab=p{mvI=tMRpoFY_0 zk}P2?AzQL9;aIX|86_miR#eKCkkZ(fls#*VeP3n}XE<}tJKx{$ec!)lu5r1px#m32 zeShxzfxFH6%)aEUeEiM-_HKWZp{9n$p5sD~l=bdL&eb8fzfJuI!{V&j56w^N6xk2F z`gm~nu5ZA?&@U-(S@eQ){li;*Q|N%tXh6Tszai|U`#&V8aXI^@)j#&Xk?7jR0=Cd& z*YlXWLHpxZ_{eO^e07lqMn!9_`YrDD?#oKUfFxB)lxmtq;j%0nDs0rRTPDO=XA!`J z|EQ;JbQWa48(y_D>1?lZ18E}r#I8DYb7b21C$F;&3Rb*xKZ^WuCd#fof(vM`=Q+AV zs@%oMxCxJH-w%o&yQc<+n#W|$?lEBAF}UbUpsjZZRRx!tP0_R$>_c6r#&#d4_9@nx zL5=dDzBT#7n{U|xMn!P}6S%}LP;ZaYgp9-{_8!uDUUOEruxN}S^5xdE$ z#@3|Gj~3H@8^WLH6HI9$(BDC1*~235)vsuuJmQYF5JG3Yg;cnySPy%zk*HV8`q%@* zLrYB;B-xXbmr)LNC;{(eav6a+;zYC8b!DMY_h#GXE>b%VhK}A}VO+)`E5L!F8Zdy}q6!-nq z*8P#E%q0yGG&LK>jPInro8keI0o%qIluLqsR@zvSX3}OP<8bty9|abZa`(wiM2gQS zfpoy~<-tkmCNc-}n*%ucp=mQcYRG$jPGY9({;E5qrpj(=)ChP~o1uBrx;EBX=42?r z+9QLu@pwo42S3VR2)5-+8ssDy`51nD;<*~D=mDGRm<&ST&Tq1|WhGSLC5{}FXv5>G z`pq4?n77xO6gV&s|J-@=;rHSUpn$t0UK3|tWiEdAMEsRlTR#fFXkh(FixKa*X|g1> znCkf(6x?bDUQ+nCIQPp}-nrgc#f&koCs&}FFya-fap?rz1wXlyNe0;Or4Q1n1yhv2 z1ud)uMsQTr>Nil`jb0Q9qFLh;RfND(Rqa#7h_ep*Z0W`h_5)l@Gu_V$hV^t4(!MFo z06_t-O`g-*TG2o~vbEb_toDaqkvhhvWHE8;k9gnK{ukG}n6>L@?hm51aYeIoa?*^_ zyf66rCk_f-P>;GA{EB?HZ$eKXI}G}RD=ejz0$$Iw?vEG#mggRb0>rqAUTw`+ZpgM3 zj|A@RkV4OlKkNnHj_;1+J_S!?{@~zkp7|iL@!+g`6ntfTDyV+R==f&2Z+{Vx`D33# zcuUz=Dxw)Gt7HcbO7z)l{0tbIH&{AGuQLc5ALpcVV(J4~pB)l1Ag%@y5=%5x!h7d+ zZ5Snd`C8p3in;b}wa(LW|7|B-v-UTr4yEaH&w|57biJxO z&}Ou9-Ef@iqux;?VbHl%5BfhlU zgd?<(3nmnC2Oi%_eLY>Vfz0Ujf5QLJ+Bl?nL2yT&xT@yFd+#7EEdYsF??PU#d0r$0 zXzoD1bP1{VQ5bL!Hrn?YSNUWxBH=f*_9+9OpJY4kvG1f&VzEbD{et^f@FJqpG9YfF zSS_$TV}Gc$U-Snc@@U_CbZb((F7I1Ni%mtf)Y3CEqVjlYfJ771PQc4`tqC(iL2Jm5 zPnt^B(EG}{$ z9k8F^f|+8{x?lRs?#H>^|V~j^9q_JMKk-qK@1h7`R2UL?9~$U=0N;3 zYVHh|QuHb;Y$^ETK~FoWJluHk1iqCwZ7r6{_9N+bg^3q;9;M0fRqf%ZImdqMqNAIA z)Kk^QvvBD$cyJL|F}#pg*pa=Ui*{wy?p5bGB93bCRwRfGTW@Trk`eV3S^RJ2;g>=e zKLe8~0ZRP5ynq}z(x}P>|E+w>XA{4vbYdmfqi0&c(((IF6jJj0$2eIBsC^ljUF%tY zZjJijXWE~jy!f!?_SRU+H(6{Y=dJq(4X*1yJ!w|^m^Czt5R%rq351M&^1YVbsjudG z$eNp+(Pq_Q|^oSS}0aW2krua1m15j1KP@%whQiCMqJgVcH6~bsin5AZE@Jw_@=}t}vBJ zw5W7Faa+4eSKS$BH||Nd0WL|(k@-T;D9+6g@hGiS9NA}Q_>UYHPJKtoD1Vm>aQMQG zu-EI-4TR$SXW5}`!|GdC)G=-bzP+CLQ^dy!*VI)))Pl&5BiN%y)eiK;{?L4p{#bvK zZ;F2=`1!_vn(>6;&u2dh^)@HM{wU>teJJyuf^&XEW?fAiJ*P3ZI<(RidG?^SN9#$B zk{)K=`}ai63Fqd=Kefsf8hnp+nV}N;HtTjzhD`O$V`Xj#jx)#Z3Vxm%BA`7vA;Hs6 zTPZ7Qmmd5noQ|msDXkm8{-}PF&=qV*2jzU4&}FlwuA3g0N+|PZ1EhWKTNbq0<@k3o zyF@DjnU&VNSoGPjjC=E0gz(3@j&)_-X7?!Wt|E}D7OPa`_-NHdsCxP7U!K=gtNsTn zLDMzo=pwU2*jCUI@}0~5K!aTru{}q1w&irp_gZM5sw8l+?12t8R{ZrI3wo$d6xvq$ z{)ap%yMCb0X`RlwuGef9U-0}#BwZ6PO2t!xFPfYW&OJ#@c(K22xG;`I*v8sTvD9$V zN&<~4*f7e5L=}&l?*+*`-jjk2yW_z=1J`u- zvwffJ)pa#;K9c-Ppmt4-3x$PG65bZ0%iST>6!&&4D(|7ACkkP|ccs$}{tKup*w2sp z^P!^3+{-_q4G#O*RBp@qPi>$I_(tMipmQf1LLpB+5Q@i`L$aQX-mAUouaBGwc}tyDG?}RnJ%(hIQPB&lGq=G2HBFX%UP1L{pNeVOZ1=k z;63Qkem8)g0L?&CWNQuV{{q-23fz9eH%piTDWaU!=PBZC*>Qje9?m#$lxpVw@4=rh zRyn%2nO{@+&=X!&;>gy(Cj?Fn*S+dizhyAN~Q%J)@yD-517po#{K3> zYvZ?aq{IAP=%byRq~0B3-5$vX9kYR(V9)(E&p1TzjiZ`M3}+MRjBg7fLoA_3r@Bv| zCe#1Dw}8%PP`i&I(aWI8C`pn6yhS^V>O93lG!Uf^G#5$AWzB;AQ-qVrs8JzGH#riG zV;EVs|DFCx6q~_cIQcDg3&2s#Vz`@h^^g%H5wEamrMS{gB`8!aKQCz8pi_cRzLezy zL#_Q|w+k81-nvmypdWB2Gu{6A&CfRHPOIj<;>0QbR^G)0Jv=nJv^Pu&vr~oiK#_5u zEk2LGbvMp77L7$O@}|Vj;Qx#B(2=L7>5E>C3>)~H~1mbmk#e`33B;uQmju|84`7z>|;QK*z0=Igm`yloH$>+g3HChnxSm3xJrR zxHR7WmrElPZu=z3ew|&C!=?WzNJPF$>?LwcI0l^-Aj#&XqJu1`wHf}JF#*90weCG7 z?)<6@?6~zOF`mHMXHBZR5IUp1VPI4sHMoG z?|<(RudFVe2X}fa@9mEFr)_{m>lY9$I*=UIKSSDl(9mCyhYxicJ(Jx?-zU_S)&lak z>El=7Cye_w0{pb-?b*%%ubYBHGx?s!er>=Tgbzbk_Gg|>iod3AR^H1P*NJgA^Zv2& z((~;KK*cTH6FM*T)%t=OquCIGL6?eFWGA~fbuTt2dyc$Zhj!BXMjrLgpk(X4gAJNX zS#+e6Y7dQtQ4`99-~x!`zWkp?w=oKS0j9sGgU=|Q4f{Fwhk!P`GyCCDfhQN?-Tet) z-jI1OYaSu=pF!kpNSq~@SBGW~4=GWj4vF&TDz@S872X**+*WG2*L^ljF}?mklurt} z8c5TZkWWXG2SHreYI$qU(ky9g1+3c?$5r6Fvrr=p@U)RTTTA@)coN{x1X}|;pPRTX z*aAmT!SBA;;%$|YmR}bRMd7stJNelIx!_=>T8 zQ!j;A4F5ym9oRvf_PqCJnB@Kwe`q*p4Yxn_Vw&)}{$%8{=SQC-m|al+R+2ZS`h+Ca zU*MzHuhhw!%650<=04k9U^lJVLmeL=(csiWe9v6_F#(`s~Xn9Lvy5ZhqxjA zXv!wGp}C&v-ZL##5m9Lx&LshJ ztZN(plPHbKR_utB3QxUD0yxjx&ItkOhyfQhNC z-=p4zpp7wbU!S1SHVUQqH{{(--=VWmhBWEo8eQxPZd=`~wELa36y{OV=Xo6NtfYS5 z7d>)a|4U{79nych|KRJ}Inr%9!Vn2qscMub#!iuR2+|WTYAFFzBZKZVIW^^ZfJ@|DD;`{`BI&rqH`)S*o z^0WGV0lVFkwn`b94IA@bP+GveDA8vEG#p9m*oZvcN)UyH?N%26l*1BOQCBP zpuEx55PMj=>1t!`gVoZxoIR>JnCS*TR9=Jiyd`!#hseW%VNq8-r1t7Tcavc*}@&L!D=;S}vXeJTpCxK`$q6m7+E z`-i_2w<2rBU;}4t#b0HylG>wADID2YuGz6Qy?XroMXi^aD%$Mf|erOO8erDZU z4rR5GVh@A?VLhqnBuJ0`SH&3Irl~ocYCt@e8MjC-EBIU(!3nTppYsO&F3&>qUuQzt zdxs>06h!Mk?h_9@I(Y5Mqst2W0Q8ed$)5f3J$U$K(3HL`)1LQ@QLdfXdnrW6Ze}L! zxSw%ei>W;)y&tolFn`_P&;*oo(cTwRi@4UTay<=CT;PxyJ#~CiK&|2OjPesWg)7x- zS#l-}cF(zLKhQhLdK(jFeb4D|LTly5bhiQ_5nI?pv{isPJeB}n-lMWk+a`1P>FzF95W2Ag*fW99=V4(b4w^|lZ@IpQ8bT@n z{SJ@C8(lmu&;r!{@`VrLCQn}_C1dz4?0O ze*Z8~^htK%hw%obdX%W+7;)_l8yoe3CoHVa!20QzD_`+#;K1n+%VozNMimcS|pDOEP{*X4pDR1VD{{$RKzE5<7r#Y zU+2qXIj8Isof#MMDv;?b_rwLjIM%%kn&)GRbJZ%&YP9_>T#@Mlp^-^M4A*|n3e9MN z6n4nuROdY^Y1k`FVOv88Qa^o8OSR{x?bn?*spiFQhm$dpC0e%!-iwHp-tGxc5%kb_ z;acf$?lWr&Ty!{AVL;H?)N(^-qy6D5CLmry`Nmy3vhA7LtM`St49Z3R2NIYnkYBXg zk9H{_&nYKG#ojv{{`aETE$|7&%#ZJMrlbP5`slwl;7{9CgU+kR9RA)RsUr`3@{g9) z&d_|x+PaDVj@}nhW`EUneEuYHix4ym7PSLC?5a6W;m_9Z10+ZDP2E{?RhtyQ4&qZ! zbrrx4q2F5o(w;cl@^dZgEc%z7+NKCI9-U4^0w3Lz^fu5#*|caD9~)#;V{@+>CM%mi zSxLG^&_0W7PY;D?pLKl7d9d36?%%MN58KL83W`G2Nge76&~H76+w^%XlJ(>u#ptM1 z>n~toIO!1OdRVp_6qI`6uIn`Js;@6a?^=i=q!w+Lu$3_w#uC zn^q!9CvC1@G-qALzEUox6sH-|zU3#9HY_CRHW_QjImqK$w1{84&Z$F(JnG;m{7G^3 z;I1f{X81FFQ@cfwS|E9b9iN#VbHPli+j2cfEbgC6hH^883caSlb z7A$)m39q{tuf9s=XcVN^u$_cEZN6Z#jOELVg~sB6$UmZ>b=HNR zKsa8L*=0Dmp-X9vvb_q{vS89l%>V@`fJ=K=bja!oNB~*Mmpg%_1zm?2%P*JC8Ign# zzq;^E615wcPe)(PM_b!Bhi>B8s5k{X(y7*gO~R*@Q%dE;g9y%i3arqWTrR^mf+Vho zPf(q=YsW2BJs!cBTWi$?!{EGrk8TICXdZiAr0XbWRRb#7giQ%tz4c-Pi zH$7XQ*rSoy)}aR6OaI}$*mm9|^c8FIzk6GlGj7N#ANd8%vyT!hT^0Do0rW3@P0tN8 zSdLL+pE4cUyk5}iY3EhUQ zl@|203pChn>QGOpo_`+oI($_2tJtw)&^BSVwdhFo8*`*A zEdi_c*WrR;ydF{|&n;3|_Jvx8vYrTYJN7mPH8Mk6Fl&qTFG^4&Zt&&@!(sgJ;>SG@ zK--yf9;}iM8ocEtE=^Vhyvj}i?d4Uc<-2_Z(D37|e#yiil2Q$&ik!&b8dl<>+botQ zf*48`1x&K&XhZL{=H6uTjU!aEj8>R45wGT+ip)5y-Ud0%EsQLw@Bz$0{ z5PK**##!PNl4SEg3ikW^FFH|@^8~a)$ZpmeUTk}ONnZkda&A{O3U*c9F^kCzPx*(V zsUr0uJm`&o81>0TGEXJ~%eomhsAz2VZ&6P8kLuaG>-YON3+2>wcK$`fqdq z`qcExNLVm)W0i^nY%8pC^H;(X&)`os6$~;uOO&xtFhy$kZBWoLY*!9 zLj%>!Hd;EhC`Jms$<6B5S{j-A?8r7d(!P4guV55NG2jXJRUaUaNs2WSOW*`rv^(6) zH~R)yaePVFV-Tg|=)1ifIkbv*iJlipj@fpFKJMzJ|%ydM|nM%Wh2N zx!kAYQm>>LJhnSc4I`hJ=;msVeof*VF^b4*mRadwdXBG-5PsevctE9$X*$=anaWGe z460T#r5Hz+6Q@L+!q$tWPY~}#y8n+~geKTtKk$(v-gl_YgmsAzu70&MynkkLjeU$dir{M;o65kr4@g#XR}NV4d2M$kiApG zTabh=Vz{}^AOX3w)#~!1yct2xVh5lE9n8DFoP}d1Q`iXb3PbnlaV|(ItA5R-|5zW1 zi=N8e%NX`O{EYbIQ$;?>Vi2ud^<<(IY<&c0>1`ebBWM&8u-S_rLdj`Udl*q^FEIhW zg1Dy5s~GAFjt5X)z0Ge0dEtt@TgO@=6{%p zFZs;g^UETPCoJdXQH8ah^8;jgPS}FY{zOo{!xR_?OEsk!#OtqfbS2`8M2FGC|41#K zFMEl$5tRUPnH!XkCr)x{*X?-r9uo1p9aY@|#DU~k+Sd%#eDSWS9DU96O~@HE+>n#a z3Qz7Sxx3-L$G~Bu=KuOz?SuIpQY`7}jZ<`lT}zFWBB7P*7)dK;G|l(g+ajiX9#L{i zi2}=D7kkUUgMBVrIYIR}#f3J6mEtLkc}8R^R7G^ViA#|-MdBb-4VN<_^l_2tTl_8E z4+Kc*3+#g*?LU7v-cTQQ%e)T-ILw}ETSUy}vGQqPGUvQ;&9|AHf7-N03ef&a6=fgi zk}e~}Z+a>e??pF(#u02?3eKa}dGt>Lc7S&D?9Hp0)>I=BiaiYVmN{rEAv#ZsuUo}= zu9|<6y-&+hMs)Nl_eXr*oUWt~74?D9awc=w-uvOM`*Uk%5JQDHT5o@eI{# zMX5rPM9m{H|EtpfK}9r=a{pKUvwImpWRPI>0jP-Q>M+{GJWABhS~N;+?~*iEVFfqP$-Pw33d5O?;i*edP4ST+)Rbx5@PIxv={F`=8fuolK1j zS^ITx?@*YZLReJ&*MGPzh8r}>4~0b^?@K;SU4cnw_FCUR^1a1<@E5P05$z0=1&hz* z+(Ml2*d8`qK481(%{m998~1L!+0)Bi1n!;M)XT`zyPhC5chUm6pjYXtWQ_LZuH0{8 z-%%2zIoAvy>=SSWnd9I8s(jZbIfg#ptG2E9Ez%hsN76id@$r>d2&;;#&AN`}?KbRT z>c&W_iqln%;o$MCicp0erNd|$Bsv*+vTdgwzkAX?|587z^xZH)w;O&A&}3W$ z&w%Eq?eFn%xTH?9W<2WYa4xqa{Q-zSrJ=lDn4jJH(6NASnM0Uf#YBk}(RT$AZ3!a! zJOSk0VeO~HT%Y5x$hiM8xx=?6^C~G1XLai+W=9jTp}*rmeO|3?@H#T4_z7VIX6AOt z0B=}R^jg?{YG7lbK4K>(sW;oowb_!P{W6L6t!fy%c3-9zNl2DbPI74gluus>-->p5 zj5H~J+X5{wB3vvf?D3kMzdyKL?G#7kM83FgVzZr5r5Xn8_@cmQ41vg7#N41Vz$_}< zbozI&k_L0(&u>t}vFtx!4fLU4wlZt=cE~RPfBw(L6mWpW}jWuk%qm49C z%{qhXiIZD|kEmce>eLdQZKoefZK;P%YJXE$vpm*}_PVS1Sn^gPC}wwVyQ^*iTr6c3 zQfXDg=}7gCv)jrf_8xlKO`Bl%udz_ts=bG&ik1-8Et~)s#R0S(lISikloQ<~;2#5J zLHrT5?^-syxeD}U78T1zjhaiJm7Ps` z{3KE3j_jpcUEiMp?rujVGmSrr8jcsVA^Te-8(Q&}0u75a^j$v2bk!;5Y@}99tuMk8 zpX+kugc8+=kz;!5GRjZg3w}%!R~3=yd|dv<6V5Dzqx|16X>1V@XVTIz=|0tHo^;%( z3jkJ^lTcZ-%l`0>r)TBN!O$Wy$AIFSJtX|!*)+cxR2>t#k}i+?miQq$ZU!en87(nvOoK=1?l%KMhwrC zP6WLpZgP~KBKWPznmpVV{Nz`XTnFVbTiN!jI4IPJ6m%^-pQGf+n$kUWPQULy#t92w zbH+YM|8S@;%J6y2qIqP5C zCPAdiHQWl&`K=92fZvXhfhn#MMPw56FSIfYrF0Aetos11QPC1zP~F4qppkfMzbj*j z_@P&6h(Xnu$BFWp08oQn=K5tCkNMrxW zT-TmimZG!%wU3DwFl%(f!<|=!zCSfPMM_;&6-MmPh=TUY5dBM^&|ZOx>t^od<-~IV zKnM3r>ed;dF$ORIUZQvA5%V$?8@svS3@-)-rg4~E+RQ@Qm<9QM8Fwmbji5NdjOt8; zL=mm{%VcV9XoM3E)IU)!w@yy+>(RTrxN^R8GxiQWL6blvch}q{$F45+CJ-S~awC={ z9RB7dys8+uzJR6a7lyqmI5{!dPX7;Zn?gE>{1kBoj3TR%xC~mteqOv`={#_`TJuJ2 z_g$jo+*{%YHO-5!&@fa&kx^hvg&paun!MmuIfPu77T^1fj@k25^$@Nd9)BZr6925C zY397DS=$6`wAWU0mV3XJcHTYhS@^Zk9eRsNzak_}I)J@~9E&W7+%K^6J!@WQ1W}gU z!93uLZqe9vxYHx|;yyqk11nTkfrDe43}C#QFnW@Be|3tOhS}ugb+qxb-rOiboEzy* zTNK#KqS9wa0iG%vqxlYb3&i30Pt3Fo3ejkz%Hr@_J>*BTdx(PKhhp!E{n}1i91y8ukEpyrFK_0IBF?p_i-r;f@K#*_ z*&0|WMirC2Ju45swsmM8(_)*DGIN`~*OVfRyCoPZ%4_-2hco7Qk6zrN#-k#a-W@n_ zUGa2UWu#)^-xtAR{Oej~im@Ka$D^MfhbQNZwdg`GG4Ztf|75wusw$%RKml(z_^h(z z0427D*+bJlL~;gy-XSE>?z15JB1|{3fa2+1%rbNTH?-8C-jsMxc`vA;E&kFrv$S3+ z)6%PsJc?TGXq0zW+1b(bKBq|2R`hUjw)vH3#jjg?@4ja5`X14o-}A*q=rPc=iy8ha zEnc90-IW2o4g>g zCVmoBYzDfQvf8!u0I;gS%Zz46)-5!Fw1`>G@%aN&n8fkbDzhj1C*l zfMl2a*b#8D=$i7Suj{SEI}G6xJ8k*e5K+uTYxoy%_`+V3iEinwhOPsLO1T^u!=A@? zRau-)a0U5JI!E?Tckc{wgLhTw&+gt<{3sLg;4P_trL6R?hnd;Qx+atkK+iI*MmnDg zyMLJat=upHem}{k`a7ZI9bqeyn2j2jxF+GV{nytS+T7BDDpp>>Dx}VV!*f|RoL2Wx4D>b!jG9?J8*MoI)=bQAUP^;iu z@?Rh)8rH`DhDdGbX(~@m2)`?9>`K1O%x?5p+Gi1;(UW(>yE~={pYD3VU3aDj!YQPI zdoL$XK!e1kf~xlJ`Ki5Ie47I9pj1vnM9}eHRqB(s#-tMbdt3xf&pnXS0Oo{eGI#4*6@9l*j^Uee)N!($qXi| zz!`_qc6g3*lKfkE(XpnTqWsK#(j>&lVjGD`Y+AqzB7Yvb?kmkEBl2N0x6lW04hC*C zUgh|yjMF1y9baK8fmH)RN%RP+y^s^hc$f2Ih@I6sc2jpVav4-8)SL#78-TRB8Sntl zFRk5XiuglqKE0<#+CInk`*VGr5SLD{U(IO7s8vM+HlgBW9%RRf2ENqT#|&3}c0zc( z4qPc1A+r6{D}S4g#t9=4{f}W*jb5)u5blMChFzyfND&`+hSB{;HfUsquyG;UuhSnh zjR8no!GP(QHK=uPUGo>p@Sy&P`tuvEpsUPHlyM7ZYwzrPsLo&;z2E-@y&Y%nilqx0T4vTz+J?IA^)Kg&b#c}gppITu?~ANL-!s14|7@Nqz8FP`!i~0GBOi#V&skx@ z)x|n`VNeY&2GE?dl@-h|A@1TbfCNee4Q& z8_i(}<2N+c-Zp{45BHXwb4B@W(VmxtIAFOaiD;KQqWC@`T1>?BsqobS9luYnB#8p3 zJD+#v19;?vrVuC>a`hZ^RwbgjO1rhh#6sXg)@{U92Oh*vksiPQm;fjyO&)aTtspzf zI>F=6-R%i1$~3OdbbL$oIPm=RS9;>vX?BnA7pRacovfwTE_QE#A>L`A0Yr59@?FX= zhnKqH#&?H zwKBq>H>fz@oh^)tNe4ElKI)|i{*l|s-r!RPNNnNh0z;#djXkvaIcES@xTbt z!=H9W9!+B(ujEWA&d^J0<{au3F$bnp!~LjA4;#+a=IIbad&S87*6l`REEKGi9N}#e z`@tAt9aI1v57ULdQ7|I!2Z45bOre~Lx5hsr+Jvcgz_K8U^isudulJ7 zkOJ=HyaLT@UF8B{Y%{nHG@xe~XcpCb(y}4XDXffN>Jp9wW{y*wA5%QP4UwEm&;}&7 zq+%|bN*#54X42@E+PqrS? z+oJ#23Ni!X(FOFH3#8!)0+Bu=miCP4rNO~Qm8c@Rm_&Rl#UOYO72!ysvLR3Pwzrft z|2rZ=4@ssq#XeKIU%q&nFKX(pqofsXke5TCax#O-_ui%R2TwoOfAr`5tMsW?sxvuu z4P}!rudt72)&0-?kkAMdG9%|J`a}e@-lm^w!T;BivHpC9&|2A6H>PR@Xh$&Z(UKx!x@s6X^)fT5cQos6VZ>Oas)S$z1%_87g5@HzI%SoCGH-jw8ps4a2(mXxV!T%(hb)M;+xsy$4 zqjKp4Ab$5X6JNOoqqxBoA+*#~A2M_3rhH%Dt1f!EBQl1qir_4!ryAzYnl^ z!}i*-O|tr=%Lh-zfsH3F%XgoBCwLN!j~56zrtgSHPU7~~TY>2dYljF{1}#L7>)Sn^ z>Rc!@9vQ=e4!zc&637urG{0%1Tpoc=;vzmp-a6#O=#7k$=$q&}W1!_T3&5e8Zqi9K zZe!JmCX%sc5iInbh6k>OD5xa3+9;EYo8bZ0AjabSJYKNAsEP*b+i>Y`D(mI2Ls8n~ ze_Ng}mK|u$u$Jq~OUw-+^bV{AVl?^!tlA+>=Hd%mDmsS7p`n(XPbS&^hmp-wU!{>d zNIFAg{q2zBh&J*yP;C~2>Y&3{M8T;}%d*#!^7k_TYabc=#YEGV=6kSK+GFJ^f?Pp# zkXZqCzK@{YtiZWcGJYE03zV%nFDJA^_+>u$g5(zsB!gN_JJ41~KXkT2(O3ID7aZb9_GTw zv}3y-t3hsSo>S8qo96chj8}=n&qi$Fc1n{6pLH(dHYo$NP|C}Wrwe$Wkfec^&xHmE zfplZ#6i2Vg-;Z{l?N#Bvrs98ZPBa77k5#_x1soUjqIn(-`&j3U$e%#-+bZK9K%Qi6 zX~%7)KfkSjoNGsZ*Fk4|RJpt&2J{8m8sR_%nLb3v5{N?vkkSQURO^a!; z(#)Jaa{j~XwlcPj$x+u% zhGagRety=xepOSi^!m5;YOr>JRjJTV$;xeBuLY=b|9WkrBFN{A)uBWEEd)j$L_hb` z2_opHb*$$8HOq<+i_r>~R0i%1{ZrZKNIg+w6U$Bvw5o8=aL4XFGqk9WB(42HuR^j_ zbcC$=jZSC!TgvaNV%~2Qvx%-$sHdYrmc>} z#Yr7FcKDh5UJb}1P4wQ(>2w*YYFJt{E5nqmv=}WLk9wVSD89Z&W_7<;MkZrYfLRgC zW|o9!8Hh__M|{Z>^{LmTkQ#H?c6YDzv$U;z^d0`i=EhquI>SXmv=`2OC83sZ-WD0# zfysIL!?_#zRKC_sD2?fk9y_uNSlTyPqdu7)MfEq?Q5l|4B`Vm4{33o3{{k|eRyt@G z!x>hez9QhPn+&9bdE7l*4hKeufeM+E?Kv*6=}8wY<_?5#x-9xTTSN5|bzYN1Dadqy ztZU~9GusN3LtKhRbcpgS_s@`;Th8qrkl%&oLhY7TjBqBp$n(z{-c~wNEurAQN^&^v zQGep!$-Ku0(AJJd)<2U)iK>3#Jju!n?jlIOr)$LBz;j_ILw$(Ss6tWQNUU;Kf%W;7 zX{9yM>FPCxD|(o)L$`%48fUPVT^)@saYqFay%qxH_^Zh&0RibORyg%1X_aSP{HK%R zENKqw-x5eJRVgx+qi=2g(N%UktXJ(X`U{aR9Ly}aOEnp61{di|c(}Bnj!}roSSdJ` zbKxE5d-m7eAgSnweW`hY(DVJA{peOX|JA;%9As#C$o;gnM{F-zDNlN-^T z2Ynn-;i|?JttKN__kJ`wi0}!{i79aGoA~@ZT0R?hXaPX!5ddG;XBD3w{}N9n#`Byz zGWL>*%YSeuns^KAJh}KK$G*r879}^@ zz;+JLc`|!4d}K`bH_`xat%Fl&(;BcU!WRoA+|bJ)28X|E3)9MBrgt0Uf3p!NG?gI( z5wZgJdFMgy)zT;;NVAUN@;x8tP}r-KVK)q$sF0#I!M0FSOd|T*ym&nn&Js^}8aQiHhGcViFEoF6}W?$0*nBEHob6 z#5Na(`}LkFyqw1z;TLO1j-2mXqXo2yiv0+FI`sjE z0GAP7Ky{@94TejxK$Tkp?>h%uuV2{+))h*CqddnF<_MaO9DCY>$r`shA4A1opSp@7 zE8hY1bs2i@z$|K4%v*Kw1IGRx9U%E8eAKDgt~uqH9y?;SwJ1)%XQdwFX)@cWp7M_K zig#dc-`0~S4Uxyg9JU^+OIg&aYf#6r*YyKP8uZXG`mBTswGHqH)In|6iARtV1a--5 zuZA4+t2{Y$7(QgoLltv5`3bh+1#4X2*JwErL>evnzWLAPzkn@Jvqf1Q$jM|I_E(qGO`NaLdqXV1EN^jEIa$XIF7zRUG zKu#Z``xLc_6-qY*P(ek4ez&HC$9HXiu?g0x90@AnC)h%CfQiHSH2P4-NbRA-cBCT^ zvv7Py>%)=|!<t%rptf8F0AqV&kW+ouZ-Jjdf_r&vB zK?mWrt$>IX3Xx8cyp2r#bwBsWtL6dk?P&}&a6(`#inMtlZktm&nIUy6b4pJsYK~}L zk;GS-?r2P3&GW}ZBHnN27`I|)0b!(|$c}!cMCb88O}#ywyQp(=39LWawu&$&-bt;iu2Z!1!Gg zC!kY#drtH(0pjXEDu$~u4hkutd27L)npd2sS^PEZ;q&T-^`*nhe{WzX@dMf5je1Om zFi))1;vaUxmnYireo%4b*-Om{PqY6_InD6o$>(sBG1sy2s&RvA#N))h z_Q!FLjhz}_WZt+Z(!a8?`{|4Snrc(%?vL+1Yef9`BO}wby1~7{>cP=(9}LG;oj)26 zvDBK&*-(vxM7oxnUj1bc8M$ut?`nYgEOtK>X_2&Bn*sRT{Sy5ij6Ivdv|SO7-|IQ_ z;~6`wiN97ev%q4`^dlKe?q@*cz~@c=UuEY=EIx4OOMkQJF|A=+ZrbK=Ss}aE7OFYSbqGIQMK8)^)-DeQ$j z<9TJNDgECbtr&oYIoU@_3ewM(MeQ3uvlJHUs6EK}P3#-dUXX+$@H6m&;`_1EO7X-e zAg@gZSf7NCNL@dSXR$I80_!iyY^r9X$J{t-(bpx!4{jmnKZX;a+jl#9tCPWA-I%xZ z8vd6oNNQ;9x(mGdJETe-O}~!vFV=C3s>cUYV7>h&sO=g#2>m?t^3TJc%a&YbVfO4H zYk7L(F)tRbtjvb7(0#>=GAE&aGlAke-*Da~dp}#}sj+Q~p2tyipTe^Y`Xl@lCDuBo znYe+SRw9FbghgA>FY|&rD&+IPDJiks-LT;f_MgxKv2x=hWw)gU`3Qad2x6<1Png2& z1zM9nA%kB*qd!Cz>jM|?7ZEvTu19Oi;>*rdzzof8gVNe|I{f~$p|^)Fwp!ekaP#`8 z9k4i;Adkosb{sZS4;Z!Ov`~Sz=_~#VB=qL>>ICda_ogVKf=c-Fw*ks@20sFIN9jP{v2T!`+sQq@^Gl$|L;$wR6;0AmMM}pNy^StLM5hBC@~eX z?^$9vNwzGbRFq{xMcH@R#y-iO-NZ0s$ugN^J;RxEe)D~<>-l&7m}{;x_kHgB{aOp# zd?Sj-ktW?k}*Qdv{nk*NiXGR+WVeCRUGcY|CvgS z8;b$nt8cS4D(C5;@`uY(+TvSGEb1Lfsolk2%z}1?+cm}ojLbqm8bA!q!sS#Et0lUs z{KZnzWOmSA!qST)$)G46b08HALm zw4#yS8#}g+#eod|hZ!{~fd0-yHCLXe$elZwcUHnF+$_u02QI>Ve3SE0f>D5s=esIt zJ;$=occW+EJPOIPosv++^Y)GSCEM`thfy1jT=b1;&k|5Duon3pz7WHXXh^434*#n9 zWZeGJZjL!I)Z#Zlt}*9;21%}M=k2b|jhwkTzX0X8?V-VJi^kR7A)V?|$7Jxs2V}~{ zSBmv=YnafL8-{{bl3zn^Rt8l@=-0C8b7yl>KFej-+Y1Pt9=2F!i=|q; z%Zs^H;Qn&WoV_%Q`91A72S*#6-kD@8+wEqSw=7~*8i=e7H;Q%2=geSEP>ij)#qo?2 z6hIw((ml!+Jj{}|cTJYuXR#NEl+W`m7@c@s+yU^p2mdZ<#$-8EWW41i*h))o5g)YH zJau@zTlu~iaN45esj3Fj+wdh4u!y=UDjF2Bq)4rJvGy48E?>NWJnCEFHru)w=9C8_ zpxS-4XaL7b%=uc@0cazqL~S^(ORyTdTJ_*Q^@0FYsg>k4wt~@!F>kQ|^^VN|Be#Sg zSd~bQn+RVsJoYJKyfV*V_QdE_);TnGW$FC&f>yF>Y!6W)AKN2=aWryf98URj^BgMv zFuqjU`^%u}1g!vTTR{Yd?1y96IBJ;EaLZ;>Q(zp>N>G^8BFtXwq;I@=pJe zt0<;F7`e6=R2eD{S*mk0%Xb{=H_|HT=fjGam49z{y<-@MZO+9r z6K9JcL@OnLBairVet=wSP}>2mQQoWS3k%rUZG5q_w7*<)pX51EuI{J--yU->)sFxj z#uxkTpjo`wo@_pQM~WHktYc~V#2$mHHk)%Mgss^eOgA|$$=hJuOd2heU>llIg%?+3 zub-aJ=&BVD^+it3#9-Gp*zP_EWdj>|NYf$@G-QsaZqkmU>ps5lHtf7TV^a*b^&^}t zUYXG@daF%bUy2cs;K5zI-a`{(jGB2!@1-=_IU%TF*=X+btNA5nfG=4im_A0=UWD`zj0UV$) zUI_m-Vt22&6MlF5bCk*G^&rI#pja&#eSH%NLX`Y8YPtKq^L1IrpO%Su4A&q|GS5oq zd>1=${Xt_5(UmMT7_RiSkw2*EV9UqoO@oXxCOy)nyW^S9-@2-AW{cHjNIzZG8@;=< zndJ)>)Or~~yiz_fY5o2Dnz8%ccxZ$cJKt7)%ETWY-3Okt|CX^WYA z#~#5#;I-Q=YiScWa50_uVCJC*OIgr0D~&Czum+c;jl0z??-gs)iNd{6H3hO#pP6V) z@r>;bUXgq%2bEFt$emN@gpJG}6QK8$mE|n?qFS92Ip$HN={%qU$*3hy5fe79AZn7R z6;w?p=OE|BWssn z?QmaDixB***sw(y&1az7&rUqBx#Cm~C?v!7MtT{zzr)5f0|NY2V{rEqm~rDbGZkp% zIv1zl@S4tcfx}_9pmN39$lRlA)st+o8VY1%-ld_miTv~spm7SlcSO)x945(5QIr%9a z*<_m!ZU{`SAp4&1#;vgJ$A`MfUU0R?p2iqpkh~zhwJWmdwZ*Nabjrp5NZxhdff>v( zu_=d?)-K-}EMFY7y_xudU-m*Qw$)|And!QWfrLv0gZ^100e?4SL)$^#FnOtLcA|IY zT_~(b9FQs`COxLEl%KwGv#~1u>t@c1lHYyzkNAoE(6~6;s5~F-jfHT&Rtl|R@L7Eu z`zb-)f1q`W*xC@RO1B}?$wDYSpt}QTD0wV3OS0h{1m<6EX4WlMe$%KPmEWEkx+SOY zG=QrSHeKdhLJ*q*H2x6idckJOmHu%#OkWGMueoB$o|P#x1c=xVZ)!R|r%esq}77AGFf0 zXaBl6LUZCss08Iy5?x#4Id?$}C;^=A&~5fnMFvC}Dqc03sN@PwCb&K#$m#KSV9|h3 z`g@&)n4Y&?yzHlp3MhHeZz_-9=9uEV9(G}gz$4YZlNzxLj>7HmXpK|-KgwIK#(?Z<~LqB5$vDTI!Iz(+v8 zXU}6%x>$bC`kWMuk8f?9nBjlew;_D)Ao2cBcUUN>#SBsZ-^phYIj z9oS?#ewXLPb;_n>HocFqS>T-LgY1BFYocSHsC$vAuW-jhKK;&yN8wAVyMmW-cJSqmJ7dqa@8B|m*A+eG zh6UUsP)&GjHK>Wu&Dw`oFM*UMv|1zp`CQlP6_X3DQm7AfiY*BJ*&W;;{X@AbFV%0R zkD6ybXTTC&CU2#EZ2o5(*|r^Q>W-z8t96r2ygVl*K=;7K-tsX|!@rryP*zH3!pJYZ z@%VyGo8Pf$T++O|9Cy!N)%YYVpgD7dxhl4R5%}zZeCR$vYp><^pC+@ukpndm8DI`R zNq{@*e*xud6_4Q`MnTkA^5bn?PZr$8bd~)c`nAyX*U^WZfd@Av_J>LVX?@Q5rm+sH z85IB=+4uf1~CTZQu~ZG4O&f6x1lppdlp3syK>A`^e^D7&{9 zWGjGIPI9gj?k_gn6zL7GIXIQP=qy5XJXu!@gaGw_-+inX=TC}^%T8=2=G$?_Ga*F9 zA;~8>z&7$zqcbcpNcW5pa1ekqFlf<^I~bsh_z3<%VPIBp9qE!S82d*gZ58+4^Q?jg z(Ra@EQxu|J6>Q$PqZ&U{{=V|zHr;L{q4tb(dj2S) z8(#38Tqwj=vs@4bZgAgt;2r}zm8VN>5U>3F$w(YLE$-@+#By9IFr&vU^^>Tp8CT=d zi}&qfcS1((@C%-*QX=DAO+ zrRt!6I$#?G<1;}+z7~{iqwpc*5VbSlbqWQWEd1+eRe5A0Z8%2PWj}g$r^2_Rv%!cw zXF>wLG{?a0HO-5_#o=3zo~Gn5+@JZ-%|6i;kHubcE>KDFGN=13|K49v9nMy|p>N`X zqhLlwLFL|Afbv8a{qNqI#fqS-P}1soj;z@jp6Q=>O#H5~Kh`<}*^Zg)xtc8eVMJ~y zhTNggej)!Se^YNyZcpq5Fqx(3!X0rq9LlP?+iPL1Tq0;5>hj}Y%AfL&Dcoh5O`Cr& z0~Tesa7G(HQ-nV3iG5Xn0CS-Km0k{OtokhaNUT|q_2x1hZ3M8fOBKYmNHb=%IN>CRrKW-z%E?w)+5&tNpPdMg;V^wG=Xp2#)YK#RqRxSH2U*e?d(NUlz!#N-Q~&?<REG$ zd4Lp!wCtXaoKuemv!31MG{+U%!LswZvh0L@{{lByQ8-pBOD_`6rn(<>HsEgJ3g zGS@&v{Ud*kIf+fgHf8!pbjoDng$VMjq1L zD$h)Vn9Kym2$N1%|TMwn+Xzv6&mt7S4`NcG)fp1t#Y$q8|A(0!Ana0^XM zyHcjmz>Qnmie>69Us|QUTdK?s+B61cyP3OcSb|!Ulgvx_4dYI|3(N5-|bHVSv0`gE?Kx0LDAjvC0i}llHv@E=k+<j*#NU*`QgzqJ*0eKQlxP>Dut^BBl1ifr1hYJu#e6hbHg7p^@Y+xX z)xGLl&=eN+tX|h!a;IR~5!4`)tyk+|3;C`~9Hx22f-W){2fRwVqdWCTa42B}7|O4K zq?z0BY{+*)FV1yqaYLS2g$u5+@)$n;BQFNHOr4$3qsEdr zcdBQ0EIFGaeN?KWJ?T`G|1$jk6vN=`T@$Lz*5bgwt-l2>8wt3ru?<#vcX~uwb)AP% zHCSv!RX{h_m|h_D16Tly>1vD|M;2OXaWjCJZo;__T%YhOG=I}l3h?P!2Tca(%1xd( z?>718hE@pf&6hJK>FTyBH>~%M;|!AUUySkwK(+q3NHcfxR#YAN8%>TA@*eVgiEgip)zgl{N@EH-i?!<39nOvV&b!Y+p=OkdMDgorjf9j7Nq{c+>G3|GvghYH2GN0~6!i+| zH(h-OgRMp%ck2ZhBj*k49QPhQJMf)Tzaf5UCoYzn=&!-;S}g%OZTto7LwDfV%Dja=Jl9l&@^;a8Uj$-ck#B{$kz+~GL)x#m`g0ecRMYCK(>iu(8h^?-9U|9oRBAPogh zH{y6`jX7o0Khskre?+Xr5gA9>4tvw(k(uy)zFx4idovexe$le&9Vg0qU3SKK!5CUJ z7WZuVu|AR&|k!#G9Yzr7)*|xHqSu zh0^Wyc>b{T*ffe$@?aQV^|A3uGkQ+-GImxlte#lugvYulwPI&Tf2s3q!Ewa_pi=6J zIy(KN7RGAdfyey5a}nq z_fGUoPI(JRUIQc4UZdHMmK>2Ih!1>%(Ds#9JAP`ZOcc9p+ySkLK6~~49;Z)ituks; z1&xso*aSfZ#XyYI+W9{mayrH1A%-Z6goN_R;t_>;uj^&%u{XW6e} zbtH%WB6PjJ|F#9|Bz$+J00n=2RSc6QpKH2*tGL#o>4)@eHMqZM+&ttoH+ zw7RB{@-9QIFx=wi8kTwg$y&tGrLcW#N~w2YwY#X7Z7_nZL0>;p=8|={ZZClbIJdU? zY4Dd;VY`d;`Nn6K)Fq>(K9j+|@~yF1-PRpc$#aK%Z5Z2wu7Ji>LJvfKx&<-^>R<)Z zP~GZlg^iUUF%=V|u;j=kBo^;96tt+P8r9i2oB16Bigdee2&*=lJ$kXP&39I@qFfET z5aFY;Qr?A@mOR~Yn8G2 z8)}j)G_>x<%<%4ZA)(Eb?aq;Cr2GBKVp$|-8H3{?Zy%yQ>mD-nS}@S1p7G$-s0<-* zH1JlaShFRo?o}1c`8;M-3|cWcWK@g!dj+XutQ7S{NC6pvd*W@5M7WdLGroOaNRGTZ zkj2L_V9XHv8=17jGF(}>KEtO85yb)(RpU7@emM~>3tCk|aw(V(L4ws4ZZjn6KOfRo z7x(7Cps=gJPQ!R!{M=kPXoF`j%tV|Xj{_;h4Ya|1ODmePN!9`>v_@JlSiy(?&;}Z6 zzx!$pFyNB!h!E`{5Ruyr2no(;m&=xy^j^&M`wfS301a^V(}(d!a=ElzQektf z*l+G~vQ1MLWhw2Yc|4c!+TV~a&FI#4wYnD@UEkb5IQ-)X)Rf{opHPxFfmd(?4PMX- zn=!R4!J1(k?4pKPc~v}MbiK|?f*!~G8b^+iJFz9__Cjc znnx^?<(iGH7Ujs>JX-p@Q*N`inp@?=t9!Je|Kn;GooHLHd9)2LkR-P4;|%sh`;`Gx zhYX|frf_Fnk^9uRYm`L8i7c)6MLPl-uEqj0I>e31%?MoLty%-a87kBRLK-|-YdsgV9Quui}I|gpB&+j27ZX*SmJ_>d7r8}uC_T;M$Vc8zq z+e6PVMpfNeFZZnZB7ei(bJ#XE+(5D|lMc~koNlG(*$04ZSMeCE<#;SlvN#wgmAX&@}05 zm%1N5&yPaCvLj;imS^R@IN$q#Do*ga(+?`&YawIMs8lC^5N-!6^x8o#5poOt{8p;k z_kc~pwFF7iy2O-w$jd`r&e>~unwcnPa~kFbPTs+ zRiASgu`owQ(iqMinyRn5ev+6TgNObW^gMz0jr9Afz z$&nrbuh4qWJ=lgex#SronR{A1zCnmyMJx9E0$6kg8&hy}*n6sJSHa~0zC9-i&8m%p z$(D_NNCQzG&Xb-9ONAEZY3>=glgpNxm2OD;O1C%*5^&(A1OxAx zspyiMg1(=3_lBeb2r+zr`B|Zs9$~=LNhpC7*%lw{^UbveIV_qAz?uBAaT1=k$vzH` zH3{BhFaNwG#peU3j%YVyw48<=L432|lKNWoiXc1GXhw{B)rBAH?-EY#-LtOa1xqX_ zEtFSkd~eKaIg|X&^6RDoa{pful(j>0A|aR_s-TQImkg2odlf#k+1uLG2#tzIEI<*b zk5ZCX6BI{73_h{SYLDpdjU<8vASU>>Wb}$V7N7V}YzH8KIFI-B4hBQPK^u+jitd0LE zM7dOA?oDk^RNF4@h{2WX0aO-s+e1ivTZ8ijbu3{U$S^Zi?a_$AP`v!=sHjy zB&c}>*BzYcwp&I_vp6u#t!M1JWJ4IRS`lO($nw)}3m966>g5iAN~6*hfBNfI+i}i@ z*hy-OU2+|Dec5-iTeq6|m3XUF=Y8$^Sb@&Wbip8hhaPirTCDDiRY31E=K4axM&CDH zsb{v;dblj>HQrb@P{|4pZq_u(P0E${Ys=H)~<3+q;4?R~eJmWjy{4=T|f9n6O!_^5%wvjd~I z;g*32;XGoGNHb;5;H>8~*}r`3nPD|u+TFQge$UvBxZpxtKldegI#D0J3>%w4H4TlI zzCfl@I_U0gk(mfTtOs9VwU7DM=^omg$tgIWHNd9jrGnpSPJY3Yd;y0xjG6a!Vrz$j zw<@-D=ZiMCUX@eQ0?W7%!`E7N7SM4fq`R+z7vq<~sWZdr(*l@fOjZGOJ*Ags6$d6t zd45hy3(oeWL8S^6S_jQpxIyEornkKBwbq)~6_90enX@jWi~SY|Cji;Zx{bQ!WQCuk zUbkL9NikFefU`2XKKl(+)6zA!a>_SCcu%x)aRZ$xb;@pdrF+oukr6SpP)WRhy%N94 z^o@Y50+3`*DcgE$Y3ScdHl=h+XMUeF)z7_R-hg9CT4DIodOJpseGMbOgUpeoF39`2 z?<9AG6^KEt*0PF73>w3s1?)z{{xV2$=R4A6CJuSr{~B5{v#gy|6t6YXoU<=oH%6a0yo(7?EI$ZO z;BGt~xrM~}(W$q=A%P#V2-I?WR@9}S)h~><_i%!M3B2b8+3BLHCeYRj^z90F714Kz z2l7198PThQGr+3PNkzH-_ILwo$}GP4+K!uDWHS)oLB@SL?Z7j~!bEtT7vb3@rG8l0 z`$e>RvYalz4`L1)#>$UNt+ombVNG)50M=7!*9^p*NZu_aG#pRv2BLvfH70?;O9RCm zIcK`a&0}i?KGP!_DuBW)5-wzh7oZ0ZpSm$(|njysM#1rJR~dMCVYE(nYARA;+haX6zK{ ztI16GcyBKaaR7=FR7F`K^}0%uvDoU}!N1I`inZtrmD>_RuC`sT`-tAZ?h6bi?ENbL zt4df7Qb z+TG}*_y09>YiKmlONl#2?swp;2a1D`5b_0NxqD6MxLh#Hoa`;f3sU3qzmuc5D&2Tb z?Vsc%=3lmwOml4B?)~El9Ch^D3U2ujh?fEyGw?UH--Jg;z-dX?|Dg5@v#gSzu(~MYcGCzEL z{9%Uq)KP~w8!Y$lsKf9{phtVx;pkhO7v1#DtRJ|G_uS_V_njE}_q7%Cpsz+PBQ7J) z$*EBg85R3!u!OD0&g0)NI_EMa2^MEdxS`h33_-<=rNz@NWWu|B{*A-gNNho(&zd1H zVdx@l(PJkmP_r1rCi)lqoAeyh$g|;|eSjgGI7_-fd!5{II!4>9Mo@nSE2{nkp|C3! zUaPfyrVI6&xl6nWp29x1OE`fE_$b%iSvG}3cP|TCTm3>d-4F!q3~j!O|L!C!01 z|C%rkDD>TX^+eD1p{0KTjcgP;^p|Do0|&zQa+((y?x9*35c$mB!){(^%o;p{z8{?I3uyX_QGKr&~cP z-EI|Q&Bp9VbPtx58B2U8dWlw8cMG$j%~jYH48=|?p%pX0kZT3BXSTZ*9lO+5+^5S_{ zS7-NtO;bXsv>t(W4#z`FSIFuH8gON`g6f}i)~CrcAFC0$@1Z2%Q8mhtp_#ywqyw*A znR!^w`LP>yqibR~9&b5+%fPI(I^<8F(%}2%JHSRScANI{2mAZ8D!|qdGZa{lnC~^M z4OreP3UK*Itpiv5k6Xg`xYfIUZDz10)FhT3(j z8zp7!1uE9R+DFnl)g*|C)gr(=>K04>pX7#i%5#AMm~&j+VbABk=PsumcMe$Frfv|l zc!L+{?A|>kOleC(#fTqbo?#3W^OLbs@CAHpTPUG;Zg}HmOv<5qkD@gw)Tq0sNH?Ek zF^!5{-p4QxAnIr~|I3dkQzfo)8*>lYMPi4cmjqico-~IIsE(i2?&z9V0*fRRETJag z*hvHuA`7V*Ufg`sazjxLIe=EiA6Mg?kcPrDBzZAmp)wxnh zh5xzpy>{S@RkJJnHdd$I8|7CJ(*GWV`dVcJJUH2=ehjZ`>Ij|}F znFoTMCIS0DA@zJ^7S2Ei`NoU3B-P{M_h-@-3kvlFRg+9DvT|c6a8|I|clS_s!8~Rp z8^7KrTd}Ys?kW>P4A07&#*odPLKkv%#aM7g&`GB52 z(OBP$;q{58UxcmRgj{}g&p>zAcn#tj!4Q1)NFB^`t#%p7*LTW+_aT|x!xBX7<+mXN zP@G{G_IbUEi~RSaORtkMe5$w3757zQq1AbL^s+Dg_b7tOF*CDzs&=d^*cS=It6 z7kD}ZR@BA6jT8c;fRdDJkp&j9Y{4eenD>mO9YSHVf0AzTA6vSbtXp1oC$`Ya=RP~D zlW%$NZsk2K+wjH*PpvYElJN(zc@7x%Qx(w@I5S4Im=-G{;_od!4y430@t#iW#&TI; zXm|3^U6^hE;lz-yml+U)e$13b+5$s>5t$!Gcfmw$))cmHdY6y{1tV+SfwjqYJ@IR4 zjcb76>5L&?a&1%cN>`e;dD@dnF1ETIwN&~GFR#LG3We^sXrxJ_=emqwJ6Q_{SKX2S z>bL7E=F5dVw`t+tX&Lwt>qb8~HKdsv7Q_1)gEl4`Ph{#@6lVUHSA}?zs>*ooySV!! zmX|)JqQBMC09#mumZEdG5VKbMlbciA!qG4p=KC?x?fWxZX9d414%8a-&yH;)(=qC+ zP3rfYTLxc}tOke5y(LvgR?g8aJz2_YPr!{e!H@UQRzcG_{l&u}vV1wYWM#BhL94hZ zACY$3IPD1;IB-jz*ay<-8h~x@py-DDL(SxVf{j-4H zOuMae?dzn~5oN{lU5NbA51PnXyq19v=Y)RXan7eaP6sfpI*&bkR${pYI~d+rABne` zXg~Jk6q+mnH1qUxY2Qn#bV#JN-SDXKVK7f**P=R{Rj!PrhdWGoTx?%)e-tXrG}s;a z+_xzb5858~~{1Gwg>REA57s`u7dE^3OG5hQ}4oUl`D@_R)dt$c zP1`ph%YAKWnc3BL1UPESiCOi#N_EGdty;v9$^&fi;qY>X(vQZu<=)Hep=P7o>+*5f z$(Ni`h3R8pVw`v64RJgh;S2tob%g>EVI4PVc5~uDsY~w5Zq02#5h7o3qGipvt^-R$ zjR;@2vH|ywRuUyoMB-}GSNidMK`r*M>yVYG8bl9~=~B13*?tI~HBmLtua1_p33 z)c)~w$+#Io3DLPY$fW9V(>D6s*@dWwL58e>rGN;m0Q*zsYUy{D5<3SS*ImaW=U4l7 z_1?O(rgNgYq9BL~^k}TeFiqXLA%?HX5K-vV2&0p|<6j`^yJ-ZpB`pDC1rCu z?x6GMaXbtWsr)JkV`m<1-8k)kS3N82aJAarB<^kM?M!G)*v+=+k~H*e9~+ZR?BdqR zuJ!g5`yd~{-kzLgymfA41iGUOn)huK#EzvX5kPOMF^TnA68i=wg zIQ^`l+JD`P<6FT?YLaS$f)F8Ull}lgX)?+>&R*2K@d)tQhvrP)rynm*ELU4AWj+$cl8;@({dGFeB*BU z90)rRQ{beav-Y95I?rmgakg9%yK;>Z9|R@rSzdfwSP))>47FfxCpT0y{mi%--SGcL z+x*RH!&ZFPyP{X-9!XkoW4*CNg>7KU@$6`Zgf2*zp=gxIIUR&s-XLd&2PT|sulBKP}4&ePfgBt|GV~~(#to^xtCH+`# z%ZecWWyAKvia(dtz=tw-_0AkIE8hJ(Jy8aYZ%G?iz1)5dT|Q7F#PxtoQhi6uFi}g) zQk%lOZnDK*SbcIrvyU+1qdUUuK!5jH?+il~6wHEg|CLLBe@EPXa4qW#g`fp9>wjW{ zzBryh#9N=X9#0|BmF^;KkH*+yfAWO)4|0X3Nqp4pvGG@Z`Oz|{xI`T>na^!dDj8T=jp z?0%((T$=Ml#=xyI9?^lgdfO7;u?%0v%g-$g`IQ5g`53t1KDWQ|mWP1Vou8RR_AB7U z>pD?NZ&4@5p?~4!lEU`$9+7pp(UC(gen`sM6KR|FpsxZXJmkE5a>V8A&4IJUrbyrTE@)k8B897-@5lQJLXXrQAI?(u(9#+aj{7KB#TB&LzBfDlUZz2;$qbbX6EZ_Y)b3qqW_B#b!0Ne?x=IHs%w45!HAJhcizvE&%3zz+i8|sXJaMr zJ<6Pil;}LI=M+m?F5cz@;ob_D&>=0pg%6-@CZ3;K zR;|=uXFb)rs&7y6zW%a%biK?V*b`26AME|gGH>B3BguQJj-V66oW6fAFWHEdfa^UZBx7j_h_COh_Q` zpA5rX*rsa4jpm~ZD@L;^xJA}uBe&fqcHB9JLKED9@~$ zqf+(iwzgt7S}{Z-sz3OkRQDq8E7$gC{vA&n`_*}|uKKPP!SA0ZZnGk;UXrx#{y(LZ zY7_5YAzYwI^-?B=>ISc7jZ&YA2*WxXKg_p24#CR1HzQ}TP9!K971GrZsR=n?G`WK? zl=|_%xBt0al=&*zpnKLEJUp2*zD8uy@rNY{m?@R#Nu?kK{yqe|EJFVFcef(8c_f75CI|Fwm9tZa|Qh{h9b@aSI$$$dXgB!o1Stk=h7xaawODP z$^f_EpBdN%#3>z_^4Ts0t%iq8boU;Oxn$>|#Kb8~%$(fT{*<6f*W3C|3&p%W*E;HX zXtbXOO5eZ@Qd=sFk9%qlxOW56?IL`Yc^%j)#i^vnC4Y|H_F<&#*C0QgSJQj%Udpxq z71w83$SO_C0B>#fAdduUuPJPXyyE-T^MR4TJ0A+)fSM`K;-h2$*S=#)bnTH@*+o64 z4q#^RjU7g761PFz^=%Y;VY$G~qZE*kYIpjx8n#Puomhr!$Cf|i-(wr!pW!pB6tp>3 zwin|Jy{T#yoVi&th&tjnOy-3)& z3sMB6yH~iJnoa<$(2IXCiQm*dMwNima^=;6qffZWTZg~0hd455`x>V1S^@o7LKm<9 zpblz-)y zux@KPv)bXbs{>Wvzd6yjnb+izqjX)Mw4m#p*ibb2R%h7PkF?W5zSAijzDO5p2aExi zRtmULJcj>f)H=woF@yn3u=5y$#x|4@vY5ek1I>6>$6RWKdnPA}?CSR1J!`NPkRwcE zHH_g%GMo)>1Z&)czcla8c;b5aT~SL>xsub(zSGA>9wR}bGIzd028=0^|8NqW97zxZb`*3HmJU#}E34!8bs8+ZBixrJtYJ@oKEt?oy_mr1WB_66v=8EAnXBjrCeBw%EKL z3PY0R2Z#PWU+p9ljJepkWc3>>3hm-wu`CJQ*bw(^mVEi`kOc7PF3*iI=E!cW-gvG8FF#pVA%G zx2UwtK_iK?+mcJ|7?%Zt7ud(gyQ67zwt0HAId^045fWTa<)32xxM?r6b1L@szP&HLa=!TqD=>=G+x zCJHP=J7U?epu~kI+a~O*z8%}0o&2%YGvSE+yJvn$BFAbDt3CkgeFoUGr%{RiHHH#l z?|-b2=JrWgt~PFk{OM(l9T-claf@Pj&)~OT@A(p?yB#EGFYvvZMX)lWRAhKC)O0BmB%~R1yz^l-zwlY8I zxJIHUEPpAt#hFmh!W|5|V;?%7oZf9C&{jB~#;Dui^$~$AOKUBwtuS~(wQl)_^~Mj9 zul&oD?ZHhH?C8Im6<@$_;a?#03(*d-2&8J*>o@*q_HHR~II&!1wWuehrf&8EdGHMR zulDSN9A=YMzMWF!oqsYhr_{@@If>^|%ys&hTQ@+d zty-L;VKAfOFXNNDu}-x;Ay(?z;$R$FmsQFe)Ku{|Fx1_}eUKs?3Vd>-2etele^z9# zQ^|kMpcK9`3D~JV7RncHTRzrtViS7k=2YeHdDW7Df?C$>H@=~6`L~HICBhZ|`L)uL z?jr2%9{vSOmttIsiTX7c<{L6xz+|8+N_4Vm0xE>xxB{GCbsfS}$2S+DxUu>QiNFx6 z<1vsR+D01O7}7O3@qX#R)oZUPu_VN{`YO&bBJ9q4tHa}%wU+| z%sJ2ep6hx3@R!ROt{LZi?)!edUv~z|HFTu`=gGYsJ;hJ{GL9%5-;fRJ(|@|GSAs11 zI5$fr-Xaf3ApWp>cRGBM5@6l`ORJeM)x#bz6ju+K?Cx!kvg7OsKswFzq6AH&WB}yx zolVh(zf~NBI=fc5pkq3n71k?M70$>Qu!q9!r_h`4sLP$(CPzA6Yp8N2-sj#tWO!YT zmConBU{IKk;vaFt99;W0?>I~32h2d7$)EwUjs|pzTdi`-BBGjRhq(w}oDxrxSaumm z;&J)a+($2-ziVPM`&0rR)EBYzfA`0wVp5N}@Qm-y@(I*<9t9Ra$l8~DM(NV;RaJEE z`}f<)X5rPF$I9#asQJnZCpGW4{@!2AJQ-f)W1!)p1bUiyNGM4H(`)UZTh@W78UJ;S zxxI!8oBIimE;~OV^qAHGTQgs~2tx@Xt=ef5TL&-#3qc$*wEspcl;*A_Lb&ID*L8Ye ziP=j<*){T=qVhgDLhQ1y41f~kqxLsF?2@COI}myYY$~Lnm)5d-8*_yz4}|jz;5r=s zMq62XOxHaQ?%ynCI2-wGV~7y;=VbVOVQI>Di$Fg*f)*$2bI5Qykv^BvqG0MB6ak!# zBqyK+qAL%TpL;O=xh7>eCpK=Z-+)Ldjyxg}%o}QGc4u+0xUI%m6&pvKj8>&JrOi$w zQvZ;YJWpxF5#N74B%|;ym)={ndixJ^B~{!LiB@~r+2tV_|ZS1PW8&aM+1LPv zjX?ACrz0sO1gG10_(K6!!;FJDWt!T5ntEcMMvIR1__?=;H^nRqNspd1no8p;`!xI4 zUS#(JaAW!e37-J8a@=i&jrb)X=EII-2Yv1BLf>&WQxemR`=1~*KckG?)l!tT z`uOlayF2R2zC`|nmnd)woJVXnyW-I3RrcWtNyY!aeQ&_-t`Jq?4KVj@3CAwffnLwb z_z6sSf3$}8pQC4j-t0~i5~^sZi+Qw|Xx$Sb-MCNwakSy=*pFdJQfy`A9{{I}-AP7BR?i5%FIXC) zZ}S{{LS||n&{F$r1u76tnY;bkYpakUo~AX6=vrg&Kxixw^Yh*%yX)OZWZ4_g8;UN-jehR;Z7H3_wQNxcwFSJqEloz?Sx$yqw!4J7{@#Y49Q)mB{Co3 zP+zoXiGK(6_azUjGbQZCAfOHBWN8UO6r!NEVg802X zV*^Ly4Am$4c7DjSpL_nrTJAO<8mg{FazM2z?Ptt!-4<*dQ$LInRAEot?M&VM_tXoM zmw8~&$O#m34szp_D$Kc#{&Ld)wzLWNu3iauJZpZJw?|WvRA}d{#l(OcA>~@iRg&*T3z?s$yU2 z^$OF-2PdilC}i%R{oi=7xS6U)%d+V>#PlEtyL(1B?uU{W=6ABN^Nt?4FosU;yJSt=wk+^ID3Y z(%?Mmc{yL`x1_Q6yZEOX8<&3UG1gf=vwB$PBl~0ZLbUC~0h?LiFNeUBgocZSp}8XQ z^vmmfh*Gx1Ke~foO z;zfyUD_Fy7ogO$)*Jc8(aDJ6BpPfu+U%JqIkU=qO-AkaUB=AHY?TpZ){25{g zXG^FkRK#4%LkSTwu0YM%vF%@fI{cH&=5OfiHD{DCUT@Rl67eqoc(Ebt>8IA;Gj7*C z5MOp3B=OH@mAFtcPo&iK@u>$MAjcTU8Cy9ZFl>L~euuLv*Y|S1s~}^kNX!DApV36^ zx`EEb5B6=B$KTrq>!o3uB}dBOcU8taF>6SRs#wnI98%j8pM(5uM3tX%2ii6KAq`J8 zr74lr)gCx~|Bk;>*7>@Nkob%imX(^Z#RttEf?G)5h5?-fC=VJ(QV^_c$tU)X<8siG zmf8j{aq`u&tDxLS$M|JTcy@ip+!@uSIQGn2z5DJu*kH@xaU>90*GO(saoB1P+*Vv) zLyoFjz)8IuII)$cq4q--6tCu?B;Dojf=px0FfI7Iq4ur&W)=E{CHgip-akn^tYXX$ z!Q1;S#T-hFE;l|&&>8(j91StSpCN&v#)&SmLQ2lfz1}`~_C3VX4)ipye5F6e>L<(W zU6RrCOz*#EP^A%`|M=1kr+73KsM3voa-Ro0sv0TbkV<7}Xo*jrb|T825M5SxEP5g2 zCUD!P*}c?NVb%7GjrlpbQ`g+KjF|pfP{YumgZj+RNikRzt{T)b_{~U+dH?6b|91g| z96W-hi5~Z<^i`X#^Dt!KP{XZ*m(Y70TKBa$&6Edj$kFJe^`!2zTw?Pf?5MWy8eTz| zO?j3o)PyHoa*`gn%gSSZ*d4y{Ux8~E<170KC@#-lZFZE_t(QV^2L*DDAEyq)x9!b) z>+|mcjLo{8A%kV6Uif%^gRBA>3}01u`TkQhMGcy#n|T)IC9fYF`7KCP$q93En^_~A zf(X%%P8`YIDX%HZ9c)Z~?hqVD@8x;^bc2D?IYr4_rJ*0fQoyzUmTyY!olbtSx7>P-$eoOAJut)hHWWt`d)Y8k5t7>w|IKjo$S^bJcHOt~g) zE8nNS;nfx$pAH-(Z#|kCYkdoB+|s@iwy~kCc5AO$XvA<%Q~1cBMBio3ptbq#^5NrO zX>I{*j>m~pRlO(g^SwX%J8!#tqc}yOoA^XD?Ab&17$@u3J5NH9lI?}|Q8HS6T#9-Ex)PX|soAHu5Pn62Ylmy+#-<+||R zZN<&F^nLu8t0YEL!{-El^9zmxt>!H+>+bqO1AmrwGgLnQrNbcg5@ zru>U%z9ulbbJn>qwG|3DVu=UF#&<|f^1lYY3+fcUAX@IeLL1Dbc*mBF7-Hz70hHw8 z>7^GhKHP+!`cQjv;g0GCBMe9uButcvxEo+aNN_Ab^*T9fc>*4`j1ro6YDcsu#HJ0{ zJ_09@Rxl3`sz&40HP6<>5&4@|`5CBjz^DClHX^iOHNyuiT`M|wz=##p;K+`{EbVxG zMA1vs1U}y5*7>0qUMr9Q8p-1q`x0}{!;a1@P8zwc2dtQ2ib1W2?SE4wC{xmZb0yciv#W$)f z9ngm+E=;>=l+VSdp11D4{lkz)Bo*jD{lLNrdr4oIoDY+^Y|>3`jKAmxsvm{4`@@t^ z_XVrmlg-pz6W6sojj7l&#k}a0O$MzAnn4q1X2|AC1`GmfVAycP#eg zm4H44GIl2iCRyi|6JJfi14NcSCp5j~W=7=vsJXKaBem%?f!PYk9mUf1=ev3_KH4i0 z`W3zFN0*7A*4m&z7`%#G$cl2@nm@1P;RTHJ{uhW}>ujEs3jH@gXeSHT*P(b=c*bV_ zo$1_Cnu`o5Lzw1UWy-TlJh{Nm}7N0dT3O*oHblaH_~ zA-AV{oahD@0CJ5&1es?-I*t&5yc-Ao`JLk@W8MzFFS3iB$_;7Wc}qb|DiLXls|`D1 zuAK7R9)Qdkf4YU-@u6_tSQ`<%Fn!l~M``Yrh#)xdxYK`l!Dm^ru0UZC(~tN85P{A09UNt;>aiPeu`hv zvEW+s_JN0S4vjkcB@O2x*lP%{_qpA_n+TDKXZd@pk;3b-N0npYlxX`Rr}(YzJx-$Y zJo8F|2X-pI?`XNUBE!Nie1=qBDRd(fKN$t~Ut8{%yl|>oiv0Wt17QB-c~?IrMCBR3 zY?TK%RQQ88A|;Pwnm}f#>YQ1Orb;3tDhAe5yv!3l%Oz#->~7S-Ckr_6QbC~+j4XY|2`eSP!VhX zr4Hg;uedlsFT{Rn`CnrI#5|ZCcFASy$*9c_6Xi*qpDt}63TD1;vQlqN7I^plV1y{U zu)X@`m|hIR;3=6ougphNbNMo89~4=P-8KkyWRG|Uhn5D z$`oauH1j?F?U6rS$M>H8K$6Ts$B`IjU7OThbez(wQhAMvq98usuKOS|Jf+{96IMZGMO8a2lGZ*$3Wl_4#TO%Bc#_AM z%9m6#O^BD^@e=1z`S|!QC>H+9xQxQWUygOw@jpXkLgCBb5U_*(g+5l!(k=SAu+S8G z>(*t=5Sn0b&QNw`dw;jS2tPkP=Hz6<{L&yy7JM!cI7NZoiw?>UwEMj1xI;o=%u|7O z&{8UQI_0J1(;$xKkb^a>U(|_ud7R}TXnOFQEn=6Wlx_UNbCrDZQn5DV4_3I=sBosY zNJy5@+N@-H4CcgW>3-vNba80bpj9C`C1^e$ss zsE#I-|3qYrlP~Nv8NKJj2YiO^jvgTEaTO0Cf*;(!8llf;?}{nA%SX3I=#&;|LsM(D zbesXrv2=;doH}tPL|4|97nB0FyF{sag}UtN)$AVFnSy3AKO@|qWF`GX4R75|X`C)4 z?R&|E{E58~cm8NGt?`YZQ$Y)l%0r{9qq3Y{en^;4 zAfnhfTGM@PCyM^!h=q0Y8Whp}jU`&Jry?=_Bi$9Ti~=udu_}BZ8Hl~3oUz0z-jU%9 zCj;6T=`XrDG1ySJm%6vClrt{$VV}!TD7{7On7zlG)?Ur0XGPWjOzKgy)>wJq?V-8y zI8XxKhoGXbTXI@`=dsx!=kszDxNwO?z60h%;ka@6$rrWH5fb!^{u1m{&>QAEKZUQ) zEnD$n76H1S{r^1ydeHBf7t;ZQ;8XC@Hr;Fubs0J`m_v23ixaya^%UO&zmoYi!rZ`? zsM{PTc?xOY{9h#5le_CGNcFrkJUh0n{gdpyr-;DBkJe$WH56YVUU;n{e#R43Un~v7Ese91S6vEdZbLrA#21#ER z9p-p+{2+KAzx^d}*Z}7qG!DJmatb?oF?bJvV{g0V=xpCy-80hMGuF!9z%zeH&f8ZB zX=Sb*n9tsE>#qw91(zXR3Z%m{eH+sU!y#p^(ByYSEzLI zCUq(6Go$q)f5-<|G8&GLCuV%$SSfGY&f`ZNZ8&}?PGcv25XLQ&b21-rptuo-6B+TS zR_UdvRC?RpgE#%J4~nE63uyfleN2AOczT7Tk@THYm75}7CJF>9ATf@LOsXjPlA+H9qTso$_*J z{b-@5k?y`$&6q28NCg%+r;9hN1`0d7?@mhnP!*@nL4T?E;VJuZ~;D z&KhkA2D&6j=uG8cr$%hei7S~W1X22@Q>+~PL$n8FP(_6@UOt| z9k|rq%;)AkK@y^ zs_^gbAH%OTW8L*COAdJkm%sMXI1f!;d-Bum(kr6<_;)V%e*_+~P1{4S=Q)V%Q*8o? zkF&zlSxidUl5&zb{9}ec^e0hE(FPt>(Gj7J1oC8&5Pu$mcmEye8&HBF+)%3qki+RBTM{6 zLJd;zi?8b9z+&W~8Z%`2_KCn&NPyY2qbOss^^b)H1LX6gvKSz~ckZ!KnU_Gvvp z{kcaP((_=cl1(OJWU_~qV>gb&9pv0#a|OXHxzjc}Yw=nPoK3&@rKvcjYktfAw%Ph` zW|sbyn0ZL7G~!NNcaKFSxqfLs4t~<1D;|9raf%+Auio79fq4<~{mpz~iQJEE$8(&M z@TLe;1rKspQt=stf|+7t>2FdSLfTN}qbXcHX#>&8*b#c0xBMCyHXf?A)<13UzH0$Y zP*++`vrFvn^vrOs(Jj(Z<_{iBugvOYH;+zlkWB@0Xq^2Rzzw8I5?#0c%6CvdzT7Jb zs5JNYeGiuogT_t!d>|@ zFB)DxKm`JhSSNMQ$VkflIi$4Eo7{{GiANgr&h$d3kw&eB?dW*k8=b_xrFx+p14Pnd ziZZRLxcwIP-ZUnZ#l+V%M^L+3&zxmu&9j(k&$N;cJX<_D=x6E^@v7(>T@=1@I9<1T zDQ^_|h6auh6_na;5Wg6J)?P7;2e1fyLL;p3w_+R-3-aq+zoK*>yZ|k2s_ZBBz;yW! zRw7IMI!nrKU)FKG!@uzXzxW*=A5ShE1Z8duq1~Li4~^hPKe-75 zv3R;D)6z`x*%UU`WpON=>rUvjs$@VgQL;As-8J^P?gj-JPN&%~Vq<018863WCA$K~e;yju4KLU+vA2xUOSaOv!^ZU|T zg=l?+BxZ$gYg!lB;a%+m;A$vyS_He`T1yXkC&1nMiZM|b4ZqIOshe2aym-|Gk7+?y z;uf+I8q0*uugY$mK{b_w>P_TKd|r#t;Q%j8N*aAX$R*`}BXqN-`0t@c9fl;ax>^X% z0m#UWK@AT7P5iwz=>>0{35f~7hYS57X`(+pyVLm^7dd#p;N4uEs{wKt$Bd>{?51xW z`!S*f?CxI;+p%$wEBCm(=MN|LCgdf*Jb%W4HRGsu9u^KZy~3y?lK3dC?ohat;Pn(Ne?jAzC#`n zKwicNZ;-3P1hon>Hv4m`!v}iAZ0RCRA^TEyTwc~ZwV`&qr!y$#!T%i|MF%I)byds3PiOBcUg8D=u~|C;Yau($PuSJ=@D zJ9f~9d4Y&QeH6SDT^*DKE|4PD{awgU5+kD9BXj^?Eu{ueew2Xgf4g>hvk z3(3ljud8q7drj@f#iANOBXIGcWWSL`oxLUVdi+4o2j6-8t$>aEi+F zMgdS*+>J{|{F2_(#tBw+O{-ZJL*=llNzM_)9^gq=${RWr{*}##-Z>vAmR8jx$Rk|F ze&@&joMyL4O1t+$h*x>xsrI~fC1d9#ix(0gr3mLfB~3;kE>l>jl)!VU`rs#3tt;)r zW9m{4*+>j7_`l&hJ_jW$o!m`x6n{lzjH?2aI%x3?Seyy8^yD$es%&U>oF3GeiM^;Wx4>o2xooYuU6h+ZcH!kd8?aLcoV89cb9-0 zh4@d6v0F6+jv~`mmIF4=KW=osGDrv3<8E9nUXQ`N`v(ety8R~Wev(glz0FJgQAsL_ zvA@jSH2LfhQ(tTKsB&tINZ2*ymB^=_ZX~C7M8{yi$o**pMb;EQUDaY(9H>-iN5r;) z`8U-?=Mna{-!LshZ{M&`VF{;?)W>;}yCVDHe;PFxDX8fv<-l8F zp4FwZ?v4$z*x|3jowQ@|BFMsl>MQV!B!9y2Yn1x)l{a*Lua8-)Klyg?Wzz2xLj1IH zYmCKeicl|ND>;U$1nYK^2`TcBcDx76UNFRm&Ee=-OlP>S^Kx-hhcCMgrPI$KKLule zDRRaJI^p!=7P|5eP3$$_7eH&vUTG@|v-pZ5hYc{-kJow?Ct&a19={uzlBaC9BCR}S zFJ$q9qN5yrN~eB}#arACAH>uqQxJjCK(XZFOy|x9o_7EAsp>|2U{c(&GV`QCe4NC{ zMFQHRGks)<(HozXp#zm@6~p7bqo&T=`$uT^879XU@|Zc2vg40JdSohv!JLiaJUSoh zOCxqu3;3HK$hgDonCcZkNu(p-86F>!8TX%EyEtMV@iIKS8)}ig+#6FpQmc$L*gX8IMi2`%z6N5;#;d{I#Eb2XpC*;<1Bdb>Z7RTs)J%FR$|^e#4=DSqS22IWs1q z3bS$FFlD^2iU}&`>XsHZOsdnEVkPcVY0q}-#%$fl_707=)fUbt=eoTbZm$;muMfK| zQm>R&wLC9IamTKt;SJMJ+) z#=kn_Lvluyj>ij)WIt3`%87gf`?C{OtFq=4AC(AQckiWVHP94ac)52(P-P6{_p z1oW+a58SCCevhBGv|s z=JAC!&$&oh>~auUcWpw7@g=#sLFn>uSrDDwyyNneKTB4Cu*U53+DSVD$`Ge5M@z}O zT=TbX|88Jsr(s0?7z|8>^z~s&Ca`0Lf(potkolU`w<5;<`ntxfR_6nXe zx8JZGtD9Bc;B%Ns^)i*r$qB(RcjO~o)yTnPu+v(1OQm7{dXKfpgJWvXzh}hjeoEnX zP~i4x_^YRoSizMF$q1_**mw8nVF}9{hdzDMbJQC<`}$>}9KH5|$_eU=&4I8HRo82G z&)zr}Q{#}wmq#D~+YN)|cy{J?`WgnkH^=$uZz&jTP6o(cv1a`xEz00A%_3kc~ zDEhQNdt!1KRRRubT={urYLE`U&xb_WtMkP+p1+GDA$AU?aK`T$7)^VP(31nRX2`xD ze}$j%W9`|lFI^te z*>(3{lFZ4cI7V|6QlTq%J*h8qjBRuYVw~Ti@m* z4)UX9Ou*I9Lr;+YoZLTm%PaK#&FF2SZ}8N8xVp)$z2O=V#XL>t2wj!K=<7*jxVwMN zgEQv>z*Hp`{@lEMA}oTrEz5GY>*nq`3LJqmflzQ8gcH&MNNEV+$Llq`nYs{Me%!rR zMquD_nZ@rzl;oPy`2PD#F(Xj{&4F^_-nEKL%Q}7hbP}>^Cr*+&br^%XQNdL}EIbch zvAu)bxyR^D`}p`xxEkv$wB^d|7=CNw{h5n5U;_JRMJ_}07ov#S6J~9BHt(q-A!;UT z3~9t1?B|bKu~T9aVi57-TXA1RH|f<5Uq1{x)d$5U3U#K!5xuFW?O6=f3Q@kXo9P|j z3%gBr@tV~Wz_c>6dNSkrv&1?9X7)tUOx-+RK~98q}l`R!kCBTo8hZ15GGuiq2%r5#b4!3=db zl-_`2g=!&=Q5BPSC){T1_x}6a^GyN!JMImjd{#nkC{*&V#rx3$PNppx{F=%_j&uqG zQ`8dk&%qS}??_Ev4a^t37>4Tl2)$U4Bm(pc+V#S^lfIn>Ys9It>0(W<4Ni0#6z0RE ze*fn5b6XO8xOoZ0y+APw^eB(pI0MU84^1Eh$PA(hMWa*$3rfkX;b>yG?B^nw z;{j4*xtROv$3NS6k_OZM)uz*EdnoZyajiKsPnMoOy2dP{2XiUc^k8Q1jBRh7!`f=9 zDju-J)9fE*_L2P*&>*ZG{yL(L99*HrY$78FGqC&HnHD z6gAGeKFYqq`OHVkKY-71h^XXOfl3d1ohH+d{5y;pW7j}a&u=USL-#DZS6goTcycgV z_7jwaE7aJ! zJ(iI`oR{oqr?`?keL^l{p1ff;c1?!yhaqZ7&si2CcdeC60Q5?x$e1hm0yT(N9qKo? z2XR&FhvI2wp@`{E+SIR>H8-8-fE_R~sUH>MySaz(_$8W_9)g)k3K-pwkzoF9kwc#T zs@%2QOh<0Ad2hT44{M2cx2^Rl$+rjCpWi4b_doJ&cxu9I&G(B7nDLru7ZMcqj?%eh zv+_1|!olnCHH*tt`F*eVSDlHdSGrIw%2U|{hCf%9KiQ3_tcsg$B|lqu6zc?jKvk|P zQ~dAPmCfu;VwtGs?x4rsM6j=?cL=oP-qox-R<_%Yde#7SMA|>ldY8+^5Q?nn%%q4) zij!Mqt7o$*c}ax9V4YO2&bSjJ(`&V-PL)`cdhmuaXZ92&WdLpVEkHlIOEMC#`L77o z-u{Kg^QPHLHb?-_%ipsb;*#Bs3}9xfUZ4Ur6YiC(dl`gARk2b%Xb0|j;tr|m@=A7 z!crTP=C%ooZpkOf8=j0prs$G<(AvhZ{6dZ=;_T3^gH2XRX`3Py7}^52~=GZ5nw|UAk?!4h(E5}B1Wd~u-IPMW?xDj*%iO; zL@pbj!(%&rtAVXs>~89Y$2KR?|E%U;uT5S3770(hvLcQ;iw&}|amEta!qF%#Ik~vC zPnk|&nCu4dl5=KA+!>1}mY!pr?sRDJ|Ei|%XWEPZWui#s%e4tf*#7y7AgCTUIUZWj zXS#esjER(4Np%YaV0!oT1IpE(6d++S-eaJ@z= z1x`TRCd`Iw3P*nx)Ji8CjXK+CE-JmCPdPy8L9?_hoEC&t5fkb@jGimFuWFT+W-{m2 zT>QMvtMSNlpZ4`YcyW*Goiiq__!i%E$IwLBcg7#AUM?rEb4vCvRK_L77%@iW&uaAJdudfWf*zfH02m6W2X!yhR zqmqbapL5QSjqR#puMVN3juRB49v~J{j)!Nn!cko<=z|s0hGWg`3PZ?mVL_0N08wJk z-nW;X>TLg3Hc<(qsY8pjUKc2l(Zdzrrl$A2NLzq;+3w5omy(ab+iMol-a6B2@k6Q@ zueqlvMPR+rM-0gbS^#CNH)ZcGR^;|8tLGAJl*25SO`(&m@3VVH9cifJ=)#AaP`DI0`$Q!QQb4Tg5VK4ABD=fU2XXZZh?rV0h)6$-Tk!wA8RFpA9^n!Yj9$J6;pFOU__u?4nnw z3yQUx0R<8@v7etr!bb(2vul+S{sPC4wc~#9mW_KRCzR(%MMI3 z%#6}@%*LcJW9<>~J7T>cpZ7{?6P4+mgSt;ehtxGpgAP=!KVzx&OoVZIC)p7qo2WSVAWkw4N>U<8?N0T*rGfuNVA2Gb!jjVnadq z-1g?=d2DZuTs;0r&;k~uiSl@QixEBCL2@qKBYtqtkd}X*M;3AZm`ZIrfR^Blp+BI! zpPpp(v;AXBmuxmalEp4a{8NM1a~B7o94dn8`6HDmU@ppSv8ns$dU-cc z>#|HIQ@oN|2(pw9`0c@M^s{!W4KLv?Ps}~YngS;iNOdr+!Zq=3yjC_?nz<$-7K*b%qy7FV?rN1NoA|LG1l7~i36gJakk z%Py@uuhtlPJC+d7>-yS)yll;zh=8DUmYL0os&?;NPZkeDO=VXb+*xBAGPFgFj-~&6 z{-S17HpuPhrypSG*xV}DVAV2i#T2lwHxAS`buEhqRpRF@Mz%LB`yDT_a)OJ9wgwMZ zz3E^mK5BfUKVWFqOjqRY%bAW7FCC=w0(B19?kNM!D}*v{==o#~?r?l2mt$WTA{Xx` zy@8{MMB4p#Yw)s0X#IWDQ`Zg)Co6amqPMGZr7%B0r63E>pw79jP%@3$73EovG`UV{ zM0*0ebL%EGUA~#v$_?I#Zr=7^8l)x^{N)Yjf+Ul{VpoC{5VfVaqt>w|?H}DJPRqHP z@|tzn@|yNhcprPo4$Hn&`V2-BU0JkUvX{d83^VZ!?lkn7PK;xUj!(avyTE=-vt*pF zA_p-}CJQagXW~TQ1h~AF+A?Cu$S>#}Aiu}14S1P*)+|QKPbEq zZ&}&b*6%PpB@@a`P_Q&Eww-+~OcW$eJzV9bg?FX>U>#GkC=Y?O52Aa-%e1tvPB#3O z_|?LaDQ~w+1}M(#Ipbv&Z|0iyJ%5jz{p0gzrO#ipJ3A80zM1q~3pj@J09#0OjpJ2J z4-x%h*bVwNo0?ny3_in1&>bgv`KDqbG(589rt=Jx-XrEG-s!SGP1d_kY5V0#bD!eWYBX*MKfXU|xs_DaKg{8<4oPQomW0_ zr9DI?7`xvGH2dsdbulkfvP>ot4sGfqG~NzPr%pAOHD|aBVwyT)euB7OTUN? zzy~#;g5Kuam?eUVYX0F|3bzHU#Gw4dYvUitNUrzn>s_(PUNF;&O(8z)$4pgZ2bcF+fJEq+|998V$;I?)o->`gM{k+@8}p|r<(rc;;mf@U<-;` z*!juA?tyd1%o8LjCfiR(rj`W{a&}zeGK%mivZih58t-07)%JZ8 z<6Bb{)zUJPT^4Rf{+$S1b%;PhNZUSy;vQKE&EfP|N#%Rh>1g@@)sxxfJdd(J-rH=_ zE&Zd4^mIdCF}>88OiN7Blhume%cnV9%jpCtT2c=o=@u-ZfaspxVk4;Z>HXQghrm=S zdS0>+mBRwtSjy-XyaHoKcVo&>8_HL;+P%zlO8%{|U3PN&7xCA(vRsIrnR zDyqqo>>eTymDbH5Dk0goTXM)YRX-1Ki_gN{FNJH!^iTBQ1ltVI-n-82IcK8le&(nn zw`#3Qes+7%{We)z&Knd@;BqkqF;;H$_TWb+DpML6(uN=}ov6{&p(5ajH9?WmKbi2y zI?c-_k;(4N+LkS6$mhRh-gO%{H)F2I9~ts>4-y=8!p)4PnC zqOf2_&du9?6)Ms%RAbAeXU9FB|0tp9u@Cf7ug&e`WE5=%Oh?qaFUl)hA3h15Xf4rd zLUB|n?2K4qB8%z(v9;@<5>Be*_sh0EJW61ol29H|+3ogqC#1YFZ$3^W|NP18iYYdh z4=D{$*Ea|D+bzxH zoiV{IJojYw68feCck@NbCM^8U_8bcAYX1z%gOl)djD6y>lN@&LAIMRht@PW}Y-+G97z z?QhQU2H%1$UTPNYZo-SZK$-onBW|m`oO2Lx{+1erH4Rw!7Ql|=DXU;$ZWi;Y0nA7M z_1p(V6t@e$PKlEL(S#Cm>&VPuRU@m^1|cefC1>%|=@;zd-fWiB_S)Wi{F9rY_ud0o zI|1wv@v-TBlv%6k(BOmebMrl_H!A37T0m*tKdSJsz7G9oLx7Mt(By?~!Xd=0DPC_v zMnvIRI}8LxSqmx-)44mGQ#SCD={?QFopoQu-FWc&6U$cN|L zq5yf~j`ro4-3Xj(Jkue%Oc=2-pA^wLH?9gxzpH7fSLr@gN^>WVXb+zot7dR9eLhie z38uEl$zXW@{ikEUP_55sW=j9fPxqeGfAk;m5j4E@tOycE9F32EGO6+~{7wLjh-G9i;8#;RrOK8bDd*0uO@Dd-|4^qxU`=dbWDAt4a0cbmr7H7h< zjug!{ebABuID@rSIx74eYFd&i7=SU0bEnryYFhxmi~@fl>ZW!N3`U}m;zzZ#qq)Yp zaSsxKc+KQ;PYpVL3BB()f=;qZ5R;I#Pl@3>*x^rH7SgVEgwKca4x&kKHLu=@-9P=z zh&h)s6kwGSrte%0u{p_WZD@KAz6qu0@*nn$u9Z5N_G3QIv04 zCS+fxzA6>+EoEo2rLtuY!y!fXP?T*d6=f$oGudYBvTrdM48}I5VTLp3JoEhUT+bgc z*EMslIiLG;-}n3ddfSkfH!f)Z37JD}ZD86E#P#DCk@Hov!S^A%mOI9*x;O!VxpcE} zbuKWpcTa%VhRE^|*8$63N4Fw`yM5)L+5P$|?djOMstp&e7`k6ib0drT(Y^AUOKa))+~BNzvZ{)-ew?^A};lMM+|u&q>d(xk@)@2 zUES12mw0%2kAqjoQLjx)=BE@TG!YRf3^8Me zH~*yE_!EB1KShAFCA`@s@d&D_-ZlK^QO0pTJM60%A_vDUH|9MJH282>xb5ctCs<$gD*@m<-x)r zsOED>IY>S=8}2QlMaWL~phy3>vPmO&R;n3W75MwNO~d;VR9jY{1`!}Lkz9zzEl&8D zyZO}%D7_b&rJQM{SIKtFO_7nE%shsdfH*9DS|k8moLn{Dru}7cQ6_) zCFx#V6VSnr+?W64WEq!tH zu3TCgxN^B;|D9da6BMtpnvTR7kz3<)=^i4>BE2${X1)KbGANTXa`e6qaId-ndcHQG z-4*gJEM`UBy}1Gm#- z-4PX#lD@!|XYarzbm z)JJnSx4uygu3N`Aoa@h(hf+#Bz~s5dU}f6W?TW+>u%?<@vNcsT+DZO0Nw7?0N!yMl zwgExgb1PxPHeUNtMJB zr~gKt?MH2W4J$ljL&L5o7*J{sb9btSQA=3JOwOg<1C)s~ncG-65UDLzwRUz;fbwns z5u-L>UL7>mfqCk^OGju#Vyxc+BI!;a5RdxO7Y;+rKsI$X91(@Z6oM^OnIu!acWW2J zSz#!BZ{PXLUf&2c@{FN8w`7KwI4}^$9iRb5XBVLqHFAKjs1d~YYYL5UC)q)RfNM2` z$TMeX8o2D1{S|QlBkX#{b}uS%-){Kwdor>3BNY*%<|qfX@jTv{3=eXF$O-jpdx#!b zeFNn^Qu{hOp-+Qa%LBBVEp)kk0o^gY!$ywpGC!csj3=U=59Grqc?<=sW;eE*UGa5x zz-Xa`wXA)WHeC1h6>Q9qn7I-5123ov?INetEk`D*uKvB}7cWfblqn-|mBdJ0Te6GM zVCXIZlxYhBHzuB7EY9m&Eu}7B#Hv;f;l&J1p zg5kwOUkfCDSAHPm)gHJ8E$Li>jGTvzedUdMq^A*0=$RQFZTtIOudx(T2V&2rK|0=i zOA>nD)!6+5OVzLTB;b=Xe>k~LiOf78HZe*(K8iqF`(Qt@9S5~%bd!{(OgbWd#!|ys z;zflR(0ViE- zXtg)-ny!tnDpLCI=qMeAw{M*mltPOuFKXBiQ*y?Ax zfnP~wDWRKY@PhqWj*OmtY`vB7P^+~3)hTz*(_B4mhd%hd0Xvj5x52b_xtAYe-HhLq zzsN&RI-nFjWO(+bO%&A~SQu0mXPBQ~WO`?_46BAWL>!8ZU%bCOu#9YrHJ^P*lySu{SSH+SKbb`49>u^?TFz5tH$9UnBgH+;{l zFg$}~pU*3)`4P!uQ|&iMaNXhmCpB7WPJw^shRNlHlR|ypuOSTT97c}k==a_*yX@m7 zEkBq|J_yS~a*RL~=>6(tnXGQq(PmC%2n=RBG(UPp)i~5p{?z4BSuc07y3eE8cV+|i zRIeX;yt=`~n2v>qR$pRFnkGiwzN=@%pEh19Jx``+GE@4bbUSAr9zLeDR-`oIw)u<4p+lb!CyODjk zR{QohG$PbufB0X%wXO|@nBS+A1re@?A80rSI<(KEV4U> zMB9MK5Jf+bpD1vqX&`xz;pQgmRy88b#ZZ4*i&D(G}LZ5$}qsp>CJ`XoxSe5NO* zUsXB=D!U$hdX0?SLwD3nm%~#thF0vyrw?U|<1=_RT3EciyGtvm%X;bm5&17M-V*mG zp@{pnF7$whN*%{iJl5k--DR&%o*!XS>mFK6Hc#s(>{K5A&8+3A3i$pH+&#FUBa%Y;q@7AA^zpQolCzbn- zBpj>9-b|`mf1EC@Xx`+CIE4_cJTh6;@dH@(V^cSX57^ZUZ^Pd*m3B2B?In=@$r2At zz<*s8T3;mq-Ebz$)fH^I)VbhyW}urn>|r)lgm0Bo=77LEIDp`{7F`Uc>D!Bm1LfXr z_nSDoy;gh!?a5-&r61X;q6mi_4+8!Xxy-M+he8rS?rx*(n+A7iDsS~J0T-^FO!uN^sE#0;6P%wB$%zWWDK^Q zuz78M(;V8}t`XCiMfk;i05~GhF`hp^Xro@d58jCZnZWoyw_+ed{sk432_I6!MOcy1 zzCwu3OwnB@_Blul&RDARafOmqJ!r>pM)b9|4jH#%6wg^k5^+rYCADhyV_%cT zl^&k5Z%=aIK-M11FzNg1nK>7|oJhu1r&@@!Bxx$Tw z1ZG}NK7Js%(H^cM3-GFP?`)ozqiPlDrAyiZ^-u*YbNm6k`6hI3xrLSFu`UG9v=FAX zxjSP#RUp6FM5lSuczcb`fAGFL%tZUfRY{<^TXli9Im$-TkWg{-BlCk71eov5lFyCd zEb95)mY{vOkdyGO05p4}%`lp?_pV6Pf}V7^QGgt{-Qm&qc@)FkGmu@jE+GPp-LH4t z$Vj2v=R7WE(svdqT!k`3EQoRqgrY~S5>U%W3M*RQyMayE=MNOg6dW7td;O&@lmd@5 z<#enJk}A2o%{u?^LoJHhadDQP^xWJ*H&qo6psPbD2JpwzptY zr)ek!`LqSv0jiKS;PG>dN{jYzs4Yl%R-w+aHrd-uUS*O^$gYJ;iTg}J+6S+q(iV|# zI?vW44$|zBKA=LURB6>h=6~YwTh)Q($xJ7=V**+EOmTEJ-*8YgyfS$jphKBNL_+|x z%h9K55pJiT@|+fd!}?cKz3%5KcI_m>wy=Zj_|0?cW?&D=xg!a8+~54m@}|VABzI#K zt8gG3zoL1BG>iCn6u1&Ch<%h3ixP0Lc@2a7?g2&=)&F1czCtG0y?p?na+3lx_9J; zxWaEK2-n}G6gFpFW)3W3i#b78o@|TW-rBx*JKFwJm6+oS4mz=B|J`Z^v&GIw=RSR) zLN2{RyUQOu?n{f}e6HcXLehb&||tpXWebQ{1V{i6nISzF!FA62Q~c=vYD{Oy75i*!^X2j?qD0tP!)LM3BDYTPzfha!Cw+za^Xg`e$ug`O5k7$)57lD z{$>H-Z6o9DKZx+{l7mF?#JeSbei`k`1J43jLWzWG!KVgZl@-BLKZqbtGbWh6;C=*?Mt_WXedVj> z;r2fMpUI{TJb4@5*FJZjW{N1euF(EE?K_-W;la{=(0PWJ=dIC=K0UQp=W zwJ&7UrW#^A;7}=92s8UR;S!I;N)?OD`m`rNP4imp+m$ol=KHsNobEMFnz2y|ui3|S zwt57`{U^ER0kSmPi;i^v8Hv8Ft!2M(^e`7f=8pyF{~ZaPlW?;gI{%>(Ds7BRvUey1 z6;EO2eQlT-_3owrA}r#iFrP0`5L%y8mRj#G;`{F@KMr#lxD+mvkUG^@lzpE6@Lrnt zEUy{|Lv@0<_S*7Zx+@NrbmGzHBn@{;fTeYdq?-YQLHE6Shb((wpPM<>0-T{l?J^_j z&O=QB=-q!^r@l+UO%_SGU~u-6ihkz&Ra~n3m%szeZL#X#z37<#* z7E`hE55!`orgy7PE%&j~BdhK+P<^PyzRc!bu?B_gr!Dm@Sp1ishnIMQ)-wOFh z%uxhw@gcalQD?8Ucy!!@9l4x;#7h_vxHP%25ki}jpGr&V+sq;hT(tL~_SFWMy5~-@ zG#teo#RVkNxBFf{&7=kH;M*S?-zGS`J<=|I$Q$>% z;t?+sQKH+P1&&usb`aWYTgcloP})?qDHQj^!?KK(dkC<7`zMD<4!JLww2JzALq@J9 zA(u7zkyv}^+<>}m+{|$xG~!mt-Wss_HM>|1x)}h;Tn9RQMbC;b#=LXvey+S#q47<$ zBE}n;dhHg_$eL!`{ESzZ;F9L)GuSQ1>hl`8mw{jNiA$VkyzCsST*y@(B~ zMI6ilLX#F=FOAr*REZR@uYgAH8OVFLQ;NT=RA6_4pes9rQkW96jX@5J&jQYpd)2Oe z3t|ZH>o2)nNmqJieJMX=N9EJwvrQkuBF!!ajU|hWLJZ%LyQN=bHQ`uwV5~c-DvO)s zJ7Pud0x)__7RT?*0rvno@`f{{^#Nd=`cxgt?yn=t9c7R|=n6Bq2dPgLCln$j8fOm# zx<_3;lVDQo{HK>oL7Z3p3zS}2#jrASD@rQX*c!j`-0UMnTYMqx_FI5RNj>Ft+2t)u zS>4YrU?E|4Gl47h8AC0b3l+*7Wghk#LB|L{f`7kt@#>E7&ykG=`E>cMhxAX>L;R1k z45!`n^u1SSa*x^CCVtX_9+$zlz~n^Twd*8t?O%%ZVg+LnR$y14hR8***AGe-jbw0f zZ%>Nu>2nMnTxiF7aQ0HIg6iZhJ(Qk49n>ces^l0vW}^sm?<+u#FL7Yutr25e>u9$lu4DDi*aBIxy~i=b-e8D1-SsIKlB?d zJ>_Ko+Nfm*Q^0gi04MQUr;eyNMfK8CzG(-X3O|ZnuEy&H=&hH%D&$Bo>T+miKrFsH zq|;p576^mF9ky0MVSR$FRE^ok0K=V;f1G9E}hlc#ume`C5B$E zj^zvS`&EZ&{9e>BzQNw$#Bp+JG?%c1XZCW1iPmKlESfALXnLWTX<2qQTfMf3(~!$j ze}TvzA1x97jGhm9v{Nrm&k6o~A;Gvkxy&Sn9O?X*SVBS2iOJmm93vJ|5MZ@Bb5>Vu zh=a}e`WZyvAe}`-6DzP6*aIdvPx0}{mbEj<8P-2A`G6U09vLd93FlC1Oxu3 zzH=9HpPvonr{mYP91WNcfI7_)kjvXKg`M}bk=ycjklq(a2TCEnA|MdBBlr)2;A>QK zn#<~Gb3gx*l29-gp>JMRoRu>T$MA)=_kOt>5b|8=4`9BwI-?;F^khTJ_aK%w`c2;T z^2e9)P=^79RNHi5YSZJ)RE2%Z;BpbQ7&Xy?svBF-{6z|gGays5c9V4f>-ZH*f*uYs zs$1~1{_7!G^U{|f@%j1ej9GW6Cw2P=3e%707XUSvq&`_jE{kYMZC=Di3D|}s#q%cN z0M5Tq_m}j6~icMnx4x#He@&?|Z!+^3gZ@zTEgu1}gG zB$MVR)-{l*?0HSYBf-mni-Wwr4ZX_KFLvqOwZrFLT~h@p_qOW$P~InHV&DvwEz%x( zQ_-0}u@9U4(j1IbE%R9u6_%So_;&0c| z&gC0@0T1cxV?9Ah7KHyR3Xe6}kSQBQ`6fG>qs*wqC| zin>LWr{i;7>l6BVIuTcA`}Pow9j2>o5cmKm3Nr<5Y?sRAgtAB30?b>Nwk~aE$tny4 z)a_z9$%Y!a;{P=|-X#7?Px56?ttdxq2m7)Af&v=E7#cD#25GJXa|EMziMp_N(&};! z(3=m%<*63$(m{Cy?=-lIR%6zY(Y7i9^Bk`J{P7-nS_L73g^kLA^J!A>Bm+hJ(7kZ4 zCY!e#(VE0_W`Ecy`e~PPltG>QMfFXM9HIRxPCLrsx90u1!*b&kC!RuRGUDpc2s?ed z_Tq%^g?2vNdSDJ}X`Oipt#~CtLpA^FP~?s_q_XPfa&z8U_5Rfh~zj$no2qw9^W6*%&BD3zUip_GK89nVIW8`-=c-qE zFq@uXPDSs8^tU~KTf}oxeQ$F&>adUh@5P?CvY|b7F>3~!O>UT$GZq3K9)pyg40&Dm z)9@)hkLX!?g}41ix7NNmIM03fh{NExWEed zmy~Qd=~o87S_1pEr$S0jEPzQ|kHyE}drHk-NY*ZeruumquoqaGO#bjiRmyiqb5HH_ zdvk#NRx?o?72buM)7Z8V>hk~x`)Q`?10yujrre??ZwTezM(xxmu=TZP6gF1Zhy6XB zOXBZswW5`Ks-pd&A;-1UXljW|{rA-8JM#fOPHM%LV9E9nLPS2kL}0F;g1(zxhm;?H1Gea=ziiOviv6>q!=el?qiMC>K{ogc>wqB ze?Qw+0ZwYr$GRoB2iwq}FsGBT;42aN5G?za<-hUycTNZglNV^uvcOUDG?L)qMvFM&rLq zFBTb4OniO@fIDj_owQ!%0P0fN6P>4YYd#>x89uRkMu75!GcQ7bq0|z0(fVV@AdhEH zDJo%}v?p>h&rN{qwmZzT@TUI^ZwbA`yadqRQQjQBe|f5M!b)fH{UN;)8R&Jn=aM_; z^LS9Z6mCQK&6>5w_vuYv9=Cd}F1d)NjV2s5oF0?V)S=_&GlB0G?D4lO%I!C;ci~@h zN)k5E@V7xv@H;#WNNqz{qdNgR1oX#;+z0`m%VEKDN$gbFWFPn^)VBdFtpk) zB(GfACU^Sug)<>lyMB+^I`DUt_!n~*>I^-7b^C;L*BT`$lJ<_C1utTE-o2vIs%_wT zLPmoKF&O77awDYnUc{$brqGv~2(CK&QG5?m1I}iboYY{HJm*Y<^}oevy=G2Gs_L&V zwHuE{-f1>tyFy%8|C_FCC&)whZ@pAaj=)630&6hZ*e2-)KR9<^t5Qz0UKka`gF+m; zCLBJDn632i=fO%ug*kl^>T~4M=zRpvqN<3&UqUv^h(?RbvwPLH=Y9Ka)h5T3DqwPo9r-G3TmH%4vGXzv9#yp0;ZQILLhkRJT- z29IWy&Mf&F*^6$1$tRcLZAJ-c?B?Nem{_GB^KjyT&>_lPEKrL{S;?@=rTr&wsaa3B?TK# z2v1(XENh|CG3#WFMv6MVM@if6^6 ze#%#*VCm?hrcskQL_;Wz#A#(t1(9_~jc_Vj9{19D1f*R@e|#@C>Wd9+H7WD)ZbQW6 zo|z3|4_30={+N>c$i@TgrqTy7@1V(I@sada1iyDT9lJVlD?}1qWJ5-c`m#r%B(M7q zb*CtuAvtyHMT~+^!%@oI85-?%4h{iVwEz2)+3>RIMw-zBF8=< zvTt#Dv$3~)`s`%$z{++I+eIj%sSrL_a^7!mrjAx$)aU-+Vq`txYG0!`^fywdann#K zt6uWcwgVxl=Woqaa0SnRYTlv|cH;GS_wA@oF`uULy78H=&3I1<4%7X{;o8pqNrOfB zad)FPnD8Y0KP&pU(!GP&H4l)CBhR@tc5~tr#IXVgLT6mseo_&-ym?-WByZ0wKEP^a zdyHWB;+%m0(b(ttLipXs{|siTFI`i$ZbRf)_FIq-A|zsN>(cs6o^8!6h@6^H!e#a= zPA4lys;mY?d>-{A%Rd&!I1lunHw25^cmoFasFtPwyd9w>AzUH~W-VB*X$hvGw>3dp zzhukfE%bZkr$=Dx{+mT*sVmPT8@QgDX1H4Z9@Zr?kv6Jfw`APAm)^O#kfvW0EOrAP zlZsD^G*&M1A2MTZb%BxB(0dDRjql<2KthzxQww&B0eq#oDbZI-Y_OdxYf@3+40t1{ ztl6avu`I=F>l;2oGc-h#XZS8hf3#j|DdD0Sz7Akllzbi1)mTfhAtN4zCHjIMtyO+5 z_$XC>hdUtzH1Qn&XrAdY2J)4Z1FkkP#-@j;)f zKg%ZS!QXDTN{K#C1Se%0PXeHgUAb;GQ3@!iDzOZWYAl}w*@XB#QKwh<7JSMaIGM7W z-BP}gDs~S}`CX~-U8|%Ac>bxl7k+&!Xer?DN$IAVQ)n$)dZp7U?q7J zphsm3IiD3%P-%5ZLaFlNbXIRIYGL%U@J}9I1i}5c<~)HZnYcBc{WGOVd0Zy#I=nk` zk&d=D8r1akx|+Q#P9}L*8Lr>@qXX$M2M)T%%Yg&47BPt|)6uU_Mt5d)@`mtG(Xeb$ zVhEN``k=cuwEb&)XKVCDih$y3Mkp8H+uk};8%cs{imm%_C-qNL0z?TiiM=-KTenHE z=oD=aG6HaRU=%p=_TPp7l99~vvaP=1UC_Xo7wwbDENCI$+%8is!EgH5@{dz`>8R~U zG1>Q`dElMbn}Lf6Y$5f%IWYcouhn5_f2hY`p|dio@|z~Pj&4Rr?v$OVudB?NtohDKW8&_9Y7kfr4Q5iJr3|;Z zB=@YDbzi5LRbv*x+P;w3p|*0dN&?y;>}1*1_&zo7?~w(Yqpy5UW+vw~CNUHH1jY9Rc0I<`t7#jS4(8jz z?CVa*u+QaZ2_>46$8uv*X)dn*rh4U1Ff6h{{Sm#6rl58N0Z)rdn!oNFlHY|3yd+VS zg2aH2i5adIcGWgF()#D0HQw$^Ggb-pOu9M$H+X4R*h4~sSv#_J63DDRM)> zU643wccN>J$;+?Zf*daLu(6aJ@P>wa>&mBKXZwT17gq~F*JB)AfnFLz^PcQQPAckE zqV)t1j*Ted>St)I&qa~r@w*o8((CW}bNX(`GQ645I%%4 zK(p-YH_CPe`v)A78AngK;%JAC8D80Gebo}SoP|A%+m5XJTy6S^YVqPuJ!JDQGFN2P z)?ehMe#ZpQfv=_?Llf*?On7OZHQ?dp^?F$MZ+Hx#l7iPeJ}{-f*))u2=Gk-K#_=3Dgsq+E2vq+k(gPeQlf(5TCM@kFt*nfRIi`MsZSR0u2S97}ujM|r& zC^&NDbQ4GamNQqnM6663qUvaTSgD$2$)K-7_+#9LB*KSm7{_;AW%-j>apa`z{uUja$q>Wyx6Tv0i!dz2(qbi+~p z=<~@m4i4^<<#!!_x8cDzO$HJ@Ov5BwS=iYwnx0uz?80Tqq4lqTd5%K;?X5z@ro`p8 z8%<4B2_mXxACD+#TVSj`oW$Uw73s5a`;XPhk1TAxTycd5-GXr>NLHcdU))B+n-an*;EK0|e z_X^faJRQWZ0(DTP=guj3;I+7&%N`w%gdYB-!`%pbI#l2=!Hb==`^CDqPaFP^_S0JB z&WCu-18vyDfA<7%Qqn!iY(qM->m4VP;iJs4hbh7%-5*fid8R50yaRN#;Qr-+wwG#{ z3|RJ|j2$3Kc}3M%C+ZH$Y|_qUY*#O$WV0<8h)Oucp{vNf zD>W2+<%FCxar}?DZ9JL-7%2^0^X~+fwMTp~NT91w${*D7y}y(=?{!!HGC>_$#UHWV zT#l>0`uJGLhn=1CIr93wUrv|$6ZX&%{7_pD^S~u;cI%x`-z*DEM-ck5;90E%TF-uN zb(J(jVG-q3&EJW3-&fqN8#VQ#0)J-VSGRN8nG=bpE?5}^%I#!d{_Q19l2aG z2+6b_fBSm=nu6x#gCuY&^bP84TI>&}pIBgC!IlgJLR1P0YzIgCJ>w&p^AWkWNX&`= zVW|h~vYPnoMX3J32Us(c-bt*FxDc_}XVp@QLU6ayRYTtd{FkEAxxT(-PZNg^C|O6K zS;Jv2a%%Hfl=0xAxU$)kNv@8pVS1kTx5MpYO}kuXA7^&CY%iU#Wq+pU(_Dl0bnUr& zU*5@^h;&8i`dMUYLD92aCdbA&;pc8jqS5j0Iq;vmQi9#rh9o>5&ErGetibXYelu9= zjFVi*=exi;Z3-#u_NYhI0mAqQpvezqr)I!^5;;srx;GJPOnY@(=^L2$qzC3k`}6>9 z#Hb=syh2`&vUV&mdO+)q%LnDKVSLYouB2fhJg}y%p}ahn65pgOs@1bAvlpcQlcy@0 zkN#68<_O4=E;*Az4SV{#{1d2{FgU=t;JQ{%1mr4hc zP(K?W;V7C(-Zs7%9|RuheINU7?&qVB?c6z;S}r=G>QrCt6wAk(VC{I@_}9ZEgNJJ; zlLc{n1(JrV#@dRiLGwzD^Ic~uE)uRauZ$cs?+U^le9}yOD{$${dvKr=_DPht(^i_U zmrf7)G6v@@a-a$*OUx2lnt-MAno89e z_d6ME3tL^z76?s7R!U;P>% zM-_;}nNLA?%z@HxuP%|SG8oBt@^5@>`h%p(vLuDo!O-!~Uq{h^g-g+!qV)eB%4a72 z5t11}vkW@IzmD?hi=T^eW?Vlxt{7GV*SnO2yfMD5GJ-Q;8Py$!k}MH;AF_-$Iw9qc{2Won(kB@;g7RN7>1uRYytEr|-Z& zWb8Ij!}rQ*_nV~vj`Xc~=gYy0#9sW`kDkhxu4gEx4`kBx_au^^CP!^fw4Y&KQAfS` z&9GDi9xp?z_#Aqlr4-$Clg{l*@KbR7LKQgZH!p(gKa}2FQQzu0pSQP{h501>P9(-l zq<~+1VdQSU@~edB2km2wX`F)%Y|M|qy7JnTc~1U=Njlf@UxiPbx<~yw57Y^01WKWs z<@>;$U|skD=0@mWW<}W3Qps0I$BCv;9*aOI52#R*r$-`k7nB387Sv^MXJ`k zwB?0-IRYI*AK>%aoJmK_4Z6JxE#po5rOHN==Z%<7*qjL-OG21&xf;B_Ma1}2cS;fP z3!1)#YLn`k^)14ZHqP}>QP+E`S#EuW=VtK~xCb-{k(XV5uK;?0^2c+5YlX}%q0k5f z&+|%C|D?Gze8bW2DF)KoR0(t6xAE825tnMwbA(HI)^6u9OKj8WXr`6wM!>Vm~{arqs&ZllKwX5 z4Bzsy`Nkm$__KXa-qU&qIQ6Sg_6lj4p}yhqkj~~i`D>bW(94C_r}WFjsk}bgRgBT9 zmJo5^i)1KAv0kOH?g#n5`)TR=J3WW4B_@V21l6_%gLt|X9!U~QJv``M6avJR>jq{5 zu-{RT84|=1D8lzmZZ_*+T2M6sa*6#jTC$)&byrv{;_Ugt>_j`N50=cNVg0xPa6%Xk zg7=5zwtXEO1z6KncQs~9pV^tR-VHM&-a{I|U^KAo$USuet_uYE4R~m*czfe(?M#D5 zi>O(nrgs%`usDz?0n^COnKKc{`;*5kRs#ud1@L%o4UKs)_V+a9_gj;ANzU&tb`5 zO~OjF3fd?uFoCwsGTM0b931~W)0bVij2i_SB0YWS9*w_JKh6iF-IBV9SRr&;!--k< zohC!uhxA5X!*@4;_-nuRYy55^wh*w+!KQ}UtC?^BO@P27e%;D7u||U1m-JzicxMzb z%7GvavrocRCVjCa_5X?!ecG!pkAl3XPgHo)#_Zq*IFr6#Uwz`6N4Tk5;sQz}d59S4i096qXlz_qVbg%PSO3L1Tt?Eua%;pGJ8%ohqZ>EokdKc?*56F`cjE0|>{ByzjKeIPye_#%MXt#p+HYks z={ekMPrr{X->c@K6$A|TD3i54xv=`~CXBDO@fZZ7XhnT!RAkGouBVR$}H_FWj|@{Jnd*|F|M$yE2O<9CR*{8P*JJ9bKS zbRrT_vsjY811$`P(AZ6zQXpNaZp;#aTaHqDuc|Lp$tCnFlxaMjM+QW215a_3tiWlX z=|dD`^&dBZH50#lBQYcw}5a}3UfBoQ(GHGI6?CcTJVd7p=kXt zR|DhR$TG<=Z@y|9GfiOX3!Zwzq~OtIjQL93Qq9BKS%UbMeGXWP%mDN=Krbp2zDYy5Lu|`7_#go92JSMcUbtm6 z5dCE3(^KuA4!-lDvzN+93`-XGxzFj`^ z-9HG4N2Q_6>U#EC8ogH!sJ%+x&#WH&1K`w&8YIl%)~o=@5ue~C*hCF&Swl8FWA)~R z5`7jT5#+B5#Rk;7hDegN4-V>7o_y9 zT+4l9hC0GO)AEMKm<22Bj9z z!q7PVh}lO4i0w3C*ZE}%hf*r{d^dAa?Z(3o7(dE`Q+L(@6b}tu_Be+O z6j#v;^-cWT;%HOQV}~VNK6s9``6K&dWgvA#kx-8XTruMdudlzKpLkvOf$F6JNn&$1m+Ogo>+3b1l>s9fkAG6jYk_0rwoWBM*C(PCX+h;P#Wq=z?=@5|8Btj%>_0 zJrqVqnIq2O<46n&zCcnq_Mm=53BKa1ZdM5epUD6N3%13-^BhCWZ#awmbUdlNch1|_ zzq+B$vJV&kQxtE>}|y19Vgh^(Ze|Vgkn8_u3ek;aS;uJiO0*~-(Z@%WIecD|*V_&PM0AD-c{d6rQ4r#B{ zNM4u_m~LpGPHp(vjKE?Y>IbH^p^grYp<&&RmEC|3*{LUaL_U9ZpG`)nRJr$dbZDdU ztKQ|ELO3}8Lebgj51RfwY;z_`Bx#?1rYiv~km&Zkt44zGD*W9fTBcZ7pDsY$d?gZ$ z=Ga&GPJ7LgmUgQBN^C6h<^@Yc0ax~*zHTJ9nw`;3KHE#BVE4$sgiGEfnk+e+d3h;U zxQG@;Pk6D!4qSQD7)4FGVkA7B4J?+n;;G_puU(YJ2q*?V0oYXbsji=r>{)oa_CU{5 z1fGAYJ=h2ICDi1qWr4p(Sd2>RKTlC7_rIbBRO8<$RT>$3x9{e$c_+%t!~sk*9FK3_ z-&$36R&O%U%&u>(Kd^We{mjt)8=J@Sc>r{Xx*H7`jA+gt5yNe{1o~(>FXu_7_M

(_(pX+u7#Bcjy_G*{IVX-$!Pec8+|LOw7acwEyrA6dJ!IM-Jr3RXgP?{`pMMLVSD z$k4@R)n$`PNW69hbC;?)+&V{KXsp^|Er?4ro@;9|7&o5@L08)V7hNDQRuZMK6b{&Ll_-{kz zbst{?P>d@^?Nh2-YMzNh^;=UBm`V{+TI|8+^?hhxHXH25FBkecwdV|r$8K4`JyxhTky+gbs;LGnR}9W!?QH$nc% z8LptO4i&IEu&LL)1-ee__Hiat=|^X3#SCUx?L(0%s9urJBD3 z3nuujjdTsLS^nI^p)tY3Lifm#A-!5n_`j(e<(NfPC}AONBNOjgOVitk<(JmfnDvbt zwgb15A`J6Fb5z7=cB$d%Ze3J+h>Y+B?=T%`#L>xSI2A?lP2ba9 z6mN*R``oWLoIRDNA6Cn%+i`Y4orSAU0ceQAS&qtMceA^Qp}Sn^)!;T@3;oT5izJG! zhKV!L+utn|undj{@$Xg$X{)l!B)Ig?2>!e$pYF;`?kSkOg%Strrx~#eL45%3>GsG% zSyI^QR$^eI9T>}N5gm^YrJ=+z=W$X%-*W=qUJ9JyL6(FK7o??wOG!uPoZ^yTVm6>J z2AXcdoEYXJpio0?-{q;te;!8^2Sr#rRJ@gOlOMI3w`vbfUk|RlVCO{iEiR@oywGf` z%Eh`!CiizWrI9BNU&uToT1xe+0}Jm;o_}4e@J-LtXI$u_!XPqD_(@nz++qy&`Ld}J zJWGN<%Q76EwYHe;R*#CGM$_LD6|nFj3q|1-E{n-Wqo0t|`Rq>s-Jr{h-Rs4Jx8DdM z?J1x(xiV~GB;7(f(1BC_U73uizkP6X9})nGfculxP~u=t6^0Y;G2Vq>r=tde7@Rs@oOGw}-d+`)EV*PavBImA_3eyzwG$7Eh23E{a56wJu2{ zqWJIMOn23%qmdT+^JlsW!dSyyap*&Aneg==3ya$a zs%jp5$yG%Pwj?aX$`@POgJ;`r?<55e<)#JV=-Fva_|~(U7_;6npyMU#%kYdPsXNi( zZ*eg5L02k{#>qyDTYeQs)ZKMU3v8s?;rIcqhtUH`Lfb|OdeD--JH%)iAA?VPZ5<{f z43+{g%5T4&sE&tc!xv7>u5p3lv_M=HxJ=wW7g*DZ!@*n|JUzi~_Rc0MYK?^b``iUW z?TlRY{}gePExcCOi1@kKdPO8=me+luAI;8RkjyZ$z%xpOhY!%wW zo(GgCYX+Guv$KB!{MUj9+@GyT;5vlA|5XjU0xYUx%XFEYobSZ$L?V&FG^78n>=D;_Op2v2Ijb>Gm%)1kk7IhaZ9FFNr8NFt(CW>$(ne$FTd7ktUtaEZ?7Y>1{rF>D7o_i{^NG8g;_VHw^_%;mCli_m1;>C>sw za7qDOq$MhqXic17=|>SHUHQ|rf-&@)CNC=HxT}tR@}uU+sfXy*d>sIr$NM#1{5|K7 zo`*lx@f9h(ic;&q^tfWpm+uND6POE#-sEq)mx+t1#!7I@ILRZ9rs^}PB_+H#Q{T@s zOF@($bj*G^@jCrR>k0&Nc4~STnCb6;dHH}L>xc9RylDsq>JvW?C5@Xyp}xIwOO(E_ z=7-?fhJWUWtcca-eu#RcFJX8xa!m~cCL9A-2?w}<#%@d%im2KTY1PG|N8*GD^!Sjy z59(c&Z}LcW?qES?3HYN#3-Bcho3-@C*M4&HyKihFSc3%_cQ4xl4)gl|1j(XC@IT0@>pQ_jHz*8j!S}8T}xS`1-aP8|| z5uUh-{bBVfZ5Ky3}1c$z3~3rT2gOOcA2}00Xx;3WFiSv&yM&Qa=`# zZGlov{SY?pI{(%LI)x4+Y*83@=G)b&PWTL`w*9J7dE5_xB6MqJJ`Qv2?popdc<2+j z=Ypo|4UJ;7^3at}?*>?RLl~wBP~uw-T$Um83XuvHZW^~s^DJ`-B`hN;rnItS4v(N% z_Ws^Qu84`%CtEP-Ymr^?)+@PxN;vq&Z`O5BX7LP;*}Z65<1ipc;d*1Bbm5(_koD#=M|S}H>>Xv^ zqkHd)QcNk^pl<`t4*98ag#)!CkRmYOxw`5@O2w>vUdh4i)4p2U?C)TH2JE@HtJ?)o zH%|NhdF9gm$NMLjzyX9HjcJ)BYY{EW$#a-zHpin7btN$FN^7%92?@dj;((zw8DikT zWQO@tGVUoQu#-mdZjOl#{0~o@K+5iCsj2bM9Rp^(q2AQ$V`+C<3&x7REDrzT_pKs! zj-t*E_8$r%Is7S}u8SNDHn=}#sU)d?Q=2MZ24WZf;OnVq2HoYCht)$YM_j9>mQ)-! zuKcUB*-G!K6YU1|f?)37=S*Rjjs#G2mwvW`JNU{j(=>Y{&}|RaCVmoRbg^X!4KhQ8?tcOuVT&kf0c{+d=<=pNTV@6!W% z9#(ce{{u&Kt1||RjZ_y^m?L?@ojkGf0iZOl+<+qR1PLUin0^+61RIcg8uTcr=e4FN zN6meU{$vin;RU1@+qsp@6@hH(JxwXN8+#e}kwxPLxfSPM`_my5$~p2+WS;z{+kxDG zJZ@NVpzLvW7Htkn%nSM^YF$UPPikuKGlG##D43kla;x&$vo z>eJ(4PK{e!-jASn^m9#HO{5{z-;9w5z8BCEN#`ft7;>RT_DjO?^1H_q?#D+fA1VUN zS}j&?^cMvXilks=KD5lGc546Yds3R-WZ@*ise31LV_`J*|BjyANS^vp;kMUx67NG= z3(TJXcC1VLJ6*hjj|&WFb?y#5{PhQuvEQpz8v6UbN5Z zVsh|B?CM@lIdL*nPsfZMMtfIF<=)SU|^1!@*GT@51v6cn)3CVp9(7<>xNb1tlx#X!bO_4V7C_G+7Cl6wIN-{ zGQQiM%^U(dFgu!#*BtLmw@tR*zWbRz2pDz_aEqP2H3Lei(Y9!`a_0)LYLL z)r9*~N48XT@u$*S(zeb+|LS7YK-1Q|@1oSsXGcT`B`!P+wTSy-MNI{@lHmy4qXBFVMy{-$Z0c&#c~b;WPfVK&ArKM z8=TAeGDsCLC3bpuz|Y~E(2^Cay}lio>z56aGr!-fz=D};8vecur-bXN{{ZTf@x6U) z?EBwaq>EL5$WfL(2IoSBfvMp#*Oev=);hopJ_v(T@58GDXp>uHqwJPvkWW+s6#O+2 zyDpaatL>UyPjzcd|Ir_=HTQ{TLv$WwpSNX$?$x{4M2#PMG8D4v;Hv*1C2O=>nTnndh|&pp0Jyb8?!ZGTRA`Kjs11LPGEDn@0N71ge393Ly-ZgHf0BZ;$X{1sS8 zRENc<0iY{PR5Q#SHkL9w_rqPVDbSk~KPBx!P)si7nkiH*D6-OVi$FE$$ zB80uCD>+X&4zOcoqd}>;P^;Em7u3XS*pVHq(ES^YD-Krjp00zItKNsC#Mlgh7C=4)3`pGFrWgpx3b`iDaCH)QYih4o)nzC0&lenC~mDhBS-_lHmQ#eeGoS#2;?GOb8V~qw;9cNka(()|y?Y|JY%{r+i zb(#w;YYR`e-;qynGqrc~E!_l#(ghYCnC`EY;}h6G{-)gl!zHLg3~Fo_aBz$Pj!@4c zK|XT~aT{k%GG<26wq+s=^Yes7XER%-NV)e3eTm4H=g#XdVrx^}{+0n|! zprY3zA62ni{m>n$EiNVx4uD)82Yt}HYviiUINI(rFdGbh7Jt#Fi4=44^7z-ORkhya z(D%3;+Kbh>&f_+hgVrmJwZ&CgQ|936WrQ#XDX2O2FZ`JoVqr9pwbm4`Nrk)xkEJpF zo|fs5Ka?6`X$$=Rgo?Hh21(t%Sw`po2&JVlpvq~x z|B%ot(Vu_bd`feE*jtJkiFa?N4`Qf0D-i%GLWzo_ITI(8Gr(_n6geZikvhEvch_j2 zVZpyOVr9aQ#bBXK<*HKx@BjXy-!B||2uTp7_iV+AOhu#k;kE7_s1qJ>O_&zM-fGg? zm`iyt{VcVl^$vbn0Mgln0e@2`olLv-&qeH4boo-JMQaM?|J*)IefInjG!n+025E<# zp0yY_>VW?m`FueIw=_24BCnxGQ?7qhJoxNi7fi9lg#5G9+vazou}`_L2z@zRw-DFAeQamDQ#>b8RP7@2 zjEL3*b@GT~fo&Ks0r>)sEl3W>)XssO`yu!`7{hXu-j$(SXN3})SYrxUKN{u7Z%!(rLVeiClK~a%MqHi%gu94BU2j84Emn+9e&rVh0aXynxP!3u-%C zUapGTR(F}`BCpaD`u1oQR9Y$$t0g0`7%GG+jj0J})`|!Ear9L}5i~GztLM;LU=L~* zsI}dM6t!HF0wMkYlb1uK;#=&gn_jjo=gxhaoAccsvOD=w*~{D8Tkv=)n<&V6`=M*x z+{epadBJ2F!ew{*7$GeD5bZw?f|T;D43?u-qNaSwE93GsMblpvwtu_5W)*2HUTq-g zP6s)ub8G4HSz*_n(Y@w<*A8y8sW&i`c6!YXka7CeLKgyN@y@pA+ctfq&b?b7t9FUgcpA%{>p~tiyftd>wsG z*~$J?-!&GYOdEe%&HLU?o+1l%Z<9&5w{;_VHA8@8Y?lT1+qj{c@V+{_XwoK7(Kk2G zWm0wYT7+O4!AznG}u?-6Jzu`qnTg8kltf?JXE*yGfsQq172`frCqgra2V~by zd#Rs^%^?Q=Et|>QNOR0ydB2}re4IHqdY27)rOUyVZ%AdQ`k*H-?u_vVvS~3MPuU8I z2w~S!X<@wD$c>UQs2bFAX$&Ir2YVi;l3nywmKhcGyueLm??YMwo~8IiP&LBX5$Wq? zbRFq?WN{wXZBA8x_MgCTRJcq>Pw^muV~5wAEV?CirnpXp_GDzJ&do-+?^>Du`nQ^J zq=Kqx7;^UU(@B)oQwz2GV3@;@JX%fiaC=@re;Vdr<@qraiTDiGtLWy1Sl16819u zi&Z_4Pwk%xJlYT8Sa|f(d9Fo?Nl84Lf1`7eL*mefS6GD(n`wt;Recq11i_wEc8v7c zhfIy5hJjx!@K!ehCdIFI1Y{e{VA%-D#{1dZ-Cu8#qz}>WhA)(?EZ<#~ zC|bQR73gPas`sC){M*SbjJ~$Rfj(|T56Mh6J0AVhRADykr*(OkKDjvJV8C&H| zL0&xWf)`)OfKhce^i@|*)WBZFhvOpuu~BgFev>5yrIn5+#$c{?4t}CK?;}_KMzXL~w<(3-QaP z^2l6eZEQW>JwD*dW=o2cy;}H|RS2K^S^lYS9uN!ttFzLEx(UV`U*{{KZ9I(eK0^ea zfcY}1_17I*dT_2Bp2cbHznmtunoifXyrp`-jIOx-_OT687UymTI$U9_@HV~w&7tKw zydw%-eesF{Ek))~-or%?*L=lz<#z})pY zWlv_FFdi2K>UIG(kk2={Zpk7$Adi~irYrWYl;Wu7dkF>VuZB-npVW>WzdDd>8;>jDr^k^)_NKrf)V3<9wbOFD2G^2z;Z0bJ$8x)gR{OVr=n1z_hrQUOP3mw>LkvAgr^k9 z%^n75LyDu|NT)uvMiJ1(OY)m2Q^pUgatwtf@d8!b+>D+huSgBj%x&Y^aZdwC0^iy% z^Y{kq*)X5Qy97{p?g&s!2ufrqA$7j8AL+dZ2}lzl*S!Is_h7CcvE-nZ@7^3?BrH>Z ze-^I&;?iO6afb24u2~D}$a zPnlf#0wb+>77OxUNnN~G(R9j2V=I(#d<1=Z7u^#q_Vv=kQz*Ui`jESWX+PMQ8}np^ zIfd1o&mD~5;-E}KF7kny#U^;5Z|jU zUV{a8`=Iz<#8%udmGN}2b{VZ6Ro;W~f2a8P$l%p_6Mr|)=!y-o9A z$JJ-(m_*<|Ir6PV?`7nN@Q%U~l6$xHL;kmS!Piu%-|vLtu>iKhOK}>Z+O756y5_~Q zs3&qX(G`f#?;?7{HPUx82gwT>J{1Qo;V<4&niT2ZlfZ65MX06;6(tUki8lT4goqpg z@oWL{VDGuGM3p`B@p0IHpbG(Pp{!ZIp67a@0&=4Hl7F| zucQ_=?KT>oPN=Icn6Y)5dtFlY@sRC}wYQNv0Z1NyY8)XP%tTB!50cE*SR5qDfo#xU z7vFT6oO|ZK-6}4w&Z6w(+E`?`(UtM0iTYd1#u7blyd-F0MSSa<3$^of48;iK?YvWW(9hAF)0XzInaxF z*b5R5FkzR(QA@DZDZ8;KH0q**(o?ef$7PP6LE}CWuO$FP_sjsig_>7!-SfC_ChDxf zp{Xx^<{W5Y=rT^&)cWP`3R{< z$C-?oL`aUg+&HbXr#0(Lep8s21jBi@-i2TNF}m!X_GZ&(G3V-++u3Yzu5Zjt(_9?* z=HA9xL7+Ep(Ozti?Pa{r0>Y%w`IHno?Ut12WF5~kKmv8pX( zHbkPsl=K#g7U%6?Y2ua){AQ)gO97{D?!EF!5P7?Hb4efKyjiWMWN#CL%22Dw)aRA$ zUPYb4ZX$spT+>Kvrnilj=3K;?FLAQhnZ5W}LUV?Ibsjsy?9(Wbt@@3n>4^9bI{E?DweByl!S>&8^oD$=)+FNs1$E8DnHN?F^Q8skO|ocV zd)gsv3)v_Q7Ep!2s)aW#r)UX!khE-I_Y7m{!JDXWKD9HWvdec1v8PNq0K(b*H%rfZ zkOPH0cM8WbX~1#vS3iBn_-8(!&U3+TAm64D1jZM}$%ZWNlgUWjyZ@FwulX&8X{Ke( z%!xppB|U=(CY!%Lb#)+e3)Z6!UkOPb#Q=|7?J*$=+R%#as$O0)%$KhH_a(6dlV4Vn*l{0xAnYNL zUQ14$)MtvN3iTSp7Z1FBV}D)KSw;0oJho4l&#hc%B-ih_TWXw>u%9}KA}zz!9%PJ2 zfmfT(lu7p^t=jTs-vLiHui!F5A)4L@1LW)P| z@iKSs+pRO>)P~Wo52QV`#jvN>9BW}eo-K%%WnANF*Y}2DOWCIG3?~8Qj&@r>f<;(n zg&%pQoVr92(Kl4JzZ+n-I5^Pv>IPuDS}#VYmj8Yv0+@hu2oFoGaADWK5?F8)tSJBr z-$cWfMQ^Tfg1LP%W45$JC#@ML;GC6jw6CqK;dIAW8%>eBffa=84zYP%(A;f7{C;E?(eWlG*4G}OYYLDSmR~BYytFmZ4P_Dm zsqPzWBmeD%W?;^I;bu5?kkNH#EvD@%G`~!8^C2o|Y&5pqgybC<5aYcZ_dT2%c5|n} zbyFiklGgs-*yGhlFzzXhj^HE%pkGo*n z>EoyT@~!7S;dv@nZ3Db08-fEOFN?II(JEh`ykM)Tp_|*EiCOC1K~_67TJCWKgaqpF zSV_XDdmpWM&h4Ctaw(ksrc0-#AyI>k_j}YBF~f>vmR4%{`r9o6Pwau@=!rIO#Q0-V z%RczxR}uY*)$>Za-HNcCo7js>0m1)wCPQv)P*66y-Ugo<1p z2EAWFg!PGI-7-KiL8lTojriCF{Z{@%xGq~}iiU27%F^?tx~n|`SbvL>KfP4t8Q55C z3?zJDY9R^|G;iv0?GEJms$wk6RzQw*G<1L_YzfLWr;xB&&ScK;@7D@0$ywR#T^!-c z`f|{{3R$oIIhX}1+UJ*^x5)m`pg3$EFpecuSr}?X#yVd5@8E1sG20+D;d&qH2QZqH zHh@_zS^u)oj-p^aTWB#}_55JnIw+bbH@;xvZ<8mXvhSVAO5d9amkoYcGR%binJ%uQhdlt+F`-!yv+Wg?eM zbI!QFFwz)QDDLJ~&v*74$`H$LG^2QtST>@RZH$qvd+(o97wk?IF*ib{ZevBXSq+wd zXSgLRju{zBC5mm$-dLvv`G=x}2qu1OM;T*Z-CO(m?4C#dSahGPwA*al)pbs9STi(x zd--*{LD479ZcL!8LZGIrlONa$tBub8!noOP z2OexE@!3nyQr51LmXpQ`5R`f_JIFP<+xRIs)#t21MVg4uCFun|< zos7z#p0t9-&^JA!vr`LYT*{EILMJ8E&}prplMiJxtF8wyq-@MUXOaLRz=gg=@V@h? z8+M;J*z_!dS-9DsLN}ZBm1K1;?ME%4M7<9Oe*S&uT-cdvkT|5lwxa4r@f}z{&{U_+ zqlnoDBc378dr-%PmPHb)+u2%zB>i;P+G(@3WX8u_IkUTCS#At(IrQ7CG4;&m06ZuIze-z&r`EqwC9_Vb00kG6pHg8sjGuXG^2pzT^J9qqMa-RA_jJp9i zBlR_B0@O#*scN~7m(qFaNh%G)3gHd8;lWD=dU95(M4DnocL3LbnalfGTsD1r0<&#in2n&a;`O1sv2gLl_JwMhlkw)9x%h$(g zo0jE62@40?lcM>n(fxKQ+vBuSoRx`ek#jq9|{;?JeC$V zUCK==nyC-|`KDTrzUzk~Tfa4%I=sXW`SYfI!*SqEC7eF8Pwy?(fB%c(6`Xp+`SMFw zp49$X*JJ74eRa@=fdP(=_Df|T^2`1P5}>I6)Ex)!%5DX*2=fv<{o;0a>gKXBi5Qg? z{=LkLPiYmX3up8Kj@yZ8CkVBM%JTtc>A`cmmN~F&In|`Z7KVL6khwguo@L9xQ{gRX z*0D%yw!ik#@9Ee5Wn*uecG92PIIO5#qHelW)V>CPMdv$T;&z*JmZocZlqmY_4S%kM z+l?%;M-OqDs4)3~r<-C-mrvhTuTtfDH5ECg4+--QC-F(0xJl>-E4w}5SBWt&!n)|j z!Pu0v){_IC zq97;jAA?Sl$onV()u9XdMZ zBXF|${nVxTwZr1AL=!oK&FLz~qO?#Dp9%dUr?b>qBMa8lnSATT**erVOE2C+)TC6DTh8++C^ESDkashqwp` z!f6844S^Wa=XG{8(-~i@b9&R-EE8JkV5dPUtLVKLAa-W`n7TNZx{{TRaJ{Z_2L^*fU>=kx}D$5FYPw-iuWxy z`NZF?^~?wN>fY7S&eK>J0azbsoO&sMLhT(RM!?mR%&E)gVUO{gL!JuQ~f3bziXNQ?E!oNcC>WTWRUWr||~`)H(C zw$DpSb=yW83uKwT0GvUFb+uQa)a5Xz#3s7UltOC9?YgK_xwIz{ zO&z@k*OnLB|1!kFv{u?thR-FHcnpaGj_&%6nof4J{?snI^O+jvKqD^y6b?g;!zUP=0N>CeK}P(8Z7ryaMm5#j%qe|0fJ z`18AGjyp9=q5H|MwSFcfAqtUUX+cvRb~Rn zfmF8q$PH-tTj|aa4$ZH0G8zbrwaBs1LxlTSBNfh6%0Y(jk#Dl6t)kaFNr zQm9~&;gQ2vmnqmy2(BNoRpw1-CiO!XSy&aC@Y2Hk9XE0Z=T%k#9%~@#DI zKsDviP*#EGAj`4l5p|t^2ERn(UuFBgvQhw&Y`P@}zakO28jiL`@&e31ayCAR#`ZND z!0nGMk$}E_p+tY<2(r7s6lqLfsj}WwMbEBt)5J#9&1tV(+j5ABR>(JVKdW8yl0F8PGkRm#{T>Q z(TPR)yfVI${;U^%i!H7eo#9r?=XQF_y}H0`=_yrbnIa=l9L~=7Ww#z1dmw7wcl80O z|6nsFw~Vsp+~J*TvgfrY$7u_FbjSdrGF9uf& z6h0lT+pl7N<=KwlL-*sXKqqgBrerrXFVt5PT|MUYAkWT9EBI)8LLpvJgnVlU-V?^t z+MmHvqNEq>lji&yas2NEShsM}#&%ibiO!zQ->Pdda!N6>w7rUIpg$J`w8LX-${C(f zUen2br(0bW$DTqV8P{0ewvU^Yhu`hKzE?MTt7N!BN)L4ssGfw4x+8w4C+*Y_F1ek} zHo`^TK3a@`7*wI>Ro}+7drl~p;--qW+yBk~`c2u4g6^$*@Q07q3G8gZr#t36=Y4sb z&c6)Uw|E{Hqd3;Axn__!?9IU^_w`-iRd&aF{!F6_oM%rX#$#BzmmRY|Fr%ld79z^K zB`3q_Yf5^4Y;mzL<+s${f0GbC;FZo^<{s&-+L}}guTscw4<=rw2_1 zG)WqAA5}>~aqpwVvVa1&bnoo!+qL6tlTTeAq(d}o%4lEk-M__|3rosdZ*?8zoO*cO z{qsG9AjJ1)=Nbp^K8kwIPm{Gp%cAAzGe5_CG%M{9I_!~s-nFSi4NSK#EBm^_KNtKJ zvbo5^iKw6ShMfI8;W>dVcN|Yd3v|!xC50*I_U1z(0H@ve!{-@*|KiT zjaRNzrn4TkHo!~L-AWel45-o#1J0uq?xlVDrLCXhmI!Wom*7q9i}9PdT9W&ofkiUj zd;%04yCZqxF1H0E?5Q~zl>~G4R8JX8X@2s)N1`8AFUV-o*+HIQy@8%0hzq@QUsrWb zeza)8w0flQTVaU+-H0&zm0`niEzRGFrwDofVh4-hA#90szag#+{9Q>kfV_{dozsXq z>M75;uY1HiaHkE*6>*s(Rf_d*UY|%*^}X&u@mgtFvB=9}C(Z6Th@#GkE^JE1oBn>e z{J_yB`=7iIu(j$kddxvJ4eu@5c(7@pW{l+ivqQ)qLti{~Ra9CQa9TWyP`I#M{%@rI zrVMFDzS72th;VM~JK>_%vlPWK8b@A@Iv6E8=2y%+v^@;^OG3UL+I6N|6PebGe#-~O zV}67EUm>F(HT^yBPR$wSe~j+TspRw?WA8pe_VX}^{@LVK>$cf=#H_tG8G}@0>gLwJ!x06NyG5toU`-s4kLZbmgj=^DgS>fgSJHK>TKu za|+i}Ha{JW_O-{agCu0U)+?88O(LD=?X>UHazvZhoiQc-$h;#B>?Q@ZKG zmt%kCp%ZRZRCN>856^d#_Qy^e-Q6Oj;)a!MTK!hSoR>LIokS){$Buk>&Ai_=xdM)@ zK(nL|y7UK`)Q9@d&*aw>%FZd!v_ubOEZ0#h>F6X-uO#5}a^3T)e=iZVIW zxA(q&ubTib$ezSidt!K}G#R9fbIka6y=s1E$Y<6QE#y`S4*@SLDp4`Id@&>h7 z?)0NkMrar)NDMA5)<20{FTHuZ_^-?C4Pz}`q2I;34*V^Qnpu@w`l^zE)aj=1p#D<- z?Mm@3G%@7O4BXmnEB7GL6lTadB4(mEo^*lS-7dQVa1i;e5o8BGF=U%(z}^1@4nf!m zN)0Sq0Uc+M6QmXaBlBFiT$}GMc@6v5X^ViH#GMdhb}!+pbW+Ehtc6M+g8s7-?2b9W z8|IM$D#iyJGYovlsRqjMmSJ5#fP5$oQu*jO;wTkiYg@{YG;UM zwyaM1o;S({BCZi`L38S-7hT29b-|D8P@T(@UjKG)RH-YWGH0wU zP=^;~1#~M0m1Z)}*HgB~)!mvm3hRaDSnBfD3zB-6!OqI{+^7O<98BgPDd-d=?tVi- zijCU&o{DC|ui{gwJ|WzU^0_D$@yfC1G>pIL?nPmZ&`(laF#^CE;swi7;=9q!;3yd* z`5{@eM#>M#lXz{ZyRBV!r>b40)E0i9I-SL=LC}}#V%uwvl6hclG26h0P3_X|^lCe^ zb|c1`#`1zy>(um<`elbciJ}KGN~RAi>6aBCh^b2!DIJw*T796E$=yM@{sGrF)3->t z@g^Pt4y8pKWMEE~nNOQ|bPz+P*&6-VX@s@un0j|`NpGLE;^NbPu!k0ze_lmh&SE_2Xo@8%)& zy|&1T^iR*ZjwG|tkxFbRXQ5P zPu>30UuFqJE^b7~kW$_X8t(MHN%}EB5yr-_6D6 zV5VGuy4C-=@?AhPR)z5P>VMDP7GK}WLG_HN{koJ$){=UR2$DQlb7R>s|Mlz^6TSwA zIDXrXjPYa+9rwtM-FPvZ39T6z4erZ%N{0^@3Io)$zL%m-OXCx@@#Z7}s`=aJwXmRA zkDl|Dta755vKfpTB1ThGPnNy%PTMs|hI_;Pf5ODNHf8tC71+s;y-Rw6d{NIXWJMmC zru?FBHSU(a&UsyA?O}aB;P4Ll7Li%RhE&J(VOFigbsY2~b3l|tggpKx^iZn4+pVU8 zN1R6bP49F!)f~+cWEm{SRNsxg8pBvy%Fbk*!nCZwA?{aywd0qK_XMQ~O1LI1nazfh2M2U>?Q0oMt zoeH8{V{w5DI6-pbczNyO9BXF4vm~Z|N66o*aH{c>L!fydIx9BO2jgzPecI5-U5P1> z(A&)f-GZmo+{`!3n|FwIwxV)cnymAnpU_}&e#L8PcbGO4O|@<)^`5c5;&cD`J1g1q z*zsA{@B3Mh3KU%|e}Vgpv=7R`#o*v z)wEYbkNOJ20R;i}_ff}KQ`i^Dtrqg1EcvL4FirXX{-I2{$m28}u+#W8>+8Q!!yh<{ z6v$T+3tTE%WQ-Ng()t_@Bwd^3ME-U6xmhmrKm(#+NY<{a9KTu@er3O+q4V$2oz!Ov zoWDY>z4%r>UXmO;JIa7b=>Gp|0gy#Ikw;d;R}s>cB?9bQfVzQb(sszAtIxXjzX7zR zJF0hz`tcmlYSUigFd(&NT-HN4qDj}yruS<KI+A%AcW_`AiH+Q}P24g6=myP9u zr{u1xPrKXPMMaKuexv$YFQTVfO6mdNcu?>GZ9j}OSK3fhWKDKc2d)Ix;qpq$U?;AK znSV?u6e@}w`fU8PYzre(od$XLx`#OW2m%!@q68-Po#9duQpq1C zY$EV$yL5YMuK^=hEhX!B&Uba}vL`K(WX0H-hShKOg& zf%0!ey6!v5iXlt-GoQ3etqm9OBVvY+Bf15@(1Iw)8(ACu|IW#=9+{FYQ>K$QEJnbv zYbp~g`fiWulgD7OlQ&ckUCL251G723vxfB69>7IWP4AgBdYA9JAE(aD*=9y>O|JuU zncQ}?b@1(l7?zJ`*5I=1@d%#18-_2=fYJlk%I&aE6M&AydmNlB!f)@SpSAnoLT2P= zM3&Xg%SCIfMk?H?oBNPh`K!1erj&Xu!wPow+A{REs&%uT6CVt@45cBVd728o!zS5I zz!PC)v3s>Ye=u!M;Lmq&#bc{fln6H(QVcM>>A{kzY{U|IledXJ!)JCr#(rmP(Nc8Q z43WSN4*!UO745zuiE>e-Wo9H5c(}i z3D%1h>VPt9hw1(q<$GaE1SJwyRGf9HL-!t|Xixar8<}@wL2}cc?i%Ku;SOJ(NAE$6 zJpbw4Q%xMYy-Ti_%g(HM!(qN{V!7G%FB)a7mR<>dF_aSSa#3cD<7Ef51tOHDUU;k0 z@b@@Pue^UODBXn=NkP$Rd>qX5Bim^2{j~S`H~;Ib>RPx|n&GGTK=z|d3;sx8V*$Yu zK{u!n_^x3AVfy!|CG#&2l^gt^{FXK{=+klT0fCyQ1#U+!5)_m~BQY_}5dRmtLHcI{ z!mLQizV;d@@+#m;br#Oq%h6b~cbx;TS?S0NE9LINpx7$2hKb(lW8w^~WnV@-*bQ}d z2yFi2PyN50)GM&);HBneo!z2nMe$tYjMtxwf4%sW2=OI%Yl8ZzR({3q%L>c#qFcR1 zvK)u%r+fTG-r4Z>+7%yF;!V)11z^I2m6ycf_K3Vvd3ps@U`OxQkk%2!ZWVI(YlUlC zZ4N5>(SK#s``f%b@j4uXTgcJx@lpb#zGqT}hZS6#5Vc|%Ynxb8{Fe024$%sh822Ky znYv#jx7v0HAIelZKskVBXt8%Er*mo8M=BPUF*>os<9>`LnZjPbjzj}8ybt;Hgnje% ziEfy-qlpP4yNI6#tN(BB^GU-IlvCWI^w`OR@0>4h=j}s-EvU5>U>=n2kq6+G(Q$2RV7vSU2@Mh?bf&zC^ry~B9kZE zKT6$Z&bvjm5dT5M-_P#|f75N&1x@*OHsBr$JV9&=Sb!?5yxxlj_!^x8t-@1cV^ zaRE)+0!7k+0ibZ4af-a?5h3WmV##g2<3d;D0BzYBYQ8EhO2vj}mM|RD( zf%Vcf>YwilG!aAFuPe)!_gcYi?7?!5e-RvrU5!%S8wmYC=0vyso-}wl)*}uvhQJi# z&FbKVy^f0t`l;m`dgmJ;)U91^s!Qq7f4H7*3YMQgwWInn+itaEx^Eg+Q2*IJa~mV5 z^?O}PnDyL!6YjrBndR1-pAy^t%9!Y)$i%Jo&KmOSLUlzE1cvZ?;YWVy&0LcNtSQQ# zb{~@@)!n6j*4`Q8$zJT(jF`pFNcZ8$@}{g>&-*c{OA!hLz2egh!X=72a|O!~t+x9I+kWSKel(@>`W&6l&IPTa2`J9VDx zp8AbHIKg6S@&>XDF!6b6#b+Jb=9uj#Hn$(wWcRaSS8eOv%WCn9L7xS^Uf$VzRI`76 zVk#z!M<>RAzf5^d8bE~^kZ+psOAqE!3loe*x8C?~XCugD$A$0b8Xsj{-{ty{bI*%K zV;0#-*89VN=zgr)*G<=9;vRUv9W5;fx{<@pqEllHeeN(Tp+@Zd9yJQx9Xw~c9bH-n zn@jtfwL!bO;H8ICG`AkSyIAC$oNR8gWw-v}H-$0lR@&_u?P*`k=>c?>tnYAGe_TTr z>zQ8Q?=Wde$SmBvw6glGz*> z*aWz5BrJ(bVk~csuUh5L8zQQGWK{(^i<9NJwtqg-wXTmSm(Ku3kH4bR3hwxdxl7UT z-i6Zx7h1(*>JKg0vhC8$M!kHhx<|GVDYx1A!9aC) zSLHpZ0=LP8)xGcRGB-YTJ6uG1p-w4Cg8FY{iprFtT>-2&w=aaP5mR06YI$l>x+^(t zYWdA~GMCivoUnm=TR!L0&8!`Ts~CmJrhV(!RF#qeLz1@KnoiVVwg->#?fH|@Z?P-` zf(u!JO6#Fyw!FE0@Sk-HPC9=JU99P3ecmV@FL?Ge44wx677a`sIwU}Z>E1TrPni3! zJm{pzmzQ}i7b95nXKu+e*JPvPV!X`>in%7mKzF|8%{<9plglCmhDfm&;iAUI=E~QD zzlT-oo&tx%kK+ZC?rqP^wi&}^11Q40a;iE94xK)t2=yF!`1BYLcs5Xs)yjg!c0u_& z(3dCf&@kfMXBf&nA;GrDF%%nX8)^Afc;%%f+ehLPEI%y}kusYmye1eKO(bB(0T zmtXR{W1jZsN9DDXSwyoR)0_N;fIDwRgtZHTP8MV=u^4z$omQAhiNr)a5Jr{!6r>{O z$i}u=QCa=P&=(_8*3#XZzRLHjIV4|j#;B8pt`TMx`+_z45aD?CJnM_9#}1lbrf1c0 zT_at?r08I})H&BGhQ8-Rlr-#z@wVIP6&t7eX65R6D-pnY%~rh5^|kJ8}AZ;Mo^&Q9Pv{1H4^y>jkb8mv+fl&S4?h z7p??--BX+_&o$#DPlx7Xq?S$Xtw|Y9lz`=TCSybCm*npJQHD$Uw3|M0%UyawXYsuE z4-U~;*x0P+(J!Wzh*|QtM-j++z4A7AYrM>GxyDgVQ&>QCir-NzYCCSo0LuUw?~yA_ z<@~nyzFi^&J;m*`V`Lo1jOYnFo>ISHwrZ#xyE0ab+t$KQ!$1+PGOwPU(|O(&n*w6v z{Rj8Y4<8z?-X@H_D|}%Li+H1eq9X<6D+<3u%Y5}P%n4s5@PI>4cU1n#?)wQPoKn|m zI7<>WjTTSPqq-;Glz%>k)HH97s9`Q=F;cHwAu8l&21a1!nvm({sqx=M)Ws%XkT(8 z15twa$cdmP9?Cb(b%REV>TOW~g_424u|!9n45be1O=SLuz093m0@Cbb_PjS+4zGZr zXuOA;j3`3Z%@?>zP1=_e)|~P0=V@492XF?8@V{3#LDx*mQ>xm-rh8bha-+3ykF#GAX*HVI!VDudpr(B%QTjmsC7 z9-=d^ccb0pR+=p^3xPWU+A0}S9 z)PcjibP444S9W_3a?y@@cCq<=xjo3WIWt{e2)E(q4!2LDc4d~aF0wW_3Yd!iI73gd zc}TKHcep;ICzpBJvR5cZZnNe4b3#x!%coJRv0NVrh|93P$i~#g54qPbdejYbC(GNZ z>XP`so!B=Hx;)I>(MvMm=4aigZb;j@Fa8vPP6lH+#cg?9QRVS7$K4-G9SPBu^idxd#rYw_Hd8S~?Q>F6w_UA)*A3N}`1o&m-{1-&jZ>iwjHfh~6yJU` zX$4NBjdZDk9|sz5zoN>M_T}jyWrV6t>t-gBrEi8RZ;dt3t&lN%WeG*rBBh-5>nFrN zGzbNuc`hK1%N6JIgkBw3*VY632!$1U!`(yBhb>AcvfELy$nkQoF9f1(c4*iSK!xwa z%pe^}GS?g)oHvVAiQe`5q|Wxtf50^t26EZ*3p??Wb^vk;(A6j3dNN^H)nM~4VomLH zUQy6yU?-?kHuUd>j02RG=DbZOC!1j?8F;IVZ*I`XU7jRj)2xTP%zBfJQ?M*ldB{qG zGxU5N9|>nt$<7E{~HVAXd;XAON|Y@j#t?}aR( zE5=)S3_%(5YKdsHOGlbBmU3`%fGM9W5S^DT^Q$W+RXM<}qa!PEs8vYMsla#MY6i=) zej~73QrP^|YGdN)UX68cO`)jRRi{&MqS7K?f~=D)J4O>hd*WLS=3crMA*wYGJWw4F zy2|6LVY=z7@&7LPH#GP^%&tA1HP|}wT~K~aM!Uj)moG+=Ti17!lbA?uadsT*74!i& zq-$c~f^z=-xHL6}0J>G5%nXuXoLm<|vPK=A=j88a0$;Z#GU>r?bY4kkdq1lW^!aA> z*AJ&E`DEJ_Y~P@`kHn-%cACV3_ZI2%YFKaXPO{9E)dwobY7{}oz>4+(5pxH1^}b|Z zSZgkD@-~s!`xb~fgLs<1qM@3{O=Uf@Tb{D^V`<_$mS4C-nPprx^H{5obO^p3Uh+2|`^dm^2cufts zRZ3@p9J4KzOc!gg{QDG+8<^G{QJ%_AKjM!br=4 z6fla3?062e|3Q;t(|$b1N&^C(KY$>vr@;ha^B1Tprk9avYL7o2?3W8TD|=84i~fB9 zUX$3t36*mwkjGPOF;ir>BGsFLSP(~DSn89d(w}iKe^YFydnLxT8*GH#F@LK#AdTe! zS7^&qq5s7ezhy{^d5a$E8Bxf4_@Qc#=JjsPqN0|aOiEk&vq&Zc6ZC$G)2-dTTE*Ix z;XUt%-dwtqS9=5}&uzAdhx%r8v%V@^_Phc9ExVUF=*h)snE53y7Bc6=GY32wSUvWt1?Bn}T-|VGEb9 zGzyGA@ZAJ&xo27V*q+gE47rnH$Np-;_+%2Z3WP0^0y4VcI`bvbSNmDg8?E#jo=cbd z0ey5|x);gHBp_C2%1NZxGYUy4X>w^77;@%^dw{bb(R#DuY5UR=8Z96fc!PDC9kR0h zTM&L$?@Y3*@*55GxSfF^!J4SeOXCXbZM#zKvq+U_KpI;F^Z7N(dZV8+w2})Z@75Yv z{mW0YF&&I7r;Gfycy5fHrXl<9M#l09I(nx4*O^e=HM^5E&8q8P)zhTt}u|o2c=y>Kd z^7Coz<|6lo#T_h?jDEa}D?Iv2UO0@R4FFH)Wu&9^q%jF}m2!V(*hBkuTWEC^#JL=L zvhn0TFlDdB^Jhm8pAbU%J>s$hE^yNBxDdZ((=K=;ltM$4zb>F8)Ha#f)14e_djlI$ zI0TV{Ggbq(;ntTsS>`l5KbC)TCP}upYDE_eAof(M?p9_wEn6LT6wR?>-_7DY6=^}A zV9fax+q04QKO1s{39L)Yr94CC&e}fsv*;0Q&7G!cEjk)d31Ox7jvuE#07KFWVEvmf}H z-z^AwTRL6YfGN{k>r&=8{TMJ5LNbX5x#{px_f<-6Yn5*L@$IAfZ=D zRiP-P^;-nX!pe z^!CppSCbV~YP7>_u4)Fw0Rvf$u8OQt*s;i<_{hpi#9)*WVtCgyvdW#_|0&N&blLex z28}d3rORJaOts_q*;Co+!0!iiG{5cb&ROq?ajGX-(%$$wO;YPwzIh4OLX+0bEJcHS zk6IicgO+E6G2eb}AwP1{IQj9d7LLic4nCo1>YJdN?-6%$a0Z30tqd@~2~5`iQL(X8rw|I{iD7 z@fl@83M)P1Igi&@6T%aCg;0hCNcH)ahJSN4fXaM{6Fo^OEF@s$)*AW==+Wb1j!f&{Ip#fNk^T!B>rdefQHooZ zmf17L9gXSIEK}a;!?}=mi3+rkCe+b?R7jdd(wTZKl%BIGQ3sF>;S5_F5(Y|Lr5w2R)X`b^#<7C-G5pW)*736RKa z4IWm_DgmP>6!<%dprz<#TrcZDuw@*WNH^7De3zKE#lj&K@z(ZS6q8mod!BmUze^~xX?gT+j6d`xD!il<##95OOzLm8xm-9z#b!J0MUUf-}8CiDm8&iHXacdXgmDDXsgqc7lr^6+WfNz%QPK=nt+4@;RM>(b4#uO{63 z$XUAs?l1oBdO)kE(E32#A8tWgL{S+=U93D8OnVcx^#GqXP17+EDu8vqALkMcOk-ot zmZvOj;ZR9RyW9myVUWn{q<{u=~Y6H#ZS z=H{y?V-rY}h$v2yHTZhA?Lo_(6V6kQUiQ6SHDU5OJ8$xtil!|Ei|7h^k&v_N6#ky! zj&j>YLFyft4X}lNlyEl1MskwHrjJ0M5aLJHS+C#qxfm(tDwJ|9OHdMipIYp-^DS+V zb;NXf5rMf6_;^_ClQ3V|*oQ-?-~=<&7Q-30qiSGRM}TQ`SsVx(9CrRxURhi%`W5Co zZ$6V@sFNeu5v3#Ccd&+??4{7D{M9M#-wS6x2tH}Hq5IGe=D3_o*BPfulHbin_FS}J zsD}--1U|`J^=2xz#*)7n7YdpCkam)G4GJ0cK!+^$Bkh26DKO6A~O z6rD3ao?z@rv6mxO&=%X0DUW@k_ufx#^X4sucH)MHxeEB@u2;POj&e)x-^s_W8!RLcJVZk44 z&E?IEs=EYx8#{c7PEQ+uY@)1j0FrJ1_&i|RzkP8sq3=?`T#2pavSp+mvE1Q!vwD@V z)41?49(gj~9J4#yfX=|y?A!dvXXP0Bo0gp3S4c9Dy%*;UqDBAOaW9L}#?h*A=WC}2 zwIM2Op$99Ao`Xs*b114$nolTvTt;FNEM%@8z87rSwid^T>{V>|Gi^K&vXTa5us75* zT0)|r4S%`Wvo?LD>qFQ}hefx$6NV#doG&}zz2BnUcV=G6Xnn(eyqvSUpV)rB=_gTN zxrLTfpc=t{e?<^e;>ptDCqL4}8ccBBqi<)}2o^v8GY93QPopbXrRco#t*}d$6`N5F z*NCfCp5Si8VtXkpjq*VG!>tQ7<8moB$u`^crr z9nn}vkZCddU3;mG?F}F40FfmFpWshq(P&N zw;`UNGs}7PMHbYUM3TTE<5N!+rcdG-fN0%fvP&ePpKaqUQUmN$R3r0;YQj6C8p& zpy5EX9Z-}RBbXrkFtkV*-X4F6J{hH~RK<&?_&TZ1sr0^TjiU3p)$0Uh!-;>KzT4O_ zxSAKGz^OrfyzS<_Q^CY5v}pphu6Q6S=bn{G%P_7$`MVRXiKM_ZrG$UO?x!Rvw$Quo zx0ckC8PeDsDG_M}?#TWseYj}Cb6v!f{1EL#s(|5My%_$}_c8%+BtCg*fG=^!erN2Y zX@iy!$isd`DUX}7i6mn%2qBd59B$&wJ`uUM=(J{OcdDVCFV}Yr4aNa4@amn@sg!qBRB<<2JM!uY0T* z+57^0EzG+g>Sfs^>Gu4q^lrjB@K0+(i`DC8a}t>1l%+7Z(xMxHPRNm46p~`Shj+d_ z%kLWWf2Uj24}aiD{wt@GQt*YmG+$8jwYorDLy+$?dy zA+$34*%ILIv?UNX^v^?oB ztFyo8o6BpgZu@JCd(XfP(>Qa@P%C=pAbCAmtmM*7Z&d+xhcjFzwpss!MuKQH9P)LU z*&=Z9M8YS7II}~9%n0X>FpV{Y3Hk1mu~ne|-aljOgxny_Q~EI8gxXScO)ELoy^W)5TwqxsvN-d$kF zA2@;9Io}2B6~wmj>pqfV_uF(>NR&>c{gdZwUhxq7Ivu?X1Zt|FV^W&XiupUR2r6U5 zyXRDD5t;B>UY|Vz+;ex7#xB^rnH4Mu8*r+1Hn&*GJY{aa`nEPIiHPG?&GOY&3g=t@ zFMt$_CO6l4%n9PG5x#M6Js*d;HY%tr3>wj7ys4R*4!-rXWOvilMG=B0Un0&Tv>#9O zq?GN&aA65eWq-@M*r2)B46x_~nMt2P*_Sk+dbFP0 zmdTt688OG0`AqdsX4w>vNfF|p@Y`J}{^Y?!+#{9ULK;QBee$U5h8fpfT23$& ze?ISK}3w@oomJR{$R^qdYrlnYUnvnXSbIH_mAWpQy4@ z6k;i_^(4HfH;Pj^wcisSl=QufFpZIg^xfaN@8T7ZE3Kcle>?E!4CxU*j0gohr>`U#rs( z{N*xL8a~n;a2J97>*LC6E=|6rmJY#WrNqwe+IYZD6CUR>y6RQGt)-(pNmTk{QXL?n zf}eiK2V1Mi#*6o$pxz+8qyz$sFEcj&Yo5fRYQcVUumZQ{jTj=9+nJ8_7P{J!RqU~d z?%@}+MY{>YxhB6`ih5C#9~=eM<#LPf^mArDY5#FiP$FJAhEd=&-@eY+JC+*mcK8pYmP|55%GCPn;*rO6;C5xVnhulZ-HyxE=$1e8=G?jh2W~hQE~%D% zblT`#xf!bUBj2S^byxt{aa~+X7++`Rx5%dS;itMa2N-65G$)Im6l=g0Rw;8Lh4C0H zXd2voL@QLIUU(=x6#+9Guo$(%il*!p=RbQi{v`wAAE}u`n%l}Mbh88VEIGdpq#cmp zG+*Box{lj^NHDFO_8x=(CaNgCT-#rFy}sM)U<%(j&|&vBg~hDyo^fv-E&o0w$M9K=moX^+QJUOlb;mBl!0=3I6HXbs+m0fa=)s^7(CT~CP4~!#{NR-}xQ}ivAGc6CV~h}Nd~-^z-88WltjdT|M+CoL zYik^v&mu%6%QLZagxLjsn$yHi{dbmskoC!ol?nLO$s6=bKO!W!wn*A%e{vmU+KM>s z7}=|{QcHfZrti)yA1iX)>q1fhj<{9cZ3GIh7`w~xp6`{-5x$63KY;0#S4-SP%b%GI zECkM(I_T82qcrJQLdqjf9wCBz4442EM zGIkm6GYgT(UpRG+0wIPJ6{^w%=o6N5^zi!ci2 zm$UiyaY1f4-sCS`0{7a$6{=&kq3?j}C76TXMxDGnPr^)j%dc%nF8#kh3M21$y&ZXg z_jk%^kHA9^azYo5scidk!6iYQPE+=JCcqJ zTDZ|@E4p-eOm2~pIEHk|-25>uTJe4i;vyF`0CQO>?$n}|{JyfP# z5<2>?s&M&VfjN)22Ip}-t00RbfTDZ765C?+kB@2_ZZbd}wBmFQEA(q}xI%CU4t%mO z<)ZYx<)n`qv~T;UXoY5QuBP7#EOj#X?94b~9adCKE5j1|)js}sQ8SGt(L=Sn741Xv z?yP$YXAMr7dLM)rqS`lN81qo-2?49x+q>ox=V5naO|=^SL<1(E5LBSc$64Qc_K`vN z^(6(8mh}nb_7yns)ts$tv+?AgYl}OBFbm9lA-NX!=Bp&B>T zlcJhG)zdoe1lwxovW`-TiOjgYs{Exd-?a9#dK(oAIdGn9H^akn0{_^oq_97k-Gi*Y zA`q456y539m`5RFNO-=5 z_m)o-ZuUPmB|dO3fN-W#SMWMPVw)6uQ_Yi_H!^~rz`Fn5dNi$ir@eflmX4)7R7wz0 z@X?Hyo~n0fk-1Xu+d@y6^aOXqzx z#QNx=g!|wwNKNu*;T`LN>ij@G_P;q$?oo1tfXD0+mP6l-j(R^aAnV=a=UF7moU<2NJK$?inzzH zrv&`xP*hXOl9FpJsw3Ah3p@%y*wj^ds{&P2&qWUgh81MH)RnomQ!9%qOCJ-{3!G_L z?kc@&k+wAvsHee9kiGIqEq@LKhP*>gB&zGnb*D-_57ohbQ{JpucxN%qa&BCfN=c?B zwmqt4t-a^3n?A^RPiXyO8O{*qZAEgGwC+A;?9}#mH!}SptwEU56u0I4kr|_Frv0Fi z+wmj3to?!C7q;77_dF%41tV1#JS&{0WtUGfxN_{5#P%hLLE%}P&-P*8?^trnK6vPx zi9-`>FNLjj@MJgbipBiQ=N4c1?rm3>T*97SLyy(Qj_pMU1$;>eRt6aLyb7%2x>}K~Ses7;U%_6?x?h}~%P;MFHmMB$L$52MvF=cp1 zTQ^k3l9_$}EOw}Cvnw#}lZfJ#nd0FsX;QCFz1r>^Iv(^q`^l&6y7K&^nwXvn&rRCK zTQo8dvD#E}ecJk}Xs?OKO#ONxS0)mQeJR)I4*TrP`}V)jM6X`m3QhXgjM)95E9r~_ zaN>Jud9$&kw9I+NdCdhxj{tWKkPBl|Gtrf@P3q2Z*3M|MGapot5{xK6UU{W65GP{p z?w{`$BX-h$L5wX=l4ncodCU7R-udr|6o}!Bq`D957q|~&Ft&UK@#sM=?a-D`(M6W$ z+l)8-tu2or-r_&a1zTnnG=J^->>`yAaIBxbQZC3v zRTW+?Shp3m0D{Y#yMaEWSZ?C^>B0Q_&vXfFZsrIBcWE3y z*w#c&csvJrKP6fB_Wu4>BF^o2k48EN-1rk1XnGC|O~fK+&xmVWhrkzO;#)o=R}q1R zT=AzC)m!j60obdG&$8@NX?Iur;MG?#qD+65aIZ}e-_`;aO2j8 zH7~&aYZzu@Q@?Rz^Zw9eIv3pND~-h?F*yRx__z7{!r$?iiOAm0vaL84%8sKXsHr)R2O+Qi_3$=YVEGiWxtqdn!6(m3nK z^;pJNS=McWTwO^4r}6>@?#R{D{qa5y@F+N`x;e()>OB^BoMfcDTYMyL2jS7khrtJ@jWI zEkrO%v$NqtSEbqx4=bs%{#0cs=;wO`<+asN&}jkN;7~F)3fp>F|0nN10S2eOnE3wJ zx>>6@;A9V}&}U>Ts=%Ws>40f_0rJ4m|47Bx+J~0BdySN$IH&IH0`?f1Q`d0i;8l0X zTWOTTm_Zn3{?K0H_YkDp{@vE3m6?hs%Chx9I@)Sb210&!0tLT!{bwX~Cd}(P@gM>s z_0zHC&p)jAkLUyxo0RS2Nv|)84>uDaeG$;yp>J(p^~pFYWWSC!FF`P#V-38>e@8Gm zI!{3;dW1-76ZCnt(Jdy$jhn5N6&r2X4Ef!570QLcd5d@@>Gy+=wK~?J*Z-;-2M!PP zX~6l-EMwnSXhC6Af<28T1q^*^;W9iEGs02W$UH=%#M-k?_OHzSi;s@2&vU-I4-u$E z=J?g7_O$u+*YgPO%N9^mFMa{a{tmqpX~nI(RckGaq6RmE~ohRWt{Sl=Q5BNIsw0bijL-yGL@EEtVCe9k~zO zo@~!t4aPZfcKnPs-vEI_SJl0YQCXn=pEu#p|3$xVb`nIY`V6#R9rCAft{x<${y!jC4c=VwNPVC3kil99UQggiT%crPP^9n zM%TrSK&YuLI>qzzzd~BX z?aqEk;B-dqb;PZKD#)1ioE&S8oSkZlo)r`7+ONQ-vvxr9xR%xi!1MKMxX?l5qy|ixlc=jq=q*)E?h@nP)z~gdW6XeX%2=32A&<>g@ z;Qy`D)xPC&6Vwd!u8>O^pN|_~P8d$GCJp61?fI;|cE`u*HFE;!~_ICX9ly>`9fc!!`+7WY1=eDYhcvWzyr% zZH`$c)^Q%``~O79Z|4VCPkw@-4Ts=YHx5ln3^B5V>QV%=UooK5JTDn-pTmU8qiXX# z?E+7UpJ%~D;?l9ps+%K3+@F&wWmd>gc-8zu+ZhcQIJ5s+_f3LV(S)DjR({4Oi>L4M z%n>)D(_ZU(oE>VmtCkkwBG4fa`tiX+cj8Akj{Vg(|Mt1?xyt#Zd(PA=8%GSH$QQ_; zpH^97QTY0B;VFFap;aj>Fq@JCOXL3jUPJ=Qw zqO9NgcGj(4Evs8R7CW22@t1YFD&WN1;FArh_jB*?}U>MzY#glFJ!@(q0R2WYLeWd+nKdaUqsvw$C zP`}!#c3;4FK=X^`j81ddgKI21P=WPzko}fLdg+#BzG5 zVMe>YNUy4&qpd^Ohmu8B<%!KdfK8TwmF@PocA&_An7daf9*LL_VZocKt}pVe$gyRn zyN2X%iz~SIky6(R3_y_OtUUSF9zm*!JcUd{plezS1FnN8>#S)DVwxR0CPj;$s?nZ^ zQIJCmG$48+oZuZ!HL)gPr7X48o~#zdCi9N~*QV7kdy#Rklib2icj*L9eF5^Ey16|r z!HbV10}B{7-?8&wTmHBjqOhuis=AK}2VxeDuK?uuO}!Ywr};C}i;pS%=`R5fn*mm4 zFm7G46*z!Aght9=qrGSH&6_y`y24jjOzbNNrmQUO>f3Lw9dM*RvTjqX*BiFPmpohD zrVgrwGya+achF<=3IuB*k!f;6Xxvz81V0}n$p5Urs{fv`J7M73LSb97srw)E^5gcP ztw9fnZs9(7sXlP@&+|cQHXLIwH?Tn_ivb9@KynvLN56VZJ)-vr=A7! zbFvpU;G-`31Q|$BF{SMHk!bYihEzJprJ~!n~aTpf^*w!X2p6|LkVO9`RKG+Q-&&h5tFNNzo(|qxP6O|< zIb?t&+#I}?H-U)_N`@szKojFE0{Ij*cccg90}N=o!Tli~WA%3BWLN^M*}%xZ&0)LK zd&(}&}{RYGBbY_n&3v>^{Wd)zB(&qxEz&`q<@ z#wFM~Q~>?$zNyB;us363_Ff_cLh{${AS;rj1_KwuwCo?xI-~Kd_tv}y#fYy_OAJ6% zTPmdUj!UQK{(C&4?2|DGWf-}Ctf8oevqEx|1Gz;C827FGnv`p4?}$H7Tvy@4N0Q`awX_aZ1DY& z&E%bkT>GfF4tje7gqX9@vP|DKHghLi2)*0?TfQ$#JfJF52Wy_VK1QC^>k$=T$AR~o z$#;~t55LpMtnbf0D7ODEieHDe0iv*zjl4{05(RMYKaas?FReL-rWp)PI%~+tWaS~& z9PP>A=>R6$X4n3Nl;Q9|LCIzHtTUG6hV-jO4GOpJMb;nXoNfTeA7a z;c%1`sh}0O@6YbWflh+mm*QEV2Pznsq=1cj7$&olx1U7zzL?{M^yl-(v=6uZbOTmG zE_CiK&yRo>k*70xZE?bXr5A}bl+^&j+fknaFg*BNWpob|l9UjfSdSs);6tCvLTKkF zfz~YQ?$%+_Y+=RyC8IzHD_TZ_{y(yA1e`*FdvQ(4J4~A*7gf&w%!~t{i;PV20f#CpZN!-yx`g*(I&`=sICTxw}=7*Pbo!f(exEUejS|?f?j$iiRM^F zSC!k#IlLZ4zdL4d6E1YLU+_+F$)Yc^#uxdYUr{W3w#Ib0I#FLF+_V|}7)%#w^Uc!* zBc$@a)6^Y3{*q!#2hl^iNojw5@jonPKh^nA9SyWREnoY`j7YcyD_Gune>IG#O4{kTF#NG515t4d^UCL-I=1PyRrcN`zYihq(X{s&H6?}O8T`=m-jQoN^_Dw3|clfI+5+0MQsy^!6yZ+m@*S;q%IOgbO z+`gB8y}HUH(%VxV++T7&MZ zCifPb=Y9(N14=XT@AT9!1&b_Q64Id~7G1sT8VJZta?p2KwA%ulSEX6#v|Hu` zIpgC{Kr{MvIebD*cgKL*x>H`ls}e<&NO6NTsiYoW);K1iY1S zEI)6S*qgL_yB*g)^R=gUf6)_2V?{RCp4i_L|LdA+I1^c9431gEljok2n2Gb;^?&VZ ze>0o22P1=OL+_MHDyY=trK;+G_EjlE%X$2}ry)orIDaqWU3pbvTomZ=y%$ zl*#mGjW+NXsnA0ZOvjUA_KuOC)*^)JF-P%HwbQJYkg+W(hjj>BJrXpt(ZFJ`oEzRv2TP>`fsc#Eyrh%4_``z^lwH;M=`ih+oKPqxK6 z$e%|!m^R+jw#$C6`Dyji$HPy4RQ*2|Zdlk?-EdT>KO!r!=y&1?cd!2orvqA+g_`g&lr307uV2ABi}{W} zzyhRI)C;zQoXra))QP58i z3Sg@5AQorh*I)|%9%>2|_wqk^9f-_`m(`3?-%HQL0p#Ute99$ua*vRM4o&wzcU}KoFt7d^+Sk4PHEOcF2-gC&%2h-lRwNQfS+PNIZvtc3K(?x7m~fnUx!2-F0u_jA`0t? z@cxWf@)!OXv!4_d&Lsxlg~B-Eqj23#gXmtAdpH@qguWZ}K6Xz}_P}9_B8=^AbXBjYuPO<8QeC3oAsU~59ZtL&9o%v01#CG{!{}vU(p~tL$&twLZFRj)~^)kVMQhH1x!FXyw@b4Zu`;NB4;z5 zKjQ>=#2TeqNy0h_R`kWDpBBZw7bQbpazaAC$TtUi^m#qOIGMU;2hJF{*QpEty*&P* zcbYKJ80}Ej>vlwM^Y+x`<2_aBNut#Sk+9h(K(~I0%0-3kkccm$Dur;Pp_M{dky9_H z(j(->5!3>B$Pz^DVWt-swgeVp9xw+hGy50|Q1TuU=%;+gs0zJ7lof##j;Y9#iwx-l zN^q?f*lc5qGR(WvH{$2D&MO`rsK{!yCuqraL5yl_pQPfy%4~^DIhRm(O^eIWo6j4( zm5G+-b~dZ(^pV&}RiZ<@J^NgV2e(ND6YfgU1WVtO->~n`3+E|QnF{^x;V9R@pB}83 z-aFgglL$?`RQE=4fBOM&g|69>K4Sk9Ja_c5Jhe$R<9>w^^JFqMA&eX?=lf{yIdjb4 zmjyu)p z<1wTn;q&KD4dT66dd3AdCM0bSQ%H$l@1$O+{f%rx`;nZNYGK(n)EZnN_E1{$)1|Qz zI0mvTPDc>(g5a~sLt*yEi0}`j&~I4ff^AA?V>fyqqR{vTz`CL;P#q0f7O;GG z;Q!5j5ZE1LElIAkx5p!H4a0><0MTTIX@&AVRznzBNHRDFST6^`{ zV@!q= zoP;L=k4Qvx4dcVM4e9Z?fBhgIbPow$MMj>^h8}g_y$cLp-DnGVkBVg+>h;183=rh_ zJmvJ_;;h+tT67PR%9TWK^r$G7!=nX;X8(urnGrL(rc0Pzt*&!xv$_9|UJDV7^{H>D zf}a-@y3sd8pZ8{*R{f{-^r?-*`n|#5>$+d#eEPe9{IHa+ zrdN~L%MQuYg`?!J4?g{RHpgd5fl_XL9Ol~5bfq8}VCi$&Zw;;6$NjU(!Ro#Cf|Tt) zIl}T#3!Y8~=;DYv^!|IXz!AjWWZChQ;72Horr6jw{Y@3e|*@u@#^9FAVVK z|CO{Pdnba43lMCCMe&4z3Hvzfg>T61a027N?Rfucj}XrFXTG4n1Y3_$ZAAq{O*ugu zA#(69(f)a0-*d5-Cjs>*7IE?U9~NJD5?7zl%xe8Cxyi={8i#LD0TrVI%r30kLeXIz z8tw;t43}SFX6+AfN^NHU&Dp2x&iX>J>GgWAnmwwMjp&RrL5h=$a@+i)E1l=cxL8`L zO}-OYskZfDX!oZ%pSvPcPw?#VLAPhx+djf*|AZ+W%ZnAH98nKLc+jO85Z~ z44&JP-|$LTf35RDY=^in>E56u~-STDp z_)*;=M^9Uw_$Yu#?!ht;Qstw8^dmj5uIqYJ20vGJ5c3Uv@!5#^3>bM)qnnfTN!jmqHU&20>PXVI-xMOSJ#>q^ zg^#woneg1iL{JJXQ*(Y>3*S@nb_jkLm~iKXCw}jdlG zwv-pA?X@fy*JZ-N00!E9@?XCdp}4yn$ci$w@Q#M^bP$ZXz$hxk?R9H*$0~2uUqJ z>|qJH-*rP&IF=JcF@;0)c+UIY<^(e^a%;ZYH*Togc{zD0%FwVbQa=#CR<~1%EZm0T z3!=LG7|x1n4|3-`)o_{SYJ9cfvX4ujH%=qclI(6z+QB!_1jUGF>>9T*lqI_QmzS3Z z-;2R#PU4eGdZ%resLsSS851x+u&Bvoz5hi*Px8UZ)|K#jd+wKOhHz%= zqx}*pIn@XY`zazCC4O+cOxPgLwICr+6cUUyXLJ_^SwFJS2yBY5;dtPO&law31e=nTE8n^0SYEIL@7@k`rRW&7&Ix!i>y-Wf+QZwCmS@ZIPWY< z>d+%bG0p5*>&A6TD#8HU5?id%+SLr-i*H1QJ6RbUeQQ$8#tdrDPHdFV%dI-06dHt$9-DbAIMzn`tT+9a55CWSU6N&ne+zLK_zI%JCpSMdCk zP8WZeaGH#xJj`Nr9K9mVpvLM*L6OcRMV9SgP5HN^m#5s{KBkSFOftOrIb|Ec8+-t6 zZXo$#I~?O&r5H3s6SfZ?ALi^FI zD5}Dmm;bf5+5)jCx9q|$FO_(O4&kh$X>5umfEnwuY1rPi(>Py}LeZ%&2KF%cM=S8Q*K}^TEiwL|-n`PNNpXBX`aq$v^3N z1Bd8xY8ttuzLHvR?iZ)L%zKn;YahG)x{X;YVn9@}E6{}5a-{J3=k&=FhjYvzd|?O} z%vy`j#%Ecoz6))7xmc@o(iNVR%}*wEo<*SuuFA%9{y-+&p96e+<`#R%i9KiDdeWFj zR+`+yCa<^HBL4Ck0&jrh>_oAC*PF_|4NE7awU?Kylajx`-NItr0#6-n3uZB!56qs< zUjZX5yI!3$arQu`S6cvX>RIYbBXhBsiw6F-0%Ni|xiJt= zxxBL%&b<;ZE*jUhJckMFyWHeW7|`S)C6N0A6BTvNX2vf7HnDV1A-da#n8EmL9@)?O zjZ(fnsKpPsKG8TFO`VWo4lzA0vGwYA3e|ItfrXyW?hJT)(XU*|;?$6p~YDy_v)(F(^rTZ)%7`(Uix`ynLTX0~kp!-tes^cXSTw z7eTklw5+uKVi$OWh>z}M9N*vn;ZgF?Esy_cb3L6fc1MGQ{T>O|!e{ngG<^;k+ZS;H zuuL$N_knm1%#`als3dh+gUIgqVc{ug=aP@~F1htYnW9-;$FMBdQd;CXRB-0HwA2=| z5wZ3a_s<+(JbCjt&^pgwd;valzek-?%j1pJuV(3Jur#KVAz+X9Oc)Hhyi8sMje*#6 z4;v#Fn(NO}xz+xdXFNc8;OvWAUM9@28;ZS%JuH|P_dK|#F`wL)HR5sDGlFH~4^ zas4+wA!{7+6$!T20R6#LhK)S2a;+5%3))FQKPK!+;0A012&DA6ZQK$+12`;9(fMaY z0L-GFv0t!j_~FI!&6o?!Owx_Lcp``zD1m#Gy^EoDGWGy;_8&ry<&48z3H*_!ZvmIQ zCaiUM2~361dDbGxgoa1(DogE6bi`D;e`Kni<5IL}2G4=1`yT9`wcvjOxJdz2)KA>R zy)cxj9N*b12j{E7hD|X=i9F1&$Ue(U;KfgV+b9~_JWIf|_Bed=m*X3FP8qbjAU4tP zLpb_Pv>35k=H+*zhFAEpW}qa4EK8Tcl=rBE`VIYN)47-$<}n3Hvql{GhQ+v9GCsP= z2(oiRmt=QjtH_`d+ZiKh-2Jk4UH8FIvGW(jld{+UZGVZhFN-lDUA=9eadX{h%lC@B zW*oSPVaiXR_N{tH1XDaMXb;v`mI*kXlS^*BI+r{gfwt;Kxz8bo*In6C4z1l*0sAR- zt6U}VAqHG!z;8Z0fx_#7mae9&f*1Sth93?ERf`sHqj{UG72i4)K8ApaD_=)HsQ`SN?;BsbO+!bvaW)l&?ugANY!-wQ-e z0p69G{aQq%kGv9`g`TGI2|c-OLoup-)ScsRPzy8yfXrUe;6H|Qa+aHuQ(@1l?cJ9^Z*KIlED_AS zehSj7I0E>~W{JQN9x6%q4SnUB86EqR=>*!AWXscd_W}0Z;|!lySU4#RpMUznutKj> z&JK^Aect9=zJjkHilbKVu?H*dhHm9r+>i^jq)OA8W5CSHR{CEgiEel_#@*zn!3nSf ziGf<^28q$f07%XkFaRie(s`|Xz_VIuR0az~zuY(}==!)dem;b1V6ccugzj9KsUPSf zffA~dVlo*CwbIcXZ~x|-govVZ(m_?CedTyxNL^F|VbMS0SemuwliI zApZ5QYixD4J-GT*oKh79v)*WKp(iO&5R`0GidI#lS?8lr=2P-45T1sP&BVrQrOk6V zy){T;dH&l1RjcPXdg9&xr#!n9&@poE{LM)P^a=qgyz284p%lXAHSyy7LLQ1ePoNQ| z#Km&wlov}!I|ei?IeHpXtXui2L@eKURk1yxDk=cF)%C-k@WOqMA!Ie|{$9_L~I6<0;;pB=Gzm zJk!$qa@Si6>2R5jZbM5N*}zt`-o8Pmv%dM~f z)}q`kPEibVP3oAY_QEtr=z6)^{v5DeisnQ(%o8eo(*?V8Gos4vG2Q zlUT41qUe(|N=U26G_ByH2fS9>N)zX@nA;Jl1bx4IEa=T0inHLQqZH|j25Tzdb8MMu z*j&Bd5sm5a;|l!&zoRs?YDMtC*+CL0njE%Z(9%oC6VGNsz4+i`X5#CL)y_pU<7xDq}BE5A^cC!@5J3naeFN`ZJ6$8 zJTY6Un;#0)it5jUXn+y%8k70?`l)aZe_5vv?zq%X9rbN$LThEgf8OEM_%SI@f!3s_ zvUZ4;)4vKDg}A~fhLH1U^5Q3p%HIJU5>?{3^E`(0N5HCc06eTSu}@x|FkYHz(M=d%df&#U`I?v5c=I?U1b7zr)NKT(SjL zkWSv7QdQLlx1BD`4<`|5dg9D0Ek~)zcK!>-e^XO2g^*udK5BHVtdmbe%PMV-oF!b; zW2lB#h+#z0I_4w9lNdNm2Ud!59~OQ_uv5BdV;)pvy7aS=t-@Q>o=b~AZCb^p|*cr+)Q(%IW$GLLT&>JY%v z=OvqXfeNVEWnUzO7vZzTmd5-ZZYpICUx)+>k=S-a2&ygalT5vTJ$PFdL7EUG>S7e} zQe_@^R2@4zh3rYsfYd}PfI#z5FwD=tFYRqx#9gN$0Y*H700pZSn zwzD*0Fb3+pb1`*7Fq{Ziy!R`mzm|}OYCbfOez(Rbr*TGZ8f?cnIppJ6-Dg zb{kOa^GrewA3bWih?ibeTY0J&{U-M0Yz~lNgMtv2cj4hO+=R5AH)v?DcIlSEF&Lq za5=MVSn}W!y$twAA+q;RM0u2V_Enx|g6Ew`F1`u4e_8Ps_%4E88FegvtqQ zU=eX#Y^q=8dPCY(9v$7O8#`zIUY_fn_`06DNlsFJ_KU;#;Ohv5@|R0wWmWeHoR+uO zL&p0TR}*2!CB;;*-lA*Re#4u$;aOO$$FY=IX;v);N`dJL1>`=mcGO+G`1>-UyqObZ z;?E$7;JU+zR<#UL2idAUtZV$z%L4l^zuh265bg_ImAFg|l!#jco&7`Z`}EB;Zf-aI zt8QCh@%1>gG85ae`>#XmI-T#5*^dpUVD*VoWV{F7m3FFzv&JJ^PszIa0*Tp_cFg|V zujShB!M}#me%Xz)c=`gMi-5|ZtQ%2Qx2b>0y6o#XX11@_KE~Z2Vnw;1@9q?yydJ9^>^Tj~uyUHAOb=bH3X(i|sbVDx7jVEXgnMBwY zBH($h?_kTLC1T)pqK~=|m;bE>Cxmm&NoT#{czLOI3dh&A@C^$?X5_4L_%+M>u9VKx zL*$GjNDAxm0_2SPjL!c;b<+^d+2gtBl|L5O_k#~cL&tKGet?VMf_qXfeNZQz6FqnA&b@jnnyft%vqGL-&p;9~D><1FIC z3;DBhTAd}zVMJ?#!_ZXUj}oJvkIP5frKd%Y`v|NaF3r8y66 zFlP==TEIRG-*PMgGb9b40&f50s?>)m54e7(w4xcEnrFRf(Edp&CL=UZm?p7qt2M1{e3*eH*Bj<2xwK*=G5`nUUe= z?ly4NHXe=%Nj;cMo@O9?Cb;!tp$|H0ZnXpHCD$ptaA)$A==OP7d{WLB!hSw3;JAM?W>A0-^YI$m5oxaQ<`~( z;(pZyd6BeaSpIkL9m10&;&u1Qyf-=J>ZCE-dd?01Jwz{l!+8JfK`(8u z^o_7`-K;&bnb5;=@0@`L1YW%9Jekn~uJNDzNIz2an+a8Wh9{8oBp^X=TtVT3%)fV8 z-35hP6=?`;GXJ=wzJg*r~CjX+(M~nHrFj3&BY=i4oe0DwsC>1OWG9;1X^8DFD z(xuHfP8Wk-hId%Uqzf3mNncjMwYhB_Z6=C6^!A5e5CD5Q0d)kN<>L-P$jR)~yZ^uo z4B_d(W>N`$6<~Rfc(kw(5xL{XMJ>6&vb49+lcBwh_%}A%xs#2SXeRnnh0=Mm7X=eO%bG+(s)+>oH%>lkXq7Z~p>oX-ugae648 zF7gsu{bhFU+aR+ztm8t?pFP_bpZNRD?UCwr?+3LFHgclRJw+8M5k3{t3ya4M@%s+O z_CJxS%zk$Rzf$iYkN>^8DgTGk7}1<|J&_Zn zt44XlHU?zQM&zT^!klN95=tl>#)%jU*&kG{fC~bE9JxFgU?B5piMmDXMcoMKGyacR zRgbLf>n*b*G=viLNARfjTFFfY7WS$Ku(pRYTNhLu*Pqr7@;j})E)&f) zdb4BX_mXqosZsL>X6aU?+qL{v!c+rWDP&_K+A#fU@0k!A=TyO>Ybe`2KFL&QQB4Kg zl_@hhJuC1codU8HtiCDh`IQI~dbqYN_;|OOw$7XYWL+*TRPUcub}yUsr;+lbHo04z zPJQF+jiwl_vtz$9iH$LoD4D@&)3O?KO3ADRH8>c{*W>zl+-y8wtXD=xC_4$M3BU0Dm>ul%zN(3l?rBT}@hTT^zJ>Q4!q(nmwp`riu*Yw4w zjtJkXsY#+8MszI?w7hE{wnS?s4a4#k7ow@PE)H*(u57(KWtnvx3RIUW!uL4Fg+$Jv zcQK5TOzfeGIRKAmf+jzx2fqHt3Q92do^Pp^gHUz8XzYvL{6_}!c?JB^r%1slWI_Y9 zI$58ZI)9z63b<*bIX+IQDqYH~FRL4zL=G~ZAds{A4<-vh z0m*~Zg%xPgSyh@{nuj?au>}kE)?#!a5|bOiEx19A<3g%%4=5fb;rF;PU%EBt4xq|ZTG#+k`>9f>P- zK?PyK7&iIipCg#TCb~iDob&%iWx7Ov?aL&bShl;Y~bt% zC_gj>`59!xf#ByNrn0;rPnD)@cmUc=Tsw>CxzF_D02Eq*?|dCgw-zJuTI8Yr@ALT6 zUDu+H)aDhVtC&M~(B!#(ngpf>$Ly}3_uCu1Y`wM=&XA(*DnxA#|D+M03YthDL zw6#Wb4O~}$?1;*jp^+U*Y9Bk=gwA!>S>ru*r=1A@>esWX$MA^j(5_iOZO_;?>pzLR z`+;DfwF7C_&!Lf>)76e-Xni;2Zl?G5ViFDU{xmJHa?E zf_nF>IjsJrjON8Lp)5K#f4;>%iZO!y_4^-uK4yZXr3Kkn&0WjoG@HVm&MqP5qzji# z@qC#tlq9osPT&-IGNtGcju&a=5{?&6j@{+8E6S!gXVe3c#?+mJk00Ek@GM+j zNegQ}&aVgxb;{O&Xg~_6cwIRI{r-lI6jfiP<%Xk&om~?}eo|@Tox-@r&dx`5CQQ89 zJy?n#o+)2IIt#cpEDo{Y^HvVnYmEIK;)ye{WHH7Nf$dA9w0gl;#F${MM^ zt5x*6GGw}>S5pm#+T#nM4)eF9KJZ(omLJ&ym_@Qze^Twb+CoFWgIBpLGCkv6wwgUTCAkoScnmb>tKD{wd(3;)U#61Bi0CF8rehvCx-0{Zb_m zDVc=dsUT@LSgQ4JN(ej~NB?Ki1HWRO@b4$+4NQg;WaqPcS@sr6|4W2j;P=EalQMyt zOdLPrBZrtT@o>dY@p6 zw!-~I%si&{5D-$9m3#xaDP|RZK0;jAb&hGi^ZCgqBRFYbOLu||<9H3g0vBDj8IWuh z_v1d63$M94a_r(%s~NCKhbfefZpwd{L_2d>&M7e@VLxh=b(m=ivUBa?&h3py?|%TKA=<@f-uXwyEQLT!XH&zhX`maEhI%YbZa%ndj1ePVR2T*I$U40N1q% z>lrp07@zDt6S7AeNoNKTCn-5IeoGw=5}WgG%kb>3($uAq%G*@@dmTg*>e5)%>wwqDc<}7+P`rnYr z#vVl<1E143ph`&wV{~XGyv|!u%lhMIc&x_db(=(dEv>JL9ARQVY+r{q%LW;H~Owdu=@5r>1nM7lq+;Mv!povyD6NQp>^= z#g*`j7lenbKpq_%*2NH!R#GuN^e!)LXQal=28u^calOB2J)-D*mpGD}Wy2Qi_n-d2 zt|`fhu-vR4bEQA{v}m_G>UkCR4PE%FPs)eEFYC_-`UsPOQkK3F=t?L~6wVdFUo9AJ zZnFnh!j_zmE91r4olvz_DsE_qof9rb`UKQ+O0)4z$+=@v{>UR(X=OjP%7eSMXq z8aV*iRIOwTYVmRrPb%Q=2^hFt}dlxSJxo37NORf1L-+Jl02pFh4Ojx>LNJcD}em3am!!M5RJ?c0K>^h7A zlgH5Jw3RGFVE8`ox>>M1`6pq{rm@1|AxG~Rt5L80A(h|T!!zV?LLG1iA@HvXqd6oK z$Nr{9`1?Q-r#(*UK6C}|oP~?WcvE3Tdhl`53(YJg3OcZPlA*{N5fIf5bPOc+{mma9 z*^bdjQ1&ASYR$6Q`XCySb}KPhCrNE=Jm)nl3BmNDX)A~&kzd`Y#i19WDF3>Wg?FaS zxY-4X)bJ8pMLJ)-r75X1@u!cOPNae~tDpNY1q+?m%?=;hN7R{dfihV7B#ou|9#w2_ z-UYXDZ=?+f>?**!gp|-j#q#DqUlCe;E(0TIRKF7#% zH)+vU$UHjXZknk#r7aR+{g|B58!XM@DiBzeq#Z<$@LIc(7bHF^MdzBq%Z@k;)3-%F zxFcxVy1Ec=&bu2uC=$J@d5n+H1?hgbJ#{_Vw-| z5dAJUdQq{I8gI;5pQhyJr+FZ*POV^)*pqUwaxrnq{5pPj8{e`8&Y<)9gX|`{UM73@ zrqKxZD7CrI)?q(CaP20Jn~NCw!txqW(0-*%tMyc+pvSbO8Y@S3UJUTu|Fst;f`qs3 zdBt^Fs@h29l((VfGa|n_h?#d-Rn75+67S)fP4P9Gd3J3amA32rC-+(IxgyTTG7^}z z25uc*|4C0AJl$hV5vcyWaM7{xi1Bm6*Qn7t2KZ8Wxntww_q`4*01L&2%Frgtx!I0j zR)pNI&W-qUhO80@2p4zIb$j}D=PKIObzi}>@ma9FxJ&C5ToOJwx9naq!o$^@BOB?cOto1Of|EkYm-lnRC zRH0Rz?S1U1djmzxlp==$KN9&*J|m*x9rM3?_P>67mHn4o{=#O8hzFeGr0`%yM|;6c zX~h}RIZG4KlJ9<-MNMwyzY+HztlVwZF1Zn!G#NXCJ8sbLd?#r*Ac1@wpXH0rJPqFc zhE>aZq{D>2d=IN;9cQpAC7%ydHi*BT9Fagrvu%9vo(gwLJhCI@^s63P?_Y_Dq+HV@ zojEUy=d7te7nEl1D+WvM=KZ+g;8B$HPs_Jj?3}pfUBh>Whm_qro2)TE1tHjMj>Ys{ z4!!G=0IxABB+ufajpUkRlt1hAYEd)l{)hafMEA){BK%Mira!(reQ$=3GYD~ahurN( zw&jZ8%>!_ix;k1n6{LMn zZ4@!Mpcy`CC*Tt}zjRmY5>XxNHal40uzx)&fnLYM1VYrHP-?jhO{jRB*qydSn)u z8&t1u zEwM%&mwyYpzt@TnR=mBeb4LTXkQ)TD^N%Q7em- z2pRiMftR>9D!gj#$2)dVkUE}o;Px=X_^;D$%RceRm+?XVv>O`mC?YEDU(@+7lx%=7KO;*f;W-n}E|ta#N!y|EK=|GPA?GAC%|mAw97N>|_o zUbMA8i3}CjK~M@nTrrS17v&UYV?a#oP8l2mw1bWtsK-cie z9y;l`qr<5NbBGJ)Y!4qGWIFIv+jgF|h9jHa2gD(OGs5z-043kWstrVy1$;8~N|N?pK|uF=#NFu@0=-)0hO$Pca51LUNJCH*n&AmRczt>YP1A%~BVTrHzOh%TG=-Gnl|{ zOA(ICrQEM&%xp!vz9UtSjs7E26Z~gBr^OstqSnFur=@)(9=Pc)Z+oF|typ}7xoU=r zQd55QY^%LyDRPhCB*(qQSEN9zhe)1z4ACa&;g<1ONU`6ur;^`5kp;`^C6Sm7Lxne- zJsDc`)Ft}!Vr;)bG}EBX&x5xSx1sYu@V9)Ga(R`D-L@mQae=&b6%IQ)C7so~wijhf z-s;H^gPxAy>%73=ns1BtoRGOS^;kTi(QdOId4E?BQ2*p>yiSAORTPCM!%}TwM1K^8 zgWogsDC*1xM4cr%r1dNuu6|kEFezt=?g>BCR^sI$E!S-GKVxrP{asJvi%1-y3z_fZ zYiXbh`?26Z*9oT9=o+>v`L!K$4Xc?3@{e)-tH*tQtyI!iQ3(2&j%!UqPTrJ)lwHhQ z@p-=I0=<=MIZHb+EBCe)hRKPG!-*p%C z0M4qrm~q#WnFXAMnsG-YE#x}fo&T<7tET@5IH`P;daI8=kjyKTmBnj*2-0 zE`Qnd;4Hc)E^Pk-10qqK-1Vl87`|%69AV5`cSesQu-0%1ET+t37xak&4Qj$Wq9)3} znxZdIW(1pr>Dwq<%=$YnP`6|lVrnZ_X>q}e`UE8Dh=1T>H#LQO+NNUY&208o8_2`N zTOdc4?Mcx0s%@ByfjvSS<@ckPwe^D+kQgEkMl~ztilSQXoiRZU_Omv2 z`}2}#>6&YAUUPYQQ?~n^==q4Xo5o+2_gy9(vHKZE_-vbRd{xtT$V+!X(10rA@6Hub z`IW{`%MX@3a>{3WcUQknJ}pgCpq`>Nro;)3#U^VbzF2zYJ#~Lipgs5S;;M}fNj|YA z$Wwi}DpI1-wxB?XoWU>>R{a7L!bP)x2~UuG(c-lf?G1(m1%=#JY7OQ$Lb#Bw4aorF)XG0X{ft)!B37(@)7d5ZteFFHzL$A_tZ%xsO391iH^=~q+&LARCLK2hGH?}jF`yDay} z@ORTTs?Xi>xTQy-IXXAKx5bY)r4|hnRn~f#TuMYQ1X<;i$mI*QENAgum*d{3wa;GG zOaZGwia+V-zfy3{`pct*o;f?qXj=e>vD>4y5Gh&zAlDV=*W3Jg{sx@isu`^K2ZKj9# za&lOLSh!*&UC|j$l{twaAi3Umn;d%DTn4$7-S$3f0sLYHS30= za1)=FFuGrkTUV&`_oYXf*>HjFSWFSMAIM&?OzO*TIAs0Piyt7Dm&+Lhrb7PVoQ)o! z8g%gap(k8h3+OupTR(|0-?r^mTCm$@j7j>Wux)VJc#2}6)=T^jLhqaD{QDM0<_Z!2 zkNaAmv4>p%eJ1lTI#zFK_0u8M~jotvl2UdV)Ji<-G=4r zs%aLVDrx8MLGC{*p8?F>eQ4BO{$}9vJuc?{djUTxf4QFbru_})C}-x8+#T^B+);R)1a3@R>Y^y^24j2h-drpi*NPzP>^mkyMP;qyc+dYMXH(0~g9H5#-o~ z7Ho_d7JZfO<3;wD`O7T_A1-z|R%W1_7uxjAb?XDQy;@@ zrsW$_5%X=q(J0ap+Vdv~-AMXww6)P9%?`t;AG~TSQ$V2R{K(m)tHuI)$sM4 z(qkSHmy4v>*L8*C(t5GxfN%f^celiftpvGv5tl~23|5wa?9CiL^w!l$i)S-Lb2Nokjxvc_1shC7hE z&k3D8fwM3>OrC(?o3qqq2=3TfdV+f|y|J=o2k^Vm*?}?Q!+o^)oeinje9as4%ulRD zC0D7yP-3uIEWosvexG;yWHKA}hbCexPG;v~SfC?!X_!_<0DBq;rBU=_%R)nxqV;9- zDc%)qTm*mbkN||652z`PU}?TDQ?vfK-6P^W!Dn~uw9@z%#_ebp;gvI$f9=3QW_C=b z5~u7zQ&DT*rO4(FzHEUdvLA=`?DP>K>}tBgx7?`0WkN((UgO&}v2{~Gs;2$-vG9I( zetPC>VZ#K)Cl1V^1kNIt0lddXi=RWQPeFIw4yP{-Y`RMxKJx5fOMez#3K1_ejK1Qb z!PGD#s3@GrG8^y13JDw2Kha$F zUFtWvbqq6M&t|K-3e_kaz5HuxEQSrQNGf3=X_Ec?tizG~fZApy?$ZXtqZAdhuiDSz z5wm(g-Nu8I{!zxSL0!QmOu0qwBwhlPc)C)zQ0XTOWf{F1y6Xn?%=dq+`>^0l&1_E$ z@KHJw3AoBLzp2L;Y4sk=et!!SrNxKhvL<$O@N3hoR&NjmQt8BDOC0t}2#z9uwIE`5 zw!exLivIATfl>MtvnQ0MVV@|cz`(PTzXo~u82q24QYCA&qlaiehE(~NI0M_m4&G^8 zpCm{zN!w5HUTjC6RGo`*t@51l+7Z!>`TJpBVNNU0URA@EkEpb^EE?=_h&4^|M-}DT zxk5;Aqg+stw0Ez%0hfii%TeC)-4Ii;4TXOiBzF+WI+rxWr63!uK1aX27_`Z%h-b@D zOM})qkm~&pg@pVUP6wpRRGC)p=}N=|jjK5mU9<1bkME{I`;+PY`P>_8X4rRTX2;$p z%dPq0)0V4kdCx`WE|e0~y2B$Wf;dTYfpb$FftU>%K`=ssrd;7;g!7Wy9uydgGxn## zHQ*Re^zrT$p!zdAQ8vBEVmBkeC9sGc6?h50u{{Nq^9vGRi|zh?KO6llD+zcd>(ULH zt@*gVzVv;%SO_6!6*zBdR$)+Ed2kg-=IhB#SQC@%Omyyk2k3~LL8kC4Q5`PLwG*SA zGaT{;&)n{LF8slFox&pYW0+G0V7g7XKJ{k{Agtwmkcf5Q$EhCDA$9AEvi$`4zpS82 zrTipLr2+TW0`j*M@4wlvt5}17{d02AtLwU|;#rTh8bvnr(C51rE*m+k*wY`khCTOAxtoare+M<;YM z(g_i}>!e5GT($LdXM(ddD|gI2@%!+-Hz)wAfU41(dZ)Z8NPDjZz|ZQxj;j1(^9Lb@&>FcPPhvCq#eH~Lffgg;{D*^ zj_Iaw^riJH^vt_xI!_}nykeKZpW*V{!%K?qExH}J`(HbRNd=Nxm!g~qtwm<+KBFQ0 z_cKPYpi9#xYT5TKoQICjvG8!YOuI=R3sap~c15Z7Bb`ryjyaDv=bju?6eLk4HMuO- zCI<1O#-yez-}L*EZZQKB1goOcitQOMXdrbBoR(@w;&VNJ9kP~`CPT6 zO|7+YCWq91(4gmV=&SXqR*cRvenRExa6!%C8NF+V@+A&8IATmKUW><&o;KmT76RRj ze^-G7{ig9|2DWy(PWLii{f|^uc>)*u@HWQfVuef@q8X-js$S=CFLPcs# zW*w8PH#74VKO7_5_VPn-Q`R4sTpj^;36s+iQ2Nx&+WP7_$Nrzzesc6B>?;Kp^eB*6 z=%k8v)qXHZx)bxXx90<3^Tg%p&)UtY`ZMvEjF(8-cm4UNm^r-TjisK=$<%&S(;QAc z-t_`<`DG;Qpj@;LTvWDu0udy=f7dXO_!YiChV7Q`Hv@FDW)I|RdQ&$TL9-H%sFtcq z^5GHdz1y*AQHh^d6!XnEsEY&MUNNEa9Oqj|-ZEO@xSK9I8+7t&M zEH(Oh%|sbckynZn)MV= zrSoFgd!9)vzoPZ}&2p*Z!mSV5yqp{^_rdHL@})yoIVaY6yTF3Y%@LJYv&L5=9Td1K zvLf)4A%Wmfi<3md%=kUvT!PP(R(~yibgh57DS-)=57evnY$!l ziA7##>)q;xIr@j3`wQeqs5$Z|_=|R~#a9yEckAVFTATdAiwY$c`PA^TwFj%f>HDxl z4n2w?b&Yzi*A3@ZN6V`_lF`BxA4gYq0gDs@Vd1;OOIK$9IN9*rBG*SEJB}QQ$F56v z!tgicv(KIJay8E}C`sF_T8g_O`mpx@qv<^Ssr=*qUn(T4VU%%_uY`2U%sgdQLXsJd zLN=A`agkMaAw?V`E4%DcG7lNYb~xv7&T-Cl-RHi4kKccAuJd_3-t+Z(zI80g zM_c~3mR16P{9Ypt0bD0Dc5c>4c*^jrPf)<-;*qhq`}49uEq?o*S+8i~dZ6c*5QR*> zr!B}!zzoN<-`9_yDD8>HEScATMx5S}QlzW2kP~D3Q=*7~T}`X=N_&&Vpaw7c-fm)m zdVK57_c2edxmb})x;s_YR4ZXt2g>f=5~{!kJ@r_)@7m9||6#n=0{?9#kNA4C><3vl z(?_MTu(&!eSi5cX{hpYM~e-- z`LZ40Ors1oVuuTMe4ML(k0lN@afgVdd>ziyEzC<)o@SntffT3g?WDWx7mU_Y-Rp!( zHENbHU;hC+fPlb!LaVEDCA%K0Hp2h1OlAL%uR>##*8toAceVitamOI#P_hk z{EkgXo~p7E%(WjqS2NzVzVeX5o&C^%f4Q_8@S>UB*me>SjH~9QB>tCQgR$$>A`7EXO zAAy|~`O?xcv&P}2LrB_<_#hsrg)}&mg-ukV^81?_7`6PSiavT%-q@%-nwQ4?I0u#V zF%dzjC&+z;T7M2It1sg@GFKC|B1gpM0}=7UgxAWeYj#2h3U$Ele2YVgoCx?&*l|`s)oG}Wc+ljz*)qjLS?~{&!F)h;ArkX) zVf=4^0Jj}r{J^ldywzq~XUkdV|FZzP7x^ujtn%2m4}YCE#1Bbyan1!_6@}+G1e1+C zZ~KuW{OF?a>j)rzj7I2Q0NM$&bhnszA-zh@tDN$doZ><)I(V z8iKni__k*UZ_XwE=* z_6aXm*Tc-}^-z$Ku5j6B-Wm6T45L;|mC6K}PU{8#bcD|(m&Wh)19cg%g>oMq&i?*F zF}&aVyIx@X4nqy3ntk)0S7lL#>MkqAuTT1H!--vU&a3pzbYM!;RC|mQARK33-kT5H zxv%G{diC79YJSgL^!v1rFV#|hOv^RdY`3*%qTGnda_9-*ziCtv3l0Ue0^PTHX=X-! zB;i08s}beo3rizEV|cw96s7#S?i#5&_R_FVqQ(#&ByrCdmz#_WAIb)IXTAK&PRcbL zemsQn9M-rsL7m-1<3NO!8w+p|V7id$F=9b2)d$K{i>l^_6pza+6xw>e}(h;Htx z`Cv7HAW-3aSR3Wl`d1YcNBrk`-f4!Xi94LR)mhLXE;pjP(^b49P{)94uf<3`KQnPvWp&dJ4!DK*`GU${1w07g&CpsqFQ}|yAz&Zz-GPP+ zwZXQ!D*yXy;h35Cy)a)7I`Ey6;3d+$Cary?;_x!9jzYpRJFTQoZvuw9<&9iPPy1}9 zkWRwWPI<5rwC}l)(Kjl8$KI3?;fYNhiUio!{p!PgW%C5a2C2lLp4W$`olIUzl;3Gx zUOO$wU31cWjO|GLoCsO1agt&%2$#FTHAJOZ3%wcGM^S7j*Qe2j=vH+>O~i@|iV)Lq zb(yO_-3Az+bOlFmf1#kdk(=;-pd3Nv_U^ZWmhPl>NV{71(|iXTTv)_*DjmU2kADT^2A70?HSZG{Rt|BOASDTJ>xWC_6H@)V)yU2RT`skU^subJ z@o}?_q>0FZa>QSI`)#LHKE_8F&c$7JyYn;W(+seL+E6as_8k#eXJP4{H7|f>uwd=B zHGcOW+UmamIIiT`BNplz`a9B<+cH2--zyeb!V3mdX3u(1EARy08(hf75=6z-j35VZ z8KlX0j)bHuGEy7sRb+oEL8X6+2OjTOsJ6Q5tK+9N|R6f?3>E}H2jMXP37{O6uc zR!oNRPLv`ajz$%{bnOMrk!J8#RB5B#!{M>j0CNz#s}?l3zob zu-W40(5$Jar6M%m#^T2?ZJKqdZHxjON65D5z~z4bqHjESc^^zE{S>+V$HG(1BlN54 z1_>h4P9u5@5hlwaJ%vot#QoTE(&DcC4ETR{p=DW$I)JjKiUp{1<1!0fhz+NDkoiVs zTk?}d;8e($y5)Cq9})vjArmz~KV&Wv`{9Q zKX+g*jOch*dX|^gb#A&kNH&-_E%n4%{m0+8S{IxbWZV6!G=(nkTE!VJFW#_L@D*<* z=5{C>y6^;jU%zHpaVqfIHv-d{g2b+tboEh<@*2F#pK!aJ{J?Mid^;bn>ibFSkI*YO z6m^uAA3Ssm3t0#cNjiQ+5}KFO1ayaWZ#!Lb{#Rl*nv$q~UGkC0-XA6vzD318ASsK3 zEaX7k9MSYGmmm&C+v)UtuEsXrBFFyY|8upN4IP@X7|!Jm5i?XZZw!Los=&4XQ>NA@_@@ERXwa9~5 z5vcGP&sL~-IrNxEU|+`66npUS;Q9PRHyBscPGdEPvkeL!(#3ki&l7CTwBYskxq{|xHp zo2Z^42XyChSbZ=41onD4cpW)@HNi5a=M8hPo}l(h*#-Ma9%l3wN;=I#)9YEa(jyEz zefJxjweN+(eW|1fm()axgx&oLs&dcF73F?Xke}uSxGb!1g(;*4^8Fxu_wQXNAt^OV zCztwI-CL0PdeYx&OUT0m#9fM2?kV+Y8Z}=(&ma9P^Bw`_ce)jq36yJy!LxMceFBy5 z+VI;;j<&z2yR&#M@lwNclexPF?mPSz^N)FBz(7H@Sn$#l_07AUjpwPq?a6K-LLK0W z%)-ea-ZHoS>v=W2(W~=j{N%bZ*t?E%^>5uiT&hN7jFG%aa^=MQTLl$yzIYgW&pEr} zKSs2vtlPTvkN4$Ldr42`6+^j1W2dD^DSh%0$S5uK$Hw?Yao0RF|BStO%r(HCkR$WfD(g}Q79tkU2_PM^4N#UwZ-Rnm9C9N0we$H6ss8~dZm^5sx zi~0YOozGZ)LB^Q3(;OQ@vR*kqwgXF;HU^2|;;*Ab(g&0{3(u{p6v_xuE^eC^p!NyH zyXO>|#i%XBLoyt%@%H6JgjwXyw*6mJ_O&MlIyYNCb)#=A6jK;>CWdzNg3dD$QOcQy zPg)swhr0#VfdI2b;O;{UNJ`j5{j=w3edG-E)=#UBVX}S2MLF}emn!b=A(tb_L|Qj> zz7IY6vUW45t?FVseBlN8?TNT3BD}JV>Ejn_b+#bSbL-N9)CV6`*&cnuT7+TR6TL7h z$PBUAp7T3CLfJ{icep*T4H+)8yGSN)_|dtA3g0neu?c>!-)@c1_0l; zma2C{A=b2kdcD6Zd~6JeIm-Xvfmy0QEr+8_S2Auxs)FG?Zo1;T5HU-Tn7&ktz}#O^ z*gF9^H`3EAU-XP=D=>NiMT1n(OwX)@%muJf?HJrWM=J}1ZTy$%XJfG=IQbprnro0p zf41UiCc>m%p6KQGLF(8$K}J!u?^s?D1$~z~1c;k9YJmlV{~#|+uA$ScG+_=eaEOl7 zh8^<$JWc!9HP`cFcf6p0vU_0GC6;FO;H-mkAx>^WcXKclTF8OIHIEm|fNTCsW85Jh z!fzCAS%6w@!%zG04zXj+Q+m1XM@4h_@* z4ztIhFQMprd{YPq&9!WqJd28lW6yXKjZYyhx1h_c%_H@S$@pTCk*ywpgZ@#L0NnTk zY*O8qVYF3cw&9AXyc;wz z1alDR!? zZIg}*Pvf?`gw#5uY*$3bI~2WXr@t|^_D1d`ZF;qv3!3{M1#H6Zy5IrRHBa}WjOd#_ zoCGv8=vIqf$+^DtN$LFwFQ#0be=V)u8llmvmU~S^HJtXjVWp=G!S$6OqnN!q2TDl} zIue}Z58*!9MSSZ5ow+25CyDj$YxNLEyPx!0=*e}56I*tJ6}Ou(tq0{e>f2#>V)?}4 zphaYR-Ir(v)rg27)SspQR=LdY8Cop8ngn93H-!P>BFEI*5Q2{9%^#>&%#$5!!b*{` zf=aLdd&j~>%Hp2rjOIua`Ch1THbI|3B-Kkb4A?!GbX-LYy-oN;K`l!Ce4wS)kid@h z{z8aL@v5aiJ%N3C5{5eO!4qm|-}>%kD8c^*xLt)g;I_z< zZ;npfzjp~W(OHq*&zJ86S)@QyVO%BY|A2Pn(nJcqaC{#|_>Xk5XyF5p_KX3z-EWG* z=R-jbhk&IRAS(+-xdp8(1D{A0rnLYo>#ruyh})O%eu3rhDtU(cro@NbkNT2=_$Gg{ zHngJgFZ3k+h>8mR-24RwL|PB^>)ryxlrRE2(5=b+a_il#v+QXc=7!_zwpn}^UVOX2 zr!4&N8h_{Ihy3aWul+yX43}GzJi(NKGK$u`KlJ%pAC-NC|BngGe7Wm;8=MytaM5Xy zGl)5kGisO_9S^zhPfkG7U8v`7o&vzkD(cfJ5;NX=S*iGX`Ox`mo&Bnr6qwo_^blX^ zu{_ZWF&S@|5K_FQYfJ%;mZevL?~)iO=+Lv5mjIbDgQaT-Rgy7NzCCGPgHQqHbV84pDbM`-Nl1*}vq>YO^6e{?sFxeNNh#UsZ)tJ?h(6< z?Shmf0NFl(bZNRLxOok}b8>;WLPS4+($vSF3bzS()Q5FEN|?;-5gLU?YuK%MTnA85|V5xRd;Esyo1YfqoC&uK^qruxjDrD)9WTm4?CRPS0b#+1+=4IaZ@Nie)XK zC(8)?CRN9#MvElCjem5th!)l}84dPB6~C!JM?l#TbU0LY5n6o%5ri-$OJ{?AmWvpX zUoFP9-j=0%77#sqf<)=v%NSc)U0hUYh{clU<^(K`CC*#FAK>UhDGfuA;tEuv2H8_Q zzd_aC>5lF+x@8>T^%b0jeu8E53-T_-P>l;+%Kv$Y?r&QU&jGTg`o65p;4q~w)Nov( zXplx0P(DXRf4|n1yDoU!1M3ILrraKeTfUsAVW8>QIE1`Xqe6D9MDBla@znnKm0HHN zR`GR0X30O-5wwwe@b@{}?JGL(%sKrAcf5x0d=Qc39gOnS)ILFWyLJ>&uI?Ynbisk7 z*oNV6jk)b9KvMwgdQeAtPodF;_IJfbW$rX*0S1+QdKE@`e{~g`oAHZgm?rVq8*~Us zm06^urdhz(Y#mP1+s;>B2%DxLB===|A3x*V7N>`YJ3dQ!FIhZZuXW3;XR;_{rybfI zN4))jUIF49My!_GYjNF!)gBa(-PpRAdZ&O zzp{?5y7AKScm1#1A5LE>c^opqA2MiIP&BS>9rJom3~%4wN!7sc=Me|9+DZ{Ii-lD* z?XHPI=tVsD%M{Vzu4j{$>Sbt<`d+0^>GI~cSJ%1OzOoMcl<#1hmJ(E!)Dq8RousFB zOXFexV)hx{mp^sGk+G^I73KaxK|L{nS8wlaw!pM3DvJ>LUGP zSK{s-SQSDgKfrK%Cr;{s4D`O%!m?Ip}O6(~n1_NK)b3^0Cz2 zvuqqKk~uk^%|?eKy`uG%P@N^n4>(>5S-^gy4ZI8CDI38YLd&#KX0!>-)0y5q9nYMZ zLoZxY@iGU$n5uQiKZDZODVXO2^%QI#&_7L96d<0l-CSj?@K$Iy5zJj(n^@j1tZ5%g zK+&>Z1|0N&_&EL`Pf$=R6ol{DnI=nTXl>4uvc8*`I5c$aQ|n5nER1%+i-JFfiMsw! zS4rZ905>iZVd2Qrbv6#RF~s0cYAh#Qe4sMAen#H-+Rs_<(7meyPhMNIh8my8FY-S? z9}_@ZMWNjBGh|N-mt=G;IH>?u$D`c|7^}}fEX78)G8MpduN^O93W&b@ws?x*#Ta3f z{Q6qvkC0;z{&;#RbJYtrI4r6b8y`Ewb-iux@5Twzi|{YL9vu3(4Jn{szelVW~zAaG8Q?7~_@ko1$_Fe8{W zujMeb_H$5>E}SV8!h;dycy}(uW@IkY`GATZexx?WLH9C&_}D7|xhVMp#Jd5z(Gfj( zs>1Y|cyVCj&cRrE(a|Mr&{8}xcW13>yY}gljmz}8tfCQq$gfS5-0cg(CzSGW`UEs@ zh&1F}VdeP+3iayOc*W_zzEeI=tDjQM5Bt!RiHt@pvEfbA&Nm!5sZ<6it^&@SVeJiSDX+>0 z(HnU=P&HGlqtmk8jZ#FC6sE}QJ}6e`7CN%Ziod>xCDRXkAmBMo;t&nV(Mwgi9 zCF)W2MsG>MjLv*kdHp}OWVOD1#h-XIkp%N$^{(mw+ZJz5e=;~U`H2YS2@fq)4i1?j z?3$ehXHy`jkZD8(T8mPefEJ@T8jQ((BaT-CO1YkA_PLOjC4hwjt`c;d2-7UOw84g# zy`4T29scY>wRj;+0^jRhv(}tA8Es%T06v+%X1-_&?j3J zImo}~%^wodpNU0AaVFX--_40=b2&SCSEmEcCbD;@c!01U z;-TwWW|@y2r@NYx5#l7YMVM#UU5(yt_}k09QFd4Lr6sQ4(XWBrMzH?{ow=mp;y+r! zyAZu&)d@s!Q)CgAaLA85T9>WHd(lMG#f#W|x6fSbV%CRvgpqFB;rYMcA=+Fs4@Q=b ze|nqc>zB~P$9cK(#52d#s@SmuifJU+gvwn3RxJpZB{X`ywsutZ<@2P_!8iu{>Z_TK zTnJ9ps8Ht1)v~5*u57VX;#Ky|!MkD?ipP*)r-SIaz1{*g|C_g(ph&CBFbf4~mB?oE zM)SkE9;{h2H2n4!*sX?)`xzjY){Ty#pTeJ_U6+b`wXOODw zr4A5_Y9;$=nx8TEpwEH(@P4uLUZ$Y4*QFL7DpHD60gnu!GA}(OeqKF79gSLJv0^2z)la$e<9@4VPFN0aZa4a%uo zGfr7P1a2X-flUNF*E}g3kh0Up`tqz`_k`#u?GKy%ghZf=EUS+2kd3{!ba`kKg1A=-JyL$Ym{tK43M%KKBAj7dt|U zpE!LL>Ys+7fgI1*cm?TY%*NNxZx6%=hFRRg>Ds5K?{34CV`Uz6f6FTEq!}Inqn#2?e%qvT)^`bbVWJJca)+5$!u3`zqD(KuE_&&EH7yxWhkRV zC*cdlE{)*5T2ca%+VQ4nN%d=yq6W<*nCf&A=Eo^w(aa3XekZQq5p8#;sKYEowvr=6 z0Gj#V`Abba!hOkehBm4I)vm+bsgqDP=&aqW3_1k2H7dr2e-_r9`4r;m{!{?n-0kyN z^#dra_S8S0dL+aaw6_2KZF9=F9y@XZU32Y^crM*y4LbJb#)dO1vJo`XhZI?wCx#U# z5ZAT7J|JpFgCA%Un_Mf>s;_CzjsAK%#K*xKg&BoKKbnu1vZtPWx)4}85YsPdwFn5% zY)fvx*r{d|f;IZ!n4{c$TXcmUlvg2&w)k}Bh=qLW+Qh07ctgGB!OFYM$^=7+bsgl@L{Qjm}MsB=%` zw1~)YH+f%+Ptq2(jixP!bE!TxD@Sz9tbgF)dduASgIc$G(LikA;b5k0VgHu~uhp;N z{Sm=3%OX?I^B||PkFTI%xStzjl-Cat^WrJiOFb24TE_Gdgk?+_K(i9e04`?W%77mo zeC*W1_Ya`LZFDPb6GqKjd8d4S0y&b_@xH|RsKR;^k%*{b)4E(FdJY`vLo%9pzF*~} zx_|v-I{(>t2(AK^snBvxf>M#(h$aFe9r%xr^^Od56Fg5z8zS$a{-9CfqBSDXT{(=2{%mRER*&QUs6sJ)X`@j?FeR4BWj$pou0_1XSSP?|uJSzNjQ?=8p z)?m@|0jQ-b9dV2s3k`hvJ~VV>&pHu&cDB{>L~*hrZDib_-ZqE-NpuYJJ*Mwb#m@^b zmEIUPL9&`#j~fXrrkwZ9X}nJDhtCr3Y(J@My>we`7x}kzkF|C3rtqiJk@|P$7LVow z$P?$iJ0370-#$~lzlQpQlmXAtlh?5J;Qdvkw3!<{4`WYne=cEZHpQe`3+hcEbL0Qy zk>E1thb3CUV3P`jTEG_y{6DqV)?`igz-?TBIpp{oMQYZ*_~X{WhB+h^&2|3dZJn6A z6_Vz6 zCO9wQEMHFFPFw|~CEPL>a0v9LdtE>-sSHCsw8F(CMzcFXfot;zRH#Q?y6&H5ufV!nPtnU#edE57&o1F-Jyze=lF(Oxj_#Bm1%C` zSxR=T712;B*4?W13H2-+&NY9SF||NwzF0S2a~v>ypqVR)_j+m3jjD!HT zbQ1sebS$d8JFCuMjcMiiqFI83Pbx{w16mTdKC-CfOL&Yw*r$wiqG!qC_{BYk6m$d_ zTnIFRRf@Gvvf2R}Plcy}Th<@8fX@aB!P1e%@HK_v1$*fJkypshkg}LRGzmKXfWoe7 z_^x^GgQ#XG?^^O9P*zz}U3aQ}3UOKQ2lULi_^enmUEBh=gR-apzH@)eGwnIuxx(>r zckK_wAL;77%^>d60nhZxLxF69N-g+%cC+4{pl!aD8sye%uo z04ErgmFTlPEp%ioDGp)THuFAVEy|*6-1GRVp(6PXQH>P;AO1X5d>_}1w7HwL>1LOb z%Pwb%yuV}^Uf*2)XC-a5zUu_e>Zx&{446NE!xYN7R}<>)sN5qG;)s)a1ofUNDJ^eX z;lVX@1v}0)ywHCEuL2#<^}rVv&J)*$J|D9|;!q#MPL(^|$r=D~=|raOBNqZTKMQbD zsW>Lw(d3iyo09O*Np$=e0r$AgOq5Rrv=Vk_f5D!%TtAAhYT-$bQGgHAP#L>cuiQUK zT^l?l?D~OsdG+xqbfpXVN%Ngst7x%r%UtQJ4CvYUg z^&uuR^G~~jf*#(|s)cunk4La44KH9Yuf)RTLcFYG8)w+{9$UfB)8?1aMVA`KmK%QR z4mNzU%eqlfP1)5T8hS1vr~kY$(tVc(zbGdgB-#t_V&o z@R=?*er%5{U$PP>1WI{*#?8Rbfaon6AhrZMc=GM@H>|z{zI&4&*iNkk_tf?XaTBmT zN+Fy&`N*#AKD2@Py#b}U(7)uOcduHHH{JOGEt|1@#H2aWFTU~01`PLo8zvDIa+Eqc zl0)vDU-1NxmI0*+fRTSt1Bye?<8p}cGfoFN=k^ssHxwCnkinx|;3EY#SE^QhuOJ{0 zYMrH_xyiwckX{3XcNs!=AWI(PnN&l$yFsM$b?VJsRiwf%3EnWh*9CMIwR=u$?=!m( zvVQ1x!qm78a$JEaK6Fx=Mql56mv^k>ELm}^@n0ClQuc4hU0|@X;eb|m*pLU8o3W!r zD(y7F4Q!tigvNPwoE~S6FkA!JyMe#lj}k>aaF_&(rq&y&Yxf3-GQQ(YQ8P>{e`57_ zrj8EzUvK2qz~oC4EfnKlo+wPw9nzA^u51UQ2F8*(9On`sr47r3x+!lGqT=SHG)VI^ z&>qqJGVjeMNgZ=eOA+v{ekI!BNk8oLIMfs$t0647o)y!IR|@jM8w#jJ-9&RJsh0;} zUYe=pR||ldzhpes|Nb-Bc6p@|67(xmZSYj+-;V2YE_a-Dnj2Zkxv>E}REIN3Z9w_= z5^x@_PHTV(ZTIS4a9Bm?q?y3xql|i)1_TgsJZeMe2o78%tU{404K2Kwe5LR_D30+M z^iu(UX~#WgGnk**;&tAe)Op1Fv0Ji+XI@SF>Lq_35^t`Wh!5I6c0SflAbsv9a%x7L zGU-LC5O8uA_HP|7JDP4CBcItfQ*QpF@88F5CSU%SCk2;pZ=CV+lIIah^}b2Kr>oE? zR(*`)i}m^?@bL2tHLp{_G!Ak0+*B9RkO=Q;tHaOVnwWUtw;MnF=p^~AS)h013<>C- zn}AeD#A)&%4r{dgAe#5CMf&^Y%hr(d!wRU&#+N+R#W2A{FaocNA#}`*Op{a;ZcSsC zc&&f*bT+Tf9gzsC?Ey4TPMT}}9?C&0D8mVm?$sS9GTvMkOO9co!rM?dQ zt4!MU=^vm?FaWL6$k|#LkB~R6s~m|BJh9|+FUR#8Dly3ZsSdRShTB7&0bfx|P;?<+ zoe1*|uE`)CXVzQJUSemWxh|Zd6aEt+*K4w!mqtCoSkWFmcF>s z$d5@AF-vRuFqHfJO_fyX9n{o{;NQGd2>FIKe zBwJ7h&3zWTQ41ZNt=p9#UfwQDM9Xku9tQN;D%u7~blFY3`0!C_zz=)SskyVTp%cKz zV|$VA?AUH?H*_Y_N7Mba=n@szP?485A%8sM=;A_RefcHzvBu^r`6qIOBr`dJqG3_C z%;YGvi!Qma554fdfUrAuyW^%Pd5nXo*wO|E8b-?;1%)(#nE4Idg2jr**hd$$(=awk zrCZqt_2aL93@~~~O%KRUoE}yrM`o@_2u~Q&gl9jq{>lk8cm@PZj~#OimZxgr83AcE z=%w82F2S>VBCX(9*Ge)B`##I%)}3{lVY}ki7#CJ#Zz`9_Z}?S!P7U**RdC64PV{nl zt{Arz++W0K28hH6dmBSVgB+P=??LxhhC$8kijo=xB(NxO^VmsBo>)`L>DD=8V65WK zSV+g@?XN&Le>iDO+_!OQCW9%T9aXx|VigXfijXe|;DWv*3uZ>kp9+EZY@R3%$%R;B zmwr1*(qVh;qXnD3lcd;a#D0{EVvLftSB!Ti=XbiSuH_sRJ++(A(q^6*P`2sd9q9pX zlcIJ->$YE(#lcd~w4(#qc3(9g-jf%a`@1}$UfDg(3Pd0(K6~t?UA+>!khwzFn~O<= zq!FtBeCV{#^2WDv{|>a2WgY!9cB7xQHp)LQkTI8jD!VV@>p%i?%nqlD*A<HM%1VvWkd(=3GiEJ-cPaha9-(bo7Kr1W*nEHTc zE6{ixf&kQ#AUzpStnzG&%?1hAR{)JrfYb8;J)Qaa7mpQV@`wLJCOoS;+z<^?b`DQD}wA^JE3}BqWJQw2AIDojl=0n?k zg>6l$H5C$gtU32i>_q?PY>ujE&-txs`_H3W+tAX**8SkYvOFu&H<>KrBchqKvq+9% zCO%}f;%{>xD2MhM2waJ((64qZL&%-mD6BLSZ@6X`rLG7rgkH>&Y3CDMgzdfGcwAm@ zqoe(1-0P>O(7MZ-qabvfcHkv6fw2>~lE=-X##!Bs5H)0`9kC(d?|cl5??@2Yj;ZQ* zDqQ402F$rMKUlz3PBtx9TpixyJY3sW!PDCFxRTfE*ie6VDB8MK?%EVUk}_hZT|6>HSxg$AlT|r+>jOnhC8M- zoJOnsF=2=EUg*?d;WQ1lX9b#yaCC2UP>6w z@7N~y+^V~HB6bZHjdG{ucP5UaFKAM7F>$iruLHX;CSO}N>OkJFhwQ(V{I0JgKnacU z(3^TQ+6kIAO2|<-B)4W#D~qTT%r$GicU@phY`e?MdWXD`-cG%Z*jVDA>NI; zh}t>%?M}56h7}P>2S0cWr8*SvIl{w-nO%>jd=A%y_>+|WEWKJAgtG8_?kDIJ7wtDf zs(BsyWFdqw6MaRkVMFt2;27XyI}MZNv+lOig8p;dK&odIy{+CIKJPJCci^3j{*4ma zeZbO}%~vmcZ8Q_Y1bZi{kjIKW@UH8)Uy63ey8bx&F&WaHh8-6_Pxsb;DbojNaUf4q zOAy4FE}*dFlJ!Uh<8(Sx;5z!_hHBj(PLub-^W5fg+1z%9ESexlS_)eI+vTT(#wJ|a!>Rw*i ztDEUZE|A94|ECorZ0(8aI+GL#?E z1~337pW++mlWM0V==3O5>Sz6rk~iw8cl_nw85~OU0WX?}m(4uHF?Y*n6^v zm)f*I%_()=kVZS4*>r)j`0!h2z)^^QcWINQ=x}Y7v+mz&85rsifqGZubXhUT`+0Ah zi`o;uHLHTXLdRO#rbrzft#s#MW(@VpYE@Ooucc08rxaECQMV%MmErv4o#6H3iKueJ z09lrK8^kpew6)`n=`UElNAq$&Ho|A(Zsej@X#%av7MU@ALU*gUAT?V2&R=SEnD_Tf z$q&DE^4)OR%3lSTAd`E5R%cg>eKcb%;kJZE6B3shri|cG^tlzMAphZ-RuVhP@kThv zNBZwjZ2--efOv?9){QXdjgHZ%vW$cVe*#i9Aw3D8LWct6FIK!NZkWC>eQE;*;*l?9 zD$wvCT1z_F5LwpLfj$CbttU}uCZM#pAm2|=G2%a^jeuN0zZyA6DMS$Ye%gSCh-}L} z0<@9>G`{M=7na4^04=lB!_+9~_Zmts2f7gluAVKWjHKASAb*4hB9i>@@J;Z<5zOzT z;T1WegfJeSrD`YkmCb-|s!1~zEsCLOr^4Fd=8YSrzs0{&5v_)2SztRm$y>? zUGR?J6`$a$Z;|S}`aS7|?a|fQSuQ)))ny7OZjdgX!^`At8>43>}$%R#iaG;x#tf#|Y8XnYdK3TB_!*8kOAD zcuzpaoa+~N&`XkY-3k_eB`;UO(6u1-%i%YLOBXm_uSDbTJt@+&^>ybSig2>e_(Kop zy0dA6XBzgjzF&x569>_j3sONF@mTxtDD{dC+mWDm9A)gp!@tx4%9XV&vo*!Qa(Wzl z{q#%30%w^+a>}F90l)iJte}Httf=PAXx^Jw>J&OlIU>sUh+omx>a_WN z4{jR;|CPnc{mvPE@Q4Ze?wj~hbM=YNNT_Z%GkYUy=6kk>UABoPqs<}Jx--+B`&@vz1YEEzGy}CR)mp1<*3fbKUZrXk<5Cm#%$?q zKXZlx=|~wI3%eb(nY1iu@!^?$)y21&IHcXv80hD`%1CoRyD*DJKqvN{L5B8PMUa1= zHsoe?_rf~bsG_VZkUMd`)}ZcRxZ4k%d4-M9-*IRPth1Ay>u!&S3XAPN>zt%!u4?;} zAB(U_bj+`t_8$4;W}XR)X9+}{kK-8P%x-aaw)vI~xhWjXj$hXk9xrEo?#pXe&VFnJ zkfc71R;+7|sP=z-OmnRkQq}q|LZNxGWcC-fL_S@}2K#RKIYw+0@ba`v`20wN{pUxYv$ixLH+^2rRj5nxLMS5{NXbG z+~w9@y^!S*7ul3Da+|_xzSrCWrpdj!B7^HGhZGSK^yY?@m+~R_0Wn{q*@?zXW>iU znQ%}7X0+x~am}}T*g@PktLBfWrlVPX720Si=9ZHSz49OLx~$NX$GRr=wtu|xJOtkf z?#%wgH{IluiWI23pD7k?0UwLH6BV1EU>oS(SQ*A>e`f!j4H_m0(+ zpA)U(94cE-I>RHB2S~Uo3XN1%UA8>K;^E7wc2 zW+C;L+f_5SO#ijRJAKc75L!MiP1UoBpS(!+v`LO?Y4!}hz}sHAgEte^alPGB6f$)u zX00NC#2={p@56O+pVEJSr+?`${sB5#bb|iQZW+XK#r+lu-~B?uj_GL&x?1xJg+yMlXM$@hyOF~j5KNLID;jeP@LL)_8!^u*Of(RTD=tn;^W~gBky<0@C`@pGU zw;!6h*T&x6v3WcvD-3!^9{#RXU%T-QYvNYK&|#uYe{7R$U<0W90ylRN;HL6#-O%@T zbP7lPmN(dGn%jPLM02z3N8Exp{{i3FhrgxTzLj;Q8e**7Y#J6OQFk-K;?FmcJoG4a z!$y)vWSFe{xXt{0!eX3Km*DG*57SHeukg(1{11d|e1elOFlvcl;5+~t{X700BpHmS zc)E#j$J+hGTSajt-OGN94msdE)bYrh50y&K*CbqOf#MwFfI6;@Sv^xkiqHuUT|3L~ zfwo?NK9`%H`$+CgEo%OEnm-Lt#od$=h!QfsbQZ9Ry)m34K!2j#TrWL1Y6wn<%~5oc zOfr5B*?6%uE>6I462cW}ZzQcjl}BGL`34p@7NN^qkSjc!BH2waPNziobuFJ+^M9^9 zJK`~1$`{=bsIgh)G;^|jK|xYyYy+V8hM7G12o>p2KiSI zmpP&{Ln&tyQ??j{{w=W~?#pr3TY|##%|9P_BJ(wrHulc7>Y`6x@7+{P+APyQ+x(!* zxmAu_>H|tHNTXdtidEm#D=b$od#+vwsL>Gcrixho$JIX|+81NnV9dNkh-WTh|9iZo zcuD@SC)z0M+1*BI8p2D&!Yv>;weFgnx7RdmP#@{pqg2eiYx0i~*8n3F_?T=**V>qf zPIPe#Q=WnN(PG1YOHDFm@#4cQwFz|1-F+tMP$L7-sP)a4U|K7EDf*9v`*F0pVn{5U zhEOHK?47CbU{z+8en2S*HR$TY_|emSZ4Q{8)QUZNGNd+Co5on)3<)BY>gM79hANmk z9y25aVw*_XkSF1O6YAPZ(736sg+9pxoX8i5mKI#l`-o-KC_OdmR(2vB%_0#75LtowLPHQ;3Ctf)kazn(?^$+ap zK$0Yc{mAN#CPk){PmGIk<#{`78XQi`%2%R^17M^gjsZ)OYqYkOIbZfwRce|7FV9K1 zO&mq1pj8`m9Oj3Mk$(BASZ>(sh-nZBex9HhPkKxKZly({bXn71zO77Ljixu&hj!@6 z28=g+$+arrAqvr%neog0t_^;tzN+_?!oj4r5(kW~`rwRx2&CaC$PQC~9e=gMuXYQ9 z8`Jovy-r+;8iY2m-=kFLCHE^)qabm;?djSNWRw`*G(-#V{-AcOnV$XvhiKq2 zT7-=ukk5`}2H`WX|K=5pT^Fk*Q|1n>5Ka}J$)4*FL|C-X&P5SBfRxMN>{Z(~KL z63&S~G}IsF-S8Gw9rQ^nK6z)89UWKuIK&DHBFo9u9$-+Dc|C40<7`79yRIVdR?GdK z3&x3cno3(z+WR2IPP1spzq;}L*{82Id%zmokiZT2e_a5GFuaxffk*P2;t%x1j~xcy ze`4Ew4dO0I6k%M!k*R1!D%y?O`c=R;=P><_=%o^#bU~g!HiV@#!Gj|EttI=HFjwNB z+mnjMcb)XemjC7g{h*m$1gPi)@gP%_A2)_9JX}ngUHY;Qr5ObACyJgPeUUs4(g&;J za%!MIy67@Z`&^Dpds42vqy;V8u@5J%474a(z=yu$8!b;8ye#oVqDEU)li*TH9G$Op z@eMW5h+NQU0w^iD29*7fOXX6(430hBhs*@+^0jTHroV>$D8C*Jk}pP>75%xoB})%< zT5~>N?%}&Gi1mKddAu7r)UW6Riy6JIc$gUbsacak=vOZv;~YTjOZkOFFhAM@UogpU zC#B%?CV^mOyxjzs$$OIOiS$7~+Bo38zo^y*@jFQl)xdRWwt(-xCNy-br}kP0BGU0^ zS)a-SJp_;5Z1@C;N}~3(;82tpOAX`*n$UYsTPhtz743rtKEeaNuZ^~VL{H=OVyI^F zXJca^NXsGj!u~JR{(|q=))H6PV*;0aZEOST@;nC#fReF7XZdMR9YQgMz4{H|6t_uHEvMU}RqOZ{SiV!lsdj<9V;SKdxL{y_Rin^=& zP_EgS&HYsVL=pD`t4wRC@voHPaZLEb7Pr!7EO|P#?#IF>?~31az!{n-Ui+?yFtd~B zdus3Rc{PTkWi&FaRi=xCO_srsBH!Fi%OjN$j~^P1J2Qp!APN5bDv|uQb%3g|(m-5d z)*)rL)+?HBtu*ya{j-g{uYWGd>cjoeMpP!BfCUJJtgBE-@OU$4&xv}Sex<9>*0Lae zo)(z^Rqx-orClWcUA~%0;&IU)l0A|Gw`%C_nElhmv~eLC0@2^Ksnbo;!)?19KxmC9-z7xyXUOIM3E2DL5OGO5$2d}V>_52iNSj4CDbONdHM`pd+mAqWp|J)(-9tbX zJ&)iDPZk42?bB?PPNGtmpvuUuIN!lTAg*q)HJM|iP%v{#39E$j*mqFEj5F1;w7(K{ z7z$Ux3nawL+9Iexds$tF>w-dWLY=&{FF$CHHu#~#bgyf3-5KwxjvXs=3RVr(_Xukh>&pwoaoN8Tt;r6=ovD9i~)>LJZPGKVC%1>kZrhRUF5`r=@)xYPK z@o7;0fN|*!7QL@SA2ZuoL-&nCTD7NcnH&r7Q9tiIhEiTt8GZ!snq0LThF~c0<5||4 z?(nA2?|jxEL(gBcd>Epu-0}TNwxvv8F`6JnVVDsZtN18*6ci(g&zIVi#IuGoUfU4p z`s8v~n`hsX@C9>PRII2~9G@{CNd$Aj~H`Sqgp6FOyivYu~4;+>GZm z{20?aH(oPLx}~kGyuqeLn3mlzDEk0)%V=&p1_)=W)RQ%&5|rWaH&*(;!!POreKja} zRX!7}*E0C{g33cYcr6IwOCahw&_V=UBpndEL?5Uz^8n5N8DpW$r(qwx*XBKnZU)~6V_6Kr)<(!r%K{>N{{;-EF@=X!O z1IRjVtABbd@?{@cdCy!m@~s(~r2s_(Wi}-#3A*{VM=@r5BX4R~>H0P0K-r|FnuMeX z5)f5?jbhY<#^d0 z2U*_PL?3s4>+E@p^#@D^NG`sAfV+|AZ8XZ=;`W3Rkw+UyExI@hSM$26b^d26)4QZe zooahWob^;sIdexX<7yO8_en*3yRTJ|)_*^%%Y|b^Rf=pFc9n-Wg34_8H~RE2c3LGm zH1Uo?y4~XHB1)Y5pmoTG8Nfm?!&!c1KYQ{E5YlAJ?Gu63OOgeb4q-CsDu5rleT#Mo z&BwR+Xc7w40+$GV!$~^<smR@UH*A1bZp6 z%_^TYgtu*V};Nha(#LfApswt@4uN&CYa!+8z0s*zz5^gT{~SN+55iO|)l zC}8}~Err~_8}>d+yXyfQ2;Mv;JPAIBBD6%L5tc}_7=xXj8Hx+&@H$lbB)Z*;%&z9i zh@TVkLzAe^xY)zXX?r<*mr-q0VG@F)-Y7R2w=q&bi=s!dN^s{O54ul>U_0^EC$qY)(aC8cNY4mD>goCVb-F%F#>UViMXq4dI`7H2*HkU`0 z_xfMqv#$!=nPZF-0eU}aQ6@=%>njg&=f)nj@KuGSk-tAF?;;_(?(Si5u#1xnA6WET zyS&(^Gu?Op!sr7;$sE7p&m_Ktog2_HBd5yl8{QWQm27woj3u#fS$?jeUthpd!rZAMH<{{tpVmR-lpY}v zC#xVsHqNr9rEO#y<-~anz_uHn!BP;%yWiLdb*Cl6xv8ZLLEzEU{a{);64irEdK$yTA@Q}Yuo}li(YPmGvSPA|My-#QW^sNn%l^ktQTKoVKT0@yUe2l*qcdxH#`L zU&lI=)-;!$`!n=WFn4q@q0?pt0!Ol>m5Cr$U5*D&P5kaYiS6hE@-KalxC2Vx>ZQ=6 zLYHR}Zhb>2=4IedHV87+zcDpHQ>M z%*Vz(Lai4_B6NR8uH0qn6u~a+1fsiOb$^2sT~P--U>wnJ|< zPab~OAJ0gSo-2y30q9aB_(SyIXkl7>%6qA7(zgd#(5~fd829{&aUwUpN}w5=hOFzo4kjjLiS9Bau>cXpRFXU*5v}Tb0?BVYpsbuXr*P^IhsFvC)nJ z^omQav2~w!&FLJPF1UXCq`L5x$W*0(^~_tVfs!6-+Ua+I--L9+KrHE5;E{4iExkFd ziAJ8V!y^x2o|QjWfBden!0}s%qk*I4b2wpMz48y*$_DEb9;@);DyV3)y_{5>=A>Hj z%L=|s@G?U-MH&5H$7sOsHP;c-IWGJ5m3r>pkfi_syLSB|rZi-}Wn+spbd)`rY*2Ih zn45CtqQQwsogH+=Hs#QltHI7KZZ@hW&tc<&O3;s_orW~uuKs(BHVS4N1CG>ox-{_U zF@24JS}S4(;bjp)=O6A~uo3rV}-euOB0Qwr=_GQaD30Ijj2{ zN{J7a$~hK%aDH?piVP?pz74t!kR_zoGvC{pzCJ6zas1l-0uHeT_RpiSd}v5J-vv)K zntim<`QdYd0X{PQ~^wgUE8Bcvdm zDQ~*9yNV}B&+AB*HF^7mn*aH@zf`>*fBqdwn#euBuSQ^_3(pIYdu!5ag+^3P-yjGGN%XE69NrCn=EhwXZCPCAGd{83{cV%e9N9 z;$o0_wexo5GPg;{vyp;si}e}qpBVm<+urEh`%Y%EkZZkyOZZQ4j z4?i&X283znIhkz?yM%%sT5ZvHrp+GIO}CGE}kHs?fKPxz^^!y(apPTJ=7 zMrV)a+XTIWzn>GDHov@~tiE~VC}*{U6WTbFoCa(GPA9cbg{yz?aQc~a6op2xz7&Nz zrC0UR7$D_xcykFS$|A(?Nzz#y*BSI&=1`MW= zb7kHbz6Dqbpr`Mk&Mae}7GqLUQbkGE6>{yT_S4#q%OB)_#fdnk-kCjJLeF)|9QDVK zLQMayD0|j>Ec=ba6t@dVbXY{|5!59S{^wteDnX=pCuyl?rta>YmTdmYT)2JEJeT*? zcJj4aQdUY8jooQhwKA35|G+f(K4T<)! z1;_em9c8fWH1X;jF$;Qkr8NZ6(jVutz?6GO3#ruf$;(Q5IoWO*xCNT>+UmxBIEO-a zOvtIimPeW80`1$lCf2_7^RIq6*9qY?`(32wHdN(_LeLRV7n!s)q*BHI^b~>|it}uz z%atGdr%>Kb%-wnq0>bP3lupIto-!Sr$nP`t)Lpb-r`q0+wh ztPZ0RudQap@2-unq~1(vj9_lHlYuFSKZdLKs(Ky%^zSP+Bm!Y23+X41Wy~`aJ?Mw~rV&;g3!W*y>o@U|)CBnsOHb)&W!^rcH=M3g{e+rlfldGzg&$>1Tgw z?aa0pnLfU$M2|}&(1qzYx9xFMuTo9&p*J@#$}!(V$JE8aMMFjw_Ps@J zs%rtjO^OUVR6hHutqnu)O1LM$%(_5{va5BtM zh@r9MN5br}TGV9uaO*E?wW7CH>6%`h2cyU7U$0MRbV0o=SP~U(U$?G z731WO7-5Zx7Zn@nXh&USP*>iCt?JLA>pEq`O2kmXaN8qdTO7KDLh1A0G8R-Go?i~t z4%Gx?9SU}WDxU)^bua!Q_?F?DR%r4h0Otj8fIxVFZB2S=G!GZ;Zn&B0BA9sUQfzvkRWpBa7pq_5ktF~>0>;*2&+L{pXDWY24PgL#1> zaqMg67QYsJ=Lb$a-d*S`KbPX5eB0mkoGQjPjyUk}xYc!q=XozCLIeAKSLXLHV>8|+ z-fLsokQU*YBxa}^kkq|U}D^Nco3!yIbeWHtFE zUq*Hmof!IaFa6h6H9eBK(M`HzRqT~i*rT`f2Uy2n{Utz5sR{Hu4XhmcR3!w*F7ih& zMGd%1B3LAfJ$L@l`=`n`*4B?NQRaj)yHEDsCE#QAv;XZGPasODeQ)4?nzxb$2F&Y zZyWP7`Z_yFh$ItCU|<&u2NHw?Xc$#q^QSFEzYe{X-YkFV+Q6xr6;0WlPT?$#GEZ~} zyKh8LBkgnwExm&sJXhZBHCHVJ`DR7)mC-o`9)?vJb!a&qLL6*e0aO9pj(7w_o#q4-KY?E-r_i#D1Q5Znj~MUTTH1 z@xoj-5rgZM->$M4_tF={51rhDW6ys+2NEL3Eq25i|+KW3WShmwzn zC@~u{05NWtNz+1)w*ILvNYUfONyUTa???KvS*pw@zE7V|)FUt~nmYw&}=27wfN z0J5Y|TaLSBZ`>8yXb2#Q0AoCQzZ0= zi#B88lLTi2BF83W>p5Z|^oktE98p#vzZTU5wb@X0kWnM6Vj0$+F{Xwo9;3vP+Bsj!Ioe%&py(g z>Llf6)L)t}1tBW0Xay%pe?`>JoxMdwOh8wCm*}e}dR8s=_7SMI6Lp*03>^*@ej`m; zR~cnfiiIQ_yxW<>GfPWN-P@AroJsU~O1<0>si3WL(({^__`es=36Y{~*6KY-wy(01 zryWPf`^2Y_(de5Vzz8(S$%N}!F9a14XNx;}hZJy~3>y#LsS@yecAr_FB7Dn{{*Ajj z8=|bKc&O|RB7IsH;T_I5o(SEe94fB5{kKQUp0(Vbto#FE^=bdF3qZ$Wt|s2lgGPKT z(|I%T_60+O#3ml1zdq`xJbPvMW>U;xz+Hkaot}b9sCxlmP*_ID7<8WDtJ$Mk18UnKGLpdrA5)O2R90*zn9+k!(zumt2n2x_6OFvLyOZR>}PgS48fOEL?)uRpYTZ zS1HQIp61;vnkDsdq$?ig=>MI6&DP3>1kX%6KPJ?C0Fjb=ZQmh*zTAB@g2?GnLR2YzD8pcn9%RDM371Ul}TcC)SxX?z>366^?f;ZaYjw_+fXJ?9Y!! zd;0n*msJeF!&hHT`Yk(9#eU4Y|mReL} zjF01rQ&vo8&e_yjZb@44aJASbnbrOo^%-mxHQ5%GYdoy{)}McMy@23zthdm;If_8O zU!4&CPOtuxjQe8UpKPb3$`mPCD%jT*Ls08%AQv6JASUJ=BwI<#KRI~TmP12-M!r!k zj1*tTnAs=kua$4{UGcf9!Hc!B05o)Topua7f-NCd^!`We43F=3mY>b@JPF=C{!&Z0 zot|1rO&O6Xt->HE;9r}S3dZ zN_5x@9U38W&4^MQ9hUF;@3R@jH-GdPo1|1Vb`*Gr)o@C!qH{lE>5=F&pdqSuf=b6%fciiSW-2aJ-e?%U&%G5&bGubB&!fY zEDJf}N1rf=yaF8%<)aNoTMzL2O!u`)K{Ki;6a_)aRvlEbV`4{%6v1CI(l+ce=v#@Z zwZe0r;w4?NRQ6k^=*=O zCnyHa`BvJ^6@FMfVFRFb!=-PmHn%f#^FU=Rw^5FPziGxx38_=@+Ol zQ}8~B68022*ejuCkXh}aw;!?YaQp-2Go>d3rox;04;ex$m&Og``Az&u#>jxUMmc`& zwPhWSCGs$VRAaNv@b`d!1ta&L?o{Oo=DU+x0uBo?70i4@V){sTcByCewzzJ-DXN-S zXVBRJ_PreZ6uircaudF0s7F0R*P8Goay~V@!*e#r&k@ErUibo=A03X$;Bi%=Q92CE zQ^NXAtsKYV!{B^1Gt?i#8;+qF|4CdXVIP;v1wf>%BLEn_%;!yP=uOB)IlNRMu(gM_ zH-|7KK&aNPfz04cr?R#);dR>fvKtA{kez>@?p65!QkfJjw#~hMq6P>r1mZvQf4+8E zjyR>Xbayx8?*8uF=9D(NX|B_yWQ6GU@1rv|{gIj_kMmelD?NcY;vr`J}&8 zOjTelT`j*rgeT3XS{sSk^IOw|7{V<9z=V@m*{_`bLO10H%!ZxE(~5R97=j9Y>fIeq zo<;X|D}}~CX#P7_kCP-A7_ZAkuzO5jha)m+dv7i_IAYE@lYoPoa=OAZQ3uYPp94xh z%l*Lo_^K>O#GSVbrgb2{qybD~iLi{|=Mg#R0}RmT zPPQ$Qsr$$<5>FS>mUV|nwtDO%2mfkU*%{GyNj=cKoSBtBWCm61b6<*P9>7LFhL$zvYQ!G%;K zf$vLRT)$h&)i)38`_)@FKsu~NMp{Mc^g}Cq=3#}Kl?+Gz;}!Md&dT_lbM>p+s{58| z?@!6pbPXiK<{nvm_m@6gUf9i2H4c5twT5vjdXf6Bw}lyL^+7UB!s~;Uc9k(V=p}>X zwI6!Xx$)M2h_~pYf+tgLK_9~i;67P6Qa0WDzT-buYMWz?i>C@AEjmNGFZTc?ZI6BN3s5ANO3PY8OMZT4*F(R1&9))RV3xiD(NKOU|ohU23ufvNn4hl2h2 zU|?{=6caZZB+uI$=gNE!GrXH4DA#zQBXtb~-;sF-ANC(-`lp!mQS~M7LgkNR_5=-UxB7hlEs6xv8$sIqR}6G9JYyfD?xKqTt=TD7FS zX_x|Ko_#gi6bhMcWDtKQYLM66!*IsF@`CFC8PT`7g}M*AFf*PP)`E@Q|C|Ae0m<99 z$%OI^3U0rp?bXDWZ*!{nKV>Uy4V{Q|Er&TrSpa&0_MY-1{%cBQM|WR@Q|SqGYA;2S z*GV%?s#Hn*ytA1?@5yS#92{Z_=4!4VOMj)-v$r+6*@p(9GQ37|XeGMa(RI_)+Q@PpR3cdr*5t``0_0(et~>A-HtslFI;G-^CENqT5$Plv~yU(UIQ zC`z&s%Y|xeL0nY%;$RFo0=u_RDN0T)jz+7i{)%tg`L~zbxO#mwh2-bvVFp- z&ppqfI~VtxW~vffMRtA%09SMK@Fd-wBUE(a>W&+2sAtFD-Jb^Z5fUksdMv;+IB7Lp zOe49N$qGrH0Bwhr<4+C;av!&A3zLy?y5+`N9TdanaCf%pypKSsu2BbP$K%pC6;DEy z)fZT1x_^Ws&j8Zkx7W+5Zv-;^fHU8r4BwGSb4XN2n{sFYzvL0s6&KP<6&!a+Y9;B5 z9lWkHU~t-$8lg`gVXS7}m5f~4A4~%rdFe=;g4Vd+#U$mc@QyqLyJUfSUxLq6`e4?t zd~=1Y%W5&9X|}CL-M@R&AEOXCR0|Xo{7ix=G`b_2Il8P&`nm+ z#jbcujxpgD#AMWxlVUS*TS)bdpM2*4GL6@w+jI1}9)1qI=%ix7kE=KxmS7$lw7eQ9 z3SE+ApOYhmT|e6=yh6>A!B-MVTQ&77aRC#_`=W~E= z{>*|jR3nRVOvf39T$iEO4BFP^g%d?hH~5l)bLin}60-_eTd}32-y*yhn8drk{@nOL zGoHWvL|I^un^;XiFUk{{BKqjeznt@FKuqodt}O7wi^^wGxMuE7>(c%VKXf?c3*Oj$ zlJWWg0;P-+tksFKxN*dlUGG(x9Ls%S#)`4sD=^@{SnRFZk^I~ z20v=(Lu6(^J)!=koAxF=E3PM=dJIoLRZMDbYmxe9&2v+0)_D-UC|EE2mNeq?4etda z{ma&k?T`~$Ob{EnN9yAJ17v5tB=%oAUdxaoMA&yk7dE)y_MK{_!*Hf#p2N$z2M{XZ z)8o*k-60WxpyYQU_y+|4f%YTYL4!;d_HuzuFQQZ!J6O{dX-uEfW zq!d&V!^bj;B`TAm36GEXp4W|H;{MBVA?Tx?E`kJNA;1Uvcsi}rm48PBXI$a`3X*0% zw>6&E?NNTxuTR&1802-ElD6S1ah2I;VKuu<=)|G3wHm^VpSL66R3Yzb>2+U=cxGQq z!ewMxbp25QZM+QYq3$wmFK^5FmPu%UxU$-E@dwQJ!JjEnI#Z2I-mhSBs()x3BRrq{ z7M810^U6Cv9|S46J8smr`BW#I<|$4&apbCWP7Z=c6A2gD`!%$SH@th!A@iAm*qufy z76)tr;uSl-1QJmE1+hXy|e z$N%r(j*cO;`&Wl`jZVGNcvYyjrpm8>%UD-2e85N`Ws>iE@v9O0Xj?hx{j2@ zG&Xv=h!rQ>ON^`pV*CGEz;iL&!$7BZ+cuqUC7kbJM%l}l4=NRIZyCQVfI zXh*i50>LG!lymIEfcSTo9Im5oD)=)F3(>H>l-#t+vUN6Wjz#o$wX_d8^=D+^ro zsLV_d7elC_BJtkCM4$1KrxK!w-`%s9&hf3_2x;W!PB}a(p6OgY%$_k$P5JM5vm@=j zrR00aIIKc9)aKFHAn#dBH&R_~3|@8XasbqeERmD}i48t~r2f_o@i&3At?jJ+wWXZ;PSG3Ra6vg)J)T+Gp>B4Lg0lY%NXpk6+rsO}0F5 z7_>@DwRg_=_M!Awc9~06w4)taCVL~aNK(W$ngXpdErX|vTX&=lRC&OR$VGhnxh5p? zeOH8MIQE0%dDT~k%7B7R-4HQU&>bf;{?D?+&JpLZ{kt#kW|>?m?TAtXxkrgZ>N{1P ztgPth?OJjgrpG-b0QIWqfon<0twAO`)|akvLtYl!_0EyNG<){vY~tExveg{kc4)UU z=%MR-03q1FE>qG^Us0~jO#|Aoie*oNBoowo^SdDxVZ4~S`(rV*A8Af3z*o#IgwZ)~ zo|2j!6as-UCu4ibW@&@z%)S^X<6C#NOC1L)U|q<-2CTW(opAyEE9nY0Bbs$h4%&^p z|ELJF{JNj6c!l7+-CyEJ%U6EK`FPx+pJ{YZvmJun)+yn_hdXdn*a_Ev^45#q<>Z0` z&V^t6oDlY>KiU;1JR_r_YyBxYj|$RJ%)u`dSnw~I8yYMKC{==!2_%UpZudYWmL}-o zVW2Jk2Oegsy4Cba+gxS3#GS&L02qk4wQdLlN*5SN60^D<*0P-RW}t}ofTsw*2`Ygk zBs-4OWxhMhY5lh8z1nDl>BiX8n}`U{TnpWXSq|EuRr(q3{Q z*&Yrw&GrcBP}^fW75yeUMh+sfvzN(g`BCof+W&1L7xtAhh%;6cCx{9wvHTRi8ATA0 z;KC6nC2SZjYxX%@{9q7`5j5V>!82c{B0vK!f}9}uTXN&C!U`t90W4$!x_&^6ybxOl zFe073UkUhZIOGH)FawQ_TH3st$`8jUtG(x1X8l%X=kFD1ByL#toIN6_JVW?Z-aHO| z1z*Zpy10t6Z`?x&>L5qma}(Mf&BX49M<2w+m*wh9DZjtk=FFwTmrgOi_cG{KMFr;W zT{fEU7EB+Q^OLi3I$MCFVvy6JIWw)ePq9tm{$Ez(@(*Z0pq?#;T#7A7Xk9}QhrZ&Q zp3^&*&b^z)!TCGOr{bN^k4F_0Se%4DyVva^GC>~D0$bZ;z!z-&*~g?}eQt-TiA?S*m?1}Pz1{{h5lW!>h?dYPeZs@+!fc!&|!=x6s zZ_vIE<5l*B!8OCG9N`?ts?r;CJTwX8dYzpvjbFmwtiB$)pJ=yoLOl+4QpUxI2EQJ4 zd%Twecs*e%alo<~cGBC$2`fjYB7sQ1J}-L7=Bx${itp0%$ZX!9MG39|-;O<#(vtf>x@s;x(YYC*w|22%IwS)_ zPez8zF*Tlv^YOU$opH8U!O^6*?Bxndj5{~ibKkU z?7uiBY4qu-8yAk_EMrF*GhfbyonxB1<9tBM?c29%s~PxC&0EuVpMGZ-BN&dk`a1sYSow#40~_ehrL4%`O?O6wAC z5d(W}Q##0~-}YMaMA4PI_mLl#6h{;WD<<#rv9R7-(PAEF?9^}hXP+X0&FEKbXMC%* z-o%yds5P~$lmcg7VL&HcD>ibSB$3_=E`FebDv2loudqd)KBv%GQEt816$x&gizp?P zSvwXZ2+1x*zTpm2Pepd7cV5I{by4h{&yYbMO1^5-QZM6Z!7GlRe}?#>&+dcq`*5Lm zM6=>}H&kEJOqmN$GG*ZoXJl4GrGDB*Sw-(k5c_v z3YkPmBNH0Cws{WA1=q0jORW@P84j*}0QlxpsN#G&KWk@a5~S0IeX1$2fAik1$(GL+ z!F0>+ZQy7x7Z?6mZ}Y`%ys&9ci~9qhp!l85r5(F&$OriYbd|RP#-AacGQ!bLQk(?v{)0!2bvkIMpJaYK(!g*X$TcL;u{QsqFQF3S-Z3i z#{X1ZMD_raRN2?m7b)9w`o9$iI`UTy;mqG_gsn>`Z)zHk1 zod-T2S)-*fL=F<7{fm0I%T0H;<|_%okaqF>pnQ=aHq9@Nk{y9uC<+q}u!>v6im=(6 znmwHG3z9&yz&m+F=(V_^RL1N6c3c>PIpPg0>6CrzJ3N;Jv`%wTo%z2CQH5QZI?(eZ z4F5yF|8jEb{-Eb#==}5Ai8Ijs&mVG2?TT|H;O}Jcy2(2DXA&4`;`zh3m;1kiXeh8+ z&d_k`-E+>4{PtQEECdcT6Ptl1<6Yz)oM-;X`Du&4LX3Cg!QmIqTG~!ezW*67)3^qR z&YYx16@9qi{pu%BAWwP6R=)XK}*LFcxvPC(^~OAUdk>3`^|=$NT|R$iEO%M^U? z5rNM6wA%d;iB&^Ykn^{+zYr=D}mD9bN6yxAwgQ1-A?MSRWFoTs9D&9_9U z)Lp`hj`6ov+v9y8^j0__agVvobd)`Leij%BmC0%HWhs0c3KJ-&lQP7a$YzplS<&Z($g5 zwH6<+?a6m;UXJe)xw32w?Tu@D?;CcFcHa$`8J0X!^m7mn|EP-6D`)C48T6gLlEYJA z%^`1hrqsMnZ`17b&aJkT2jdXjpqSf;9~r?u-(I*++ybh2jgrD${x(HbWprFja6SxW z!d*n*i!N$&+FpQXOm>tx4U3_^dqEzX1SA zfb=RzC(=cl2na}tfP#R4g7gwX?+7RzLg+)Lzjv+g&rDXb&dfP;%HI3> zUAb>Jd|wUNhPmL(A;D4qiJ2$h>iM{p_>bOinNe=p^%SN}VcO*hTyP)26kieHIpjre z5>u!+YkeI&k3>31B$7#FTyPmOU((#smxNzXQ^$@krQG0cW6az1c--T&b~okn&-PP8 za;f`8LhV&jSxbc*c7s_TvIgJlT}_3(h}Gc2SEI~5hs$KX?rkO*U)$9RJ3PqZ0x!U* zgMvtWJ==iMT=F>Mg)d{U(Q;BM&Te)tcDlG-4t9Mb%x_bdM2piwb}EEz2cgQZW19;FzV}Q_ zWe%-)?QisCr&vmnFZ2EVoO4-9ScUqVO|f?wN;it>?l-AI)R-mBmTkM_-Fn%<{N*t@$|J8!I(@Grh;*|5z;00@e3AM4X~_^7vT!Fl?I84qjopuz67LJo z_1ZbU8y%W@9bsbwE+Nsx|LXI|;BU!YAoIvmq;(5TF4S9*;)3_%C(aGXJa0?5OuuE` z;iPpxLD&Mk&O@q&l20gOP~=-e-0$D4YAM*2ZmV*c^e+JRrdNJzpj*3b*`95Y3_Y*J z@$(%_*{~U$-&vknP<+HNYW2m8cBVy=P}+J2xqx!7=%#3kH5xkCgFt zCmMMDW+&C!`7`jVUxCcMJzZoCC`J6bhJl_77A;(-@7@^kdtTZ1R2@z3A5~5rDdEGv z-4bB%^hOWA&Hu*&IN*BjbXH_DNM}o#qotgL5on~sif~D4fK|a9JXWt}L=t`Ti}Qk_{*xm=2n01 z?@7E!!?5*2X$*>{!ddMlm1@Vn|0uXbrdUXaM1oCNqp!mzo86(+8YmiE4eKbjhha{gh~4}3*gJzlaC;jlGgGaAyKjCs zg>UoSm3UgR@J5P1%gg56RY#UpzpcYYq^p6xN|@(4XXp8nUdVvjmxki@16R5!6NbJ` zyRkE#lJVaqfbb9#z_W7yhwHFIZsRkcIXD{Zzrzd7=z1;ISw%T-fm98V{p8TA~ zo?MOQ^Z|-t#%;*#u;e-Le3rDn~lY6<|r;bA#_|N2~UuGtD=# zkKCJ}rVT_zzt#?&*{~J!m-vJ24DxT8^Mz9w39^^z#%p~$ zROw6nV49)8lPv{IKhvjEUjn}TX{9c`uh?jNfXBP?t}VzanX4V#Q$Y|l1(-Wj+m-Um z(dq8Q(O9_Gf59&DV$jZfn`x)$fIdk*vf|N&_)cWjzSHi$LFmK4@R%)Vhn9@ql?RP~ z@J>8%Zs7z?xsd~XthLX$?{G1>Xrxemk!|F)M%>>MjY)spi0U9>ksQ?$m){~I{`#Rg z29+LugDENZjEn%Xdd9-Kpm}{|^G*vis`3%(!6jnZ<*%NAM^UO>i-Ej*wg}qXkXH^K} z^Nm4Tq$(qg->-nI(;qFcm-%hTM5j#iJXeZ9jF{&xEJNJuVY z*6UwEt*miS8N-WzCOZTkGeU3!qLG)1&(AlmF7jk3ZUiOVWcS4ePjZdwS-m4P;ym$2 zJmR>vj~l-4q2=ue<%vnjK=K+$8LkcDv+k{u7l?R3tG6&y!M|&Rd{)?&P|haP%%`f3 zKOCoAb0dsC4c1S_TYdTt>OxpV&IxK3aG{-1eAd`?!%0Y{GfC#ZO7Aqz$f%~hx-3kY z@UO)?N&h5~eW{?=53XJl>`4JbEy_YIPC9IrG|=hYh}~yhWnXz5@GI#0LJ3Dm(kph< z-8EX^V^~$=*m|npe%-`pecM@N4`qM^w7U_Z8Gjo=A7AS(jI0(Z7E; zudx`>Vw6K;{L(I3=yS$gTO@{Q_Y*4pVM9L0)Y|J7BC;*bCw;cYbL14+?cbZ~1^+IB zw7F|}W%?P&v6^Hm zn*zG)Z3+rjz%>OPhZ9U1TstO2TNbopSW2R;UM(ZFRmF(k6)$8mFF#p}!R`gn;BHVU zOwE3wxTCYmiw(V5;>?EkA|>}D@_D-Lq6B%kCEzb|fk>6j0bgyZ^+x+X z$BB#Dug9}mK2#AWFfVO20(wr(c|r=2@3x(zkSDGkx`rbs`Tjf74ShOyc{UCfORpPw zo;NbmZE+~VkH4!oIbQ$W>eTj&Bb3|tr4S04YNl!PS561mk_1NEaq5&&-*9dY^A+do z;XG~wA(GgqLEi(G%xWX|KQn*vAqmb7T}S^^|1rYvSwnI4V&)wK)W3M(^9%!s%Z<0> zCLP{iQsW_BT^_57!Sc?(_t6t5*MkSWtZxs9x<^r15>`TEQ+#LqZr)0<1#N#spL1Hs zwwzjp&9@>`NKflf2cy!iaJ_JT%@quM4Z$Fs=v3;~dvWI;{l=Bj(yMqV2cOv!*b8sA z<(h~n88PDxGyqCw*)?jFyrKKP1@j{Bn)L7`-_xGd5oT~pCIf>$!5I!2$ zPmC`vtk@=+WR@nUW}aMv{C&NIydn11#5)SNPVvt>z2l*ndId|Qnsw7Bao2~Tt6Xl% z)aY4uO*678&77bHXe0j~b)ivm>ACX;`++uxG1imaMn~oxs(n;3BO0O*>D?xDZiYhi7Bca#C6yR_4`D-+Pwj zeRZa!?q;0HUBy|b62(=r6w_Pwhj~AQtk&(W7hun|rUL)qIn&@<*D5Z*%3k4-9-q;= zv3(g%njlW0ygl6Z-S`VQH$ZyrCsTT{I|iN$b^#M)ti2RhI`&$)FE4>=VL+hOALe8u zJRVU?cbHH{x8#-Ywt6SsJ5BjppPL_Z@I!)G?8AlkCanjf@8!l{`1vu95LTMqE4MC_ z`Q0-;uq8NSsr<)9XetHu@=v?H{Bv#>8ENWr3AEP2A@RTTkFuD-kJbI7Ho3icHSQ*i z7wHl7`gZr&Thzi*HhFG5r9@s$36%Tci;+2c z%eTxLe$iC(RVw0IVM+9Ul}_Ne#k=o<+0`e1SPb7o^^_k}`e)RtzA2==NTh3^!YlO& zKBIoh2-&mPV)$M_E;K_727a$VLXhA~a{@pQ$NfboE=@S?_(zLhvf7s9R@>nDbxg&UrZF ze{G!5hv@&c2a?|HL)>o!Is^k{`B9qkHR)C69pS9%A`VpG{t;`-E_3wjid!qI44ktEw^t7?s&_So1eR*g zNFV&IPA%@8N_E<8PZMTn8)i9~ymp-0U3`$8LEkmuz9y6ZIa5tUIY27eh0<_Ndi+s^6-J63Zw^T#}SR<99(}ysB!jrfTqbbYHT~H-fr@G>2SPk2!FeX2v#svcQ!##k&sQ`o-DEaI5&%ySNO&1_m8(5eiyI)y((l zVn>Wp?XTzh(lL*NboJo-@LP7%x4S&);Xx?_o6a$9ihRmDs$|#hkw-z33WFk7V}u!x zqCThi0u-(6z-AYWRTV&Jc6xzwVwsPN`?Vt`b;R zkXk>J)tsnTzdqT+$I6xBJ{6>tDRG#dMm$>LO0sbF?X&KqF56^M8KXL%&i%-OR0HJp z8_M(IIk?#WGO-vo-byHwK3Ws}vQ&&)orC-7rW9{h{T`}O;C~OtNKv?$J-L{Vf065D zkkM*TuSB^+c!J%hxe%)JTe3bXY2meENUBtlz|!EM=Nz1%9^qqiZR))^u4Z+lc(E7@ z>A9neC|ut0$6TwVD+LZfeZIH0QF2e(4SHY&PF+iLhQ5nIqc(pB8R2DQQ=zZPioTce#zx; z8G}$>!hWw>7Nd?vLO%i_-^}p6YCs_#JA9XaihU=q3d4uenu}tLK7uapmpr3&aF803 zYOV63SV3Jpo_rkctP9-i+`u}6k1&WJ)lM7~x59VEPOWpG(4*QTvjJU(AG6NcS^1s* zHNYUwD=NpY+D)d$>scFe!&{>KQB_J?YD{o8?ZJ8-=b&n8jo&X6{68#kpYlng2K`v* z6Xv)|F9kjcya*x=6?8cxh+T9;LABBk>_;Yim$<$;B!s7Q`W}|+5NlM?@KMATZeR`5 zm?YJ6EUUQcd{AcOQ&Kl8eb>3ucx8gyrA zRz#|(?6Rqlb|FCq9=w_w;!=dt!)dECX~v}X_7PWFu`YwFq#)~y{t)APc;Qe*SB|X< zfkgg1@L=}kpdNHf;8I>ZPH~B!;G8c46yelh^M=%+4L5V)fm33Rw_9s!Sg5o#=%9md zg`%-nu@~0!CPI6nbmPQ#yz9mM`F~x_vm$kw1V*e#Ykf&dLOIokF7)GRu4pG81;vK- z@IAC!pr;#FF+C1cl!%0z>F0YU-&5W<{0`E5hoxSZ6Lh?U1YI}ddpwB-M&sF>)Kw! z2nma2(ETgq72P zRb)YCK!U+OY-mRth?;u5HlN4K7UQ9X^J3}=WuwNJ#P6EqJd3{4*%ok5pN4r(P3QU%BP6IZS&`jlndE7ePKcC5Xxe@y;KyMn5vW@_ z*HEtldG=xqW6{U&CS|>4_e4AOg_PX48CAM;IqKYHF~60^sBB_s22-wE%{<@5I^SNO zqaW%O5>OAfyYo9Sl(pR{P>Gv=Q=qYmKL0Xw{`1<0b9jFh^DslN8^sEfJCC9lW1%SP0}TC%zh3%!p>}Fguae-@uycf(kLMq?_sz3 z#V3j9@#n~@Ydq$)56xa*;BUYUtxwQ~#uoB3O1=B8?L?o9n(!PQppbr^AxN|{-<=Yt zt+7rpt`;GMpqI3vvY~`=_3PUixs6xJaEN3P_oE@O^$+D$X zf6ZkwfobPr<+j zBDWaIE?WfBtZs{{{czE@uWNRz`shdjyy7xbTC8o?h--nTwKVWj-wb}i>|fdg`_;;? zxwCv&w2x*dE5Pa8a|^j{^BfI{ex1*bqMG12NTEg)a5i@qxlP^RNUl}ET~5ufTc~s| zvazTC$+gRbens(1PCZHPrwms&oXXi4n-zBCZE!%uZkaO8jmtC$a`FeL|GvY?h5O>5 z$*seAVv$rWibGQe{81%bRQjSgfQ@iEoh@ApW{&dsb56N6!*k(}@vFe2@tVZys-27q z|CJPv6>3eTohjX<_O^mI=rG>B-e}=4iIyA~Nml(Gv*N;p$&Rpx$qiB!v8cHu$G>M9 zWIKXqoNi*;=890*fDjo*$zPpeyXOuVsjY=h{vw-DJBaFyFXB4>2Y2+iI|2{6dPnW% zkwi)L@<6!A944(-_;9WBP6u;_hd_P&BU6y#{Z2W?y1S2gj3_dGA-u&V{M8$_`nCcV z0*rsYrZQ*zB3P3+$cKs&kB;yXp)=QLVqMg~ok|N6 zG@Fljem=cY|cyzo9>yyZ)1IO5=v zN1vY34(4A0!-?1|%Oss=(oHNgBHJ6VE&kT##+dZsrgz0Kcf_T7)Y{ueYiJ&lgz zwHj^|-eNp-0qy{k*DvX;sct%bR!gdA+vV%2yYnY@vg5%&F7q!b%L(DFYu}Eb{G=L<7V#}R>)Nf)Lj)79 z9F`NZ&LJ8;9+?U!m`eVoC{*`e>4ki^-zK%aob{Y(?%-Q@2n#3fhx`JAxVdLz{EL%A zD65r+qNL35^kgq3)?I}cZ-e)oO~!r@TZ$Aj0F@&&*8y)qfscs8-xalG|01oKx7WRA zyw1zRwKNiFM2hfEF9FXnKEm~m_fFa)x6gRgVX*s0p^k0q2Z&Lg>o@;EgWjZ`UgFR? zJtCTtQsS)YmXkN1WO;2#wZX>ZqP>zGCz*iwmh!({=Z)d-MOwBtr z55jMF`4LN&p#$4M+I@M|h$-l^{8Zyj_7VTMl(vGEMi#skdb^3`l<(C7r{b^p{oZ1O zGpQ$F5pkR?G>&6RxjVri9YynjLTDe~Q?kL=34NcY4P3SFO5KNr8qMGn5)=+%AUdn; zY0!66fKQ;zS$V_VT9AF27G?x|BG#V8QIHMajtK9Dk;U*Vz>$!NkTNX;RJ_A zS1vJMO;<7eY-`g&_hgSYH~#coCYno0EXcQs+s>+!p~6-G)#3+R*D(FwC!S#Ta&iDq z^X}@sc`N+wt5s-)fhnx;2mJXdG&HvKXz}}#9Hvqw$44aLd^)?Mp@>u0wWg@;txqX9 zkE4%E>$BysH+J9N<$JfkdgH!bJwGJY^->ut{&LzS*8EW3jS+bD+~HohLGTD>&p!Ig zA?5?mSEwzAe_w`rps)1&yg=YQe?+Fy?=NqV+$GRfIXbmTT}hH^rFYjDWSH z-pdD&#(FY1)E&5}AbZ>zTNW)D0(2Y_`+SJ^7OMdfrjzn$XD6wC%^6p0*5W?9o4}wgy^0Vq zYLt`uBeCa4KK&_o2@`*{BJNoc&h$Ol$Jz$eXaPPeEwlpDTNY0k2z-$;Q}t4}0725I zR2mRW&NY8LDVe8NNd7$fy?Hlwi{P@OngUDD4Xc&{vQIpH*ELm<&xV)Zf;>JN%` z>ycI4&2fZ)BbRKZIU_F$ld&yf;1}+-hd(@qq!HCjh=;RDAEiV8qAqktc>=(LI*ecY zX;_T+jltMo>NB_r%#g9Et$xn8*-&ZP(w)s>kGqkhI(B;2)dEmC76vL=X0lCH!iZ?w zaMBoP)Cb!Ch0f4GJs%z;Mjwtt$U4cycq?20Ul30L%I!oYY~=8?e-AEnRINSasQ&CJ z!vf*i(dbGBSjKeYfHJ9j;8t0EZYW`*Ip1bfy-TYIu!M?r2DkIo-H!*!Q=2idgcy0T zP`z6*e~FkwmpzC>w*c$3jD2G|vlU*K`@f#P0%tmzWJwjEK70jEYc^oU82d;b{NZYR zkHCcB0vNy^xFTQ#+~NF0)F_`qs>1TRj^l>miXg&-WS|i#UQcr>qqR0M%ogrTt$#r0 z7TmuTpqcDW?JNWu9A7g}PRT-hjJ)|4_?_C$|JauuXPw1_3%oS9L=&h?ftPBhp3`d} zEB$O25j_uj^x-%$KnbYd_c}BD^Qnr*}4dCP0Dm(vxYzR0WkWC`Xz)0%P4Enm> zK5waXAdF`Jh0}xNlqUXh5c@xiZ1OEuO`ZDPh}t|sJ~<@ccv1Hx`0nxqyw${>fZPI$ z!8wA#u_*tQAIFFa&`)`qprj@F;>|Q+ViHjY{OQhc9eW914g74S%&>!vC?c#R+s?Og zUYZb{ljrST9{q2pjjkg98yV&L_5>zBR$V3;(&!QFMZ53> zxUi0_fJZ9i8Qu@@9y+9jE^v=d!mY5eErp$ZlgK(?qhaY!Fkuqh^N!N4C2`D=O}%UO zoep|es|GI4fxV&M?_1Zvvq-)FU{*6Tz|^@DDDKfNGSAZD4>4bJ{qWcE4T9K!Nx)jA z#~}LN$2#qMK&}~E{n{L2Ib)T8XfoozX})p9jj97d9GE_-fbrpldaOm&>3po;X{hc0 zZM_uR>VHG5<_yt^@|x9;jSW{I30Fd68)QhPQ)a~=wfJRA_%uPBnb9U$f9+)hqZYp< ze3meG0_n*9a{_Y*?`5L~hn1Zgyv$U%+vG@tM^dzA6HsIDaked?ehZCSUD`<9Y_TH* z*wRoWyOZp8QcmXxIt-|cxw6NUx>R?rvo;Kl@{P1J50&g2!>(KrV!ukfO5zK3vH-1W zq@mky$FMy8Qz$Go`lmUYa4dWUnk=Bivhx;$SgKD#GIJ1L9K=1lyTovi+)IZ}wKoE0 ziS~z8TM#j(mVEujI~EZRgt#1Y3I}GH2%{(eHtm%lbHw`&B9d$hETMsI)n~oyuu-}t zmIA^eoBT_iD9AHFLcs=$WD40e5OHVPUMS& zfGeP83{UdCsK1@Ec%O?KKFdB%cqQO)Ww;08nA8s$WfFpW06)*Bj+iEpM&MCX#1^^^ z_;H+B0rep9S!mJl#P#RIgjZA`hWPjF8y1Oq>vxg)76`%gf8 zPoALPwn6tK3XffMEC;6F%la&@4rw;!5389iy*(rG&~x?I^U)x^|ntOMpM%`{1* z2HLdQzZ2IDElKIJzP)$Y6tA`8P|M4<^-T)L|MD_Z@BeGP%o$G}hx`9N(h{p6>;5CD z38<)`F?d4f@n7dA2x_~N`iF&=P{ZtXzkL#g!2A#fX`$>8$Tq z_x1?qev(L=cT`;Y1I?5x*_%CIC;6k(g(4Z+=7w&x(f`kS^H}@ATlsVWHnMlob%itr z0o}xYSf0~=jaJI|_eS0)`0|Ejfa~A?9TW1Ti7HbgP?0ou^^+mZ?K8f2B$R9+is4OXT}NIMNaO$h zW)f0jM^f;93{Ee4WE5OlRy3dx)c*GU7O<|n7VY=r0|e{FfYuv-bl`BjDy`rb1A~9DVce@^FHOkv#k<#F@B5yc>VXsEFUA4l z$2VMQ9$ruHg;iMoxT^Sw4IxYsuK!YXsrGkMJ-Lq0UqM|XJkk@ z4qf&^Ed5Z_5b1zFEsh6Fs@wtY zA3ki{(o8-`OM;T^Zs1*O30qKxDYRKo>TU8oEJvy;JuX4Sx&s)aoriwvGeoz;s$rxe z_)zwN{wKhW5C?s;x-qmFs-+nZD3W%*DzT$d<-fem z_=*~@cFM0aV}}qUH0~>%58BX>A$7qF$AH7ya z85-;X+J2Y37{mzk_uV+B+u3<|MDX8-GtKMmmnV=bF%oOr=LE57RnABVmmDnlvGSnE zK6Lp$pCg__6%$4u+omHMwk#Vnda0j?KCgSxh+E_jOcSbUYh%RUHdO&=Lcc%m39Yhx zz$9ug`}U;N*LeQ-MrLM!S7)$Z6J}a<6DkO|5lTBT{ApN9sy1HN(*2r zY)^!Q70dYdlnbNYp_m4l)U=Vr5}ng{E5B*Y@eF{=EL6T**x-BNak-QP?DJ<5QsM5k zyrqc{`M2Xp2ZsVH!rY>E(d{$z1bidXHE7GeyuC(*YydhVF}^l{Jjxg!i}~!-?uJ*k zGLxzbbrxM*Cl67d0<8%QTTbti|u|zCp0v9p^9)0{^ zre_F!)@671LM8>k&pGI1^qhM+DeL6OG#0W8CoXKILMyGsJb#5zBU(Bg@X$wxNDLZ3 z+Joqaq(Mz!CX>ikfCX7!RRDZ#QY@~n@h4#&TF%`FDO<4lBGtJ`s1V!;c%Yq4q=G0v zZ7-u0?IxT*JB3>$nF@i%Kn}6~Y;+y|58`{>x%wEf1?w$=e`RoR-t>^CR4eE(brhF2 zSMH0n$h7>2Sxr72>NO59+1yjf#}r8QnpUK!EeyRuhidmYTI3tPllv)Na&~NbgQy*t zwQxX?Zi(-gtG}I@cW6sH1}nv&i31N@$Xe#8gxnvO$_27w-s6Ablq?-laIY~mk+m)p zI#La|g|NlBTk*#6gE~NMQ6eFjV|Sw^M5(ku?ceCVcDO7Nh1k1p-!?`iVVKqkT@bk+ zj!dd}QTIq2bin7wg@SZ;luca3)Yzy?x~y}k6L~$b8$K^|xVJEr_(?ky!*Q;}O|rkC znYpyop1le>gIFu&ht-xZAJ#u5(iBTA@iDcpKB{_l`+QQbRV2lW=-<>3V@0N+UA#8o za1t;%`0ji;cFYpSBSfW~tA%IBIp->Rx)dEjv_kV?EmV!2=|`?ic|zhB{r?k#LOq;egz%G?W)uGZD@OH z21fan%)eVksHYCWzw?{&?7|=6YTn5@%u|rQEG%6rRkMu z{#50aywp5#KjBt@MA=6Up{n#xB;|JIYkr@e%yVa2eT!uccHq^V!$1Sg`MsU+Ge!x@{#Wc; zY*7+b=6!Sl72^Tl`=&Zy?|3P`SJpcqLFYEnkHI3ma9h!l6GA(DjcErt2IVy90Tlsb zz^78?%)#QgFfYg6QBr(DG5j$hAM*7L^nd*7UX{ePXDtx@nt$B6_VW=Av02S zO#G;(t$(-gi)}3k$p`!?0Dik&=BcS%*=Lx;T{PV6QR|G-Q}S*U<&UPf4?+-QtC+AI z0R~a%Y8rJ-rw-=CVU&}nb>-r7V-zw-hym5ey_msYE-$wF(cxa^;PZQ6O2#+Lo1HjO zbE(uYHzq!IAbSrSTasftc`NlgT0q|V8u5i(2Y;un@6~+-Jq&{qOqad}yeOxm3%#;M zz7Q0Do9d(e4bbJ8bF^<|RX~8|%j-k9)owxj(`$fl!tKbPvwYM`II2<9^kWF_wJbPR zn;Z*& zRzb`CUbeCl;d3a%N{(GXJQNXn_88}43pryCR*9;DQ?=>iagQWG$+IU?TR~xJF^2;s z=7YtVwo6Y0?-mk=wdRD{Ip?p$c6FY+j@5Vj+NxRArkd0elMWEQWcM~Hjry42>2aQb z(?SyMC_-RCs5au%-9V$IegE`d-k{_8zcNY!3_yl`+4);hix$VCMZG}VC zMERs#V)!QqBM}~{-JG3fc=I3gPbyTp9J|p0eYwp__w{W)Ssj!wj&D7TzCpvkQIMdhJ^WVv z0c~e(H5=smU;eVp^Yc-UbTA%yAC9(cN-=<#jTLj8xXMSCNf>;gVtn+A=lOLS0sA^Z zUX@2;gb@4~V6cYX`T(VdUT+en-Sn?ZL{7+noTMZ`>`NlJ5N%72hd`!AO74M5XKv)Q zp;U|{5cKrN|D622(soQUxOipft+WhlK};{}p>%N9Of@(+Pog1v6NYTf=eC2w)u7Y= z9N*!ur;$cLp2hjfIUndk!OY#{+kB{b_%6crGQM*p0GZA|baby;t!?_?j^P zhXkAKdCrQ?ycX5$JIxQeFOB|T?p4p0>37Kxr3sKR`W7|8M*O(IMF`+@``~0pyQsk7 zkt}aG$JM^E!UN;KAz`b&h_{LvA`Wd+;-mh|)zo|pC+C8zV*`A(_wP|5?4T~Zstt2o zR?kFc;T4qdLR`&~N6-0NHw>BofuQJIP8Dl_kI68QrhbV03$S&-;bxFzH)2-|N`Dku zF-37%Gld%M9F)8ayl~cDBUK5%vE#gWNsz%}Y(xFFc_13Yxk(j8SXH3HE zKp6N6B_4PBHwLerb}KeWm4dpx>C**M7D7!$i_%F^d9So^%Y!`gstu$wm_va$KKt_w z+;V(Ia~`6xInq_PQQNQI>^7e_oU{bn>0I~~w7CLU?@3yHJl$PBbw0q=*wMDx@6mF8 z9Cu)(cNzrh@&v_)f*%u#G~|WE`Mib6Qb{$~tYIa=67nZbRb~3ZM*JYhJ$CIH7;c4s z{Jie7B-6JbFc?5d>7`t{Rsv9fnEng;k(Pzm6CkRmFfY(3AD~pd)gp;*5jn zUUQqc@RT$HEnVVx-Ji+>^RX`P;)7R zE__^P?(`%@aiAKy@*uVZ+Jmze*DsIrVDLU&dVBVerc(^<#9rLbAjOz*X&$s{J$|eH zdQ5vrpfXeb+hVQnuP=^Y@AIh#Lbz3!WG7JTTJbzE?i*CQuf7Bi3IzS@(0h)6fKwVu z%%{wqpBY!Me+Dz#X)Rd~z!>O`Xqcx<2|ibGgzu(zZ4>hQsdrG`&^dN^oV5K^b}5aI z4G4=`S9}K&Pb_?QzGFTl%hZRNkP8Jc><>*FGj5WT9dOxwc-a}~z5(5VuFnXqLzXvm zR}o|2zmLcs@V^D8K*=^Mk`*^fuImLAy-4hT;omZO%Ypv_Y$^Zk&i;Qf7Wz}Lfyw!t zsSdoP`GYiyuOw{EgL=-JZ9iKrt(~2b(?uQp*4KBEl`}_CZzM#9Q^(MIx8>Q!HZ3fz zrPMf{mSR3oTgINvHxoar2a#keJ|yTvsH;znJ-$Ns4&9TC@kY^;>d_&P`r$=kFSu6` z@AOuptr=dU(nC-OXf2Wsbv4^?ufQ&iJXiU_6BIA^SQDFXT|nhUdy~K1z&nK; zX8*?@bS&qljd#DFBXH(BoT&97`GB5D1HwZX)5W)X>Z_%=dwLpGG&{tSgqyFxu$KB53b#pPtllsX{ zWlp8v{qA-OEe}QD7Q) zv?O#z|TC6L9B`UcA}R>pI%t8;*bCBc@ib22hxzjbwvhfJ#? zSgw%h@Mw5G+%&*NspY|>@r;BAb?TnS*K6|mr>}4;<>%gUzDzDmO;a7p%7-vEUS#lNhwl*I zK6m4L`-Xu(kM~NcZb}i8R!`Wy|Rnd*uXw>iq%36r;|2hQL+oTT6xcW+cxz zgZs)|3E{nv4ljxszb&uetuPI`@Sl2$>a_+4Ia7H)hVT|^A7%26?wUY_urc4~-RD=Z z$Bpl2_@yL5*7}W=8+5wdqZ2=y`#oMv0!AydC{#bk%P=st?izETB5A@rJJ>Hclr!Ld ztSKiQpubhU{wRRhx}fZG@XsMoporJ5j?&ZyoVU#Y%Vl1JXBqxud-qG|P^YJ-PgEt& zNKgBGY#_`f@M|4@Q@oc7-j9$xmALTn4@*^^2{X~>A}+w>mYD1q!ITl%BRTr)JRzy@ z&?h2vg$Kez5FDI$^t%8f6lgian|8y$|6MvC+x*Ft%MGyhAXaQwpwK;{uu3dCJ6VVv zW>o=vJ{Xx5`;PrLL-jK3BZc5OHt-zcJ*$n>S4Mz#+cNSSuw#%ub=apQ1n(D@3~C8f zKQsMrE-TzIoq*^4!5t=ptAUsRp)~Su|8ESr#5%C??#$*fz2>VA>82~A3srd7fAMbR z1%km6OJWGK&T$qDHDvpo(Y5!t&&gM(U{-5ZvVBP6s#fHM=xFSjLb{~B^RMhOp8 z14?amHcz2V_c4@uYdz-F_XqjUq(d`0@l8+dx@;3)Y=fAq3X4|(9+)Lf%95}8@gN1K zl-=}hf||kQcOUui153?Oa9V22hNqN?>mf=jqKj3KFbywud%7jR(xP++u|_i#uV?c-t;=K<>&4Wf^tL?$#}-P1@BDI z`NB?*65xBEd2GsqG&;G;|Dh`GSPrcq4X~w%bn$RfVAe8|m&qaK5Z{!Rlb~^tyWeg$ z>wUC3{dY(7UwYD~WxV-npk{l{72M1pT7(|P$-(KHKvwMtc=pud$kGXCo=%AuHffoX z*C0JVi7enbE5aibG1h@CWGua83V3gV`tD`I$9Evpo4vDc&%_@_R19Ga&6)k3kPuU* ztpFNzrv0vZp4y%BD4cRA<4Q#6x?$JZMCYhWjzGW&q!h%=ljn&Xi!v)M3_q zH6A}I*7xS;4@7#hkum&I5MiCYn$9lH+IL0j3i8mgf~DirV!O-1EXSnb3|ZIlW)G(*s}y- z085unW8-$oo0EvA-454^q}4~-RC9mvScy!jtK2>R@lR^bVT4I(nH`#{$!S3lspjO;8*ivq4#iqw}Z@th8Av#9Hn%aTM6&O#fTx#zC*J?hPKQoMpFLUe2};2 z;RG6&l4?hsx_!1o9;)O*+pfrdj*(mNVo+~NsTkCriVJ^1 zKw84pl2DV-KY3a1q+t!&L?)us4$KmqB|v>Zi(bl8I>GZBHdBSfAIBW2l`&#&bj0)0uhsN_IpRy%s0{--U zuR`UpEVhO`r4+D8Z9ZI+4kohOJe|IPMy~xBY7R(y?4fzP)ic&$HSRw9P@R(aTBDlz zb^sH?261cpj?{LpU?=iVeCPd-pnqJtRLuTtlJX2e|7$R&QL(A_NP2}2<%oL|%D|7h z-FvRnZ0ah(u{ftA%ksST8YZX2s*Q6uBH+buq@?-hJTT6?!JDIUHc)rHv%LP(ZcAz2 z5qLL#vWDSQxlMYeHqG#2Qu+Vk={&=d{KLNQ%8|IT+=6DMWo}c;L1k$TzT8L6RCgie zqV4=GU5!#btmgH)YmZvkrAr|q>^?Q;stCNowQ1B-p?5n=6q<555FoHC#iyga)SSLa z{|b}vZvh0sYkc#MUWY{ss|S9Lk*;;d>4@%jn|FKhVC4xqTAuk5AD-L#bbSsA(n8zkz@+m~yo85xD2#I6FQbd$-i z?ihWdZ0o%47p$J4o}ftb^I7_&4Y@@jEudxEloVDLMMD7sWKnyy+bb}N=+%{Nf!LH^ z$u+9Nw&BL~dfj$ul{Ou{Zju6e_?NI;1DUf$5{&sgzd@>sFZ2*5oSU;-iIhk$BYb7iiS9-&#Pi@b zn5TOsCG|$Y(nU3=HTgjKN>?~*dbh?_&Wc5k8$`)288sY1D7;k`+cKmG8ydwsIxebS z64XfM?1+k#qo&BA_Wfm_>Mp%rZVnU9LDroc%u+z``Qs!0{!|fwQ*t;LVfT3(KThkz&@_LQ^U% zCcXwr;D6EU-|Q3TumkL|y;Oe(^~nEQIj~IU-~=DJ-<KX50VMerWI7}|QMi&Mg8fVV*UE?5t2|E#kk7jiPdK=BTNEL(rl) zd+4`V)|cArQJC1r9{INDBNDCT_j!d8w*$E(VUTQ+^aTrgb8285hcr(vU#ewA;>%!N zvTe9G|4siTW3MxtPVEK&-AnzYKvCC;gXfugkV_qP>a!ixfsoCC|9mbIoyLm7@~5b) z{4TFuy(281w-P@7`f*B*$1MjvpW-X3`u%pQgb4e8<|$;%iYTWnsM!A=_b%&s58e(! zNbQZsx+e44hAC1`%Tlp53WH%b<=EeE9c-tM17nXi6q})JeE06WD<6!Tc9Ydsalgca zdBJI8Eeo@*R7so=kc;;Q8` zf%B18ON2l4sx7B)IJj*@Te~ZNyqpp4AtE$(@pC>M9C0xzFdZz~s;~5nX(~qhzhcTk z(7kBsdda2>zwIMKIA-lL1@reGIFZYZM!qJZlXQnC%Gg zzOVm~xpiQ#~_fBH-FdOcscPtT#nlsGPRNv8H=37g`L!ub9X{4WjLpd#cT<`K#d8-5ki#N zVmN&O-{#NP-P|D2!v|R8z4ybA+1^BTiB0W-<6-Cq=b@6(!3Q_v^TFwh*I0ojnXHYx z=OgAT?=@Z^+epf_ zXLO=%Ue2t{@JnEjZvjT5UTc$!k7rQhqjVOWyI4;nN2doy1s#+8+F9~9`*c}1N~Hfb z!?$ts$iBM99{VKWZ6KU=>4UWL86ZBWJQ66>jOW6(ky`V<;oAOoE$oD4-Kqt^i%_v5 zC3X})of~qaVix(hL;~5O_dF{^8>@v%@TKSQv*?9pUU6Rf*6M1jP`GHG3RMDXtem_1 zt3Ykj#BqO4X$(Y^JN555DlC-c^+|&U)=MB8`oQ#>-&pmXm1P#utr0~r_WXLeoT&Q% zd2Wxq7s)EaTcDC-HzVJK%zDjXWGLJ%_f~%WBrB9|r5TjjL@!nSHRLOyDta`2PwrIu zhqPZ<^q>HT&xBj*^0#BkVWM-}p9piEdQSGGm~G1WM2vjG?g6<|S$(&2Qs!ac7oC@b zgBK4W@v?e9PsVv8-T)z~T70Hg?*#_CPKusILiN|v4WkN{sbeCD&UVvzMkgj3V0pvw z^`0b+N6*)T!a;=C&_hF<{|AV(!|r8{L8(;7ZPZRiKhlh*SqTl+ZCirmAU~X#q=tQG zO#2|-N?i<2g+TzR(ms8o$^M4spaJJ&#*pM6aYTIj1<5DE7<)J5#aX<1PQxm_uWw%x zJgExMo&`??NlcoPc1mT%1o3v%Px*gM;^W118t6lO(yD%)Wp-&xQhlVn#FYk4SUd5c zhtW5$e%n%>_{2E4*Y*&pPWjWj?&F>Ij&Ji%6ZpcKdsJAw&-<$;$)dRFSI1!DCU?%- zEIBL0te20D_u&H72Q7IwVe|5I+>59@ z4S|EaHm&~CFCad}9v?$1F)umaJ`*HUKzm@82@5bbTClXU94n_Z-4CI7%q`vC}1?Q({{Ta z_hT$*!@jFB^Z01s5f1ZkSJwXze^d0XiN4!%KPOLrqn^#HomX}gasyF7q`+-CB2X${ z3+sHIC%TV$$-EduM)EA%CN;vwuv%9HJ3dT39{2CO8LC*;y-tdTZcd)J@kMW)LHgyR z)h;l@diU4D$I>(F8xzN%7K%F&O}A$Y{1tk`f~qKZy;ta`cuUz&;3>&{=t(;sOn^J5 z!Ln6soNZKNN%nU!ous*6@o}~ssq16Dc7ERh$?F_*IXZiNrUk5V?W?sYHhF_x5D*}CQPwJ5h^9yF0ImdLs21p*Bjje7T zd4&&)G!!opQzPumiDbX2L%RKv=mw1Yl(|6<8&5A@kSb9ZY&NzD_Tn&x%)!0`l{)x# z!i%Kp)Vb>?R$VGQ;+_!0a7eJ8{$Jk!%gfp{b)HO$D4CrWX9mB`N`p1&Nsvi%dGATURtkmb1J!aJw>pmh%E zCESumUm^5Axop$pOFZ`A+#}8IcoWx9ZQU9- z3T<;FDy1cmGnB5Eu#RT4i-2VH_BS_&>A6B=0<_wS=V4I5t7Yjl&%UeckjZ{IUYOm1BIuWn^{?EPL!Lt%b_^jmb(&sW z?-EhAtoAG5y4t}g?FuChsfkDes88;Ifr!iFlmP!+%AE|r?CJcu#BP+_JrjD_C_v4U ziJ-#8krJ+dL{E(&{~-tM&aaGS?*mCti}SGCzPqC6uJ`9-tzk2Ck|47*A zaFI!CA&_QT6*HnE23bh8W>95y_UIRSB4C=)q2Dj8;Mzp@|{E* zgD(qn`o$>XldlK6gx-$|UwjAq66gB##X=n}T6V)ec+$n_d=sgxEiCm)FsVYLzIW?q zIibHdn-wT`C`K(}ZykzItrq7pcia$B7ZeeGe5E_boCZuFUpyZnKlM7~U- zC=XNZV!`?U$A*^ zj*{RAL$=8qh&*g7{w9Cv&jfGTmh0EK1@~PaVM4>(3o2D${ zlLI>Z#ksE3~h(?P5RWKq7`fO%wU@9TkKLq|6UkYG^49RcYd@vFwcw(Y}GAW zSUF*oe7l%$ixoqARYEAAr+?!QHl7e_6ctb`K;_~+dZrYJb}P0R)_W(@RLu{yCHq+O z6;R8%vq(klrq${T++d;{Y-ctNmmwJsjt$}20MhF$g*TA+|uwmc) zR=X=Pg279OiHUJMIKr7G07>iWu@&(W|M8K5BD^PaKfG)9l_igG_&6lYSUdKdYv}QD zQ*Rc>H3=c{V(5+r2jJ=9KbbR!95rrHV;nErQCoJ;4tvf1o9BDqW43^1jLsM+p0A=` z!aN37c?o)Ur)EsvlfEbNKP+_)@O)Tj)0Ru-Xk|iCAOA^O{4*{Mata z7um53O#xki-uy@U;dap#Nq>fzv%3RT_t1mLz>b@lC5LIy9NrXt*x=9>LE^G5Q=_aLvZ73#P2>se>)tBSqPBk6G z)6mVu9J1v(j;iavDY8M4I*9^fG+Q)4yn!l(L&}W&7_35WGcBfC^Q?N{C-8XnW_I)T zHJvWY-R^g5DDY+Xr(^|vEf2AfOJkVHRLnI8PX|DokrM5P?hTO})}Qy^P?m0S!;!&y z?r);(_PWsPRoYjklqavcUuv=y@E#A@ADT2@aCCP3KK0qh=j{kt!aJV7JRKZhup}#s z;WyCtwXa?d4KjA97-xyCG;n0h_4KdNzan?Drd6s=emRe*`xZII3!|8ly8STWA456h zlVlONru7^pH34>vxd>Yba>K*!mX!?6hsUw~hjJ|Tu30`W;rwqr)`zcn?^bM4nP!!k z7IW%FBkneo@(DPbOyJu473GXJa^J#*CUti;IZYj@0%?qUumPugM)3{m`<0k;+_QO4 zU3E8azB8HPKFQ732y~2LTvOLi9+PB;oStsQOn%vS7_J7>y1 zw zz#aWkLC=I4)q%^&heWrOcSqY{Cux}}b;b4e-xjuT8k8-#I#r%SgT-#m@7PX?pK~)&^hi`-U;ziTbytuC?w%){CJo;PYGgwq&7Eld`z8<>^~_n@V5%i zMwI$<^orwo7qdu=Pxgzi)AhgM#Pw$(`zcbMn%lBF_$<=%cf=)$<~bw%M5YUCfzE=OnkxbbZV-lG8*;?hwwAZnM5VSRezm^({x=)k zd@jYFQH2904NWKYm1o-08)85}(GJ_>4<-jKpU})yeTr9nEB`gef(+CN{rOeH+#8eg zFO zc8-<(*;!9M9Rtng?-rMOd5vuSgf^WwJ|5=Zw1P`J`COtP9*6R-#?QXtEE?*Y_Ub7D zrQSx&bS?@af;1-i}1kRsHE}E%sjEh_E<34+tlAQ+VS!NrFBNkCI)D zY!wWuYC1X*%*r0PJhK3c<`%BWd5t%sYSu5iU@OE?4W#$koT5ze$>FT*EVGN}_dfuQxYX zVB|6M_j|*$k~?O>(KV$t=tu0u!-|8Fdlj-;pn|c>L##|2al>7vu;r}n&XeSLl3Emn zM0MI`Ks(Eg)*>0+@lgrgVW-}7m?%QfSC1Gyg#2-t9pBDN%aO{XE#7B;Tv@)SuRJ-g zTf>zOkJ`ECTXxYxAv#lUp% zV8@u*fou`yg8xdnf3I)hi1e_xbjc1Dp_?|v>B{$HK-wfucBxv0SI`Vt96n$AGsCs} zo)-q!Woqq-dCLIoclpAReeDSA!IQmZSt>>-7?)0Ybp zJ-CldqOs_w+ssZG93o1QxH&oxK`?rHtwl6 zPtV4XzfGlELW~H(gK(T&bz=a!E+-Baz^W9Z*QwX^o+GkAJ zBwv>^-9h1qdJnLMUKJN!1G)%21czkuBsABK=LL!jW1hnKHTV6&gRqK+y6&vqr11U3rY*}d3Y(0 z=G;B}VfO-RC+s79GaH#{31~1*kGi{u+P)7NA?Vsm&b4ys=anHK>#4-0ntf$A+Z1h> zX#N3Ho1)t1m6qiA5()9YyZhUHMnYvrt*Ya<>($`hclNxk0G-VTw7Od{QoYJ{56Fo> zm%93IxGlSS+evHBR2G2}JYP3ndm_Bnu<}lNxX7^btu9vE%&+_$yLj@KF`X-SCR%e+ z+y`{UokVZys2x7PXKTV|{CcmR(Ft_=k8%c&+{+y;e{VVqi*|KWX?s(d_fuRtdQ2Mm zlba_QQPaYukHt1R#1i@IS`c2CGbaJ2gLI3iVG?vpGC=^%EK7`u50ShiIy-XL;rz5vTP=)fMVe(F?ixR)`EEUFwar_E~6-?hfd5Du;_et=iCo>76o*VR+^`{kVhk&IMY7Kx26hd( zFpA;tu%MTsPe1Q_BQvtM-TF1;T!0a!Zb0nP3CRFIrXr(d0f<++kL;T13Dj)8($Q1c zL&?~`a74Al+MyzsE84M>$2ZX|nr`TzJobrLLJj zQcBI$guIrER2Zx{zjUHS#$gots4#9uj;ffsW9viKox#Ou>MgRjJR4`DV`~ChCQlTW zPHHnQ^KmW)Glh$jWqT}uV@qOK0(8Q55#WYAm7bh=iEB8lXD8^__;qo8|9fOv+C={L z=wxEJlRw3Ea`uG4BC<9iGWyn&WX!=feo21c9^unh-T?>Vx5Z zW%?cbSFj#88TN52RUq_>g}n} z)9CDI_akw-B;Wr|&K`Gxw9JVKhjseVpy(sZGS0_7x_S0dF26B6mExH33lMV`n~*demz^x zHfQ*1(r3=eoV+OC9?oM>adE~Lw-mMh@SOvBuz!fCH1p$R;RE?c4`d`v4WsbY+8QJ~ z?2<08PG3Xk^wy`azj8#)h9AilNnS0Y;xvWOrJm5>#eQniPUOPQso0B;vDVin!bQL_ zg7$Kj9Hc2Gda@GF>kPTh`b4D&r+1za&25@6&FOh9j3!Gv+JoOan;lc_u6%92^2zh0 zLdN=zea*2?ews}(XM9k(yOm;W<9l4ngF{wXA*3~J*ec;^|8__{JUgzYsB)Zo5jRt7 zU5hK+n*4o^7eymVVgwafLGE9M)`4JpFp1~0#qGP&F5S$@+6Pq zEjKrj=&15?`>csCaJI&S;JiU3ahA)G%iaV+(n-6*w-b_&(GJC~PJdrb5EB_a<5vXN zu;a$+{C-fMo<;sH?e=@*;2=Fk`1@OIn8$+O)cDf}k3NyrR0VRiOGn{?^WoGZxu&f6}=oN3Y6`OCu1{jZ zp5o~bB}E%5dzit<@z34yBQhc|(VJm>n+nb?;P#IZYL{lam;?*M*mD|V}fzSDy zB7mpsVdF?k2+uO96R8U19n&gR3B{!+QM1uD%RZ@fT2x~J-umN`QFA--^mqe>wD;la zzHh?*9{<@MI{@C;9b|yVY7OwW!J^IgNjX91&90rGjl1gM+`H50?*74cU*_KVA~+74 z8pzpI-{`4_yh-`>nwca0G!d0LeYuP@$(up-aE)HD|x1-*uA}>@qq*Otircc6f%d5OXJ{6Yw4PnL%@)8 z*A|d(We~NQ{<*;6!n0Scor$4d96M>Ql$fCK>jV@hW1CE%>}VEaSK#JpAUGou`5&s` zhVQC*m;TSr6~4ADn}DqiEQr0Sw9kueL1I37=k%AY| z|B{wzS1%y7e6kse7os{2&5V1o#sURmBxzZJtEVS_ArTY1N2!P3#hhTa$T;7#Ykb2x z2yb$f|8|_(Up8gKJ$npYc9M9xgv?#<$N3- znKx|ez03Eo%&6cv4HKZ(C{!3TdG_sPydUe&P0mfY{gZi+9{<&cwld;&A6vsqC;c?b zcaE^)g_$GokiVKMx*j0q$~vZgC>!~)Ha{XE++Q4PsO|iAUeq7Z*A$I#iFl95npI=Y zG8hpZ_Qh1<*{Fr7gFDNYU6TO+7;#Pt?z1r z$)4(Lzhx+>UCxg1Zir1{<9}PB`*6Zy7{DuhmckWxqb%y8cSZBAX0tu$S@A}ZA@N9f z-)NFKM3rK9?amDjk*J{WzZTvh?G(gOpEy^r=~uyeldalbq6V44iDDAEy4mqGl)7`8 z8XJsn^GA@){fQrvNol{7``*;HcUOjtF#c3)zxjWHCKLO1*_bWHYAL{}WkdRE>g3FF^`=eR$F0|8Fz4Pr#Lvf( zwR1_JE(zrBV7UNl@zQ8pmYrbs)Pq61B$Jeh#NS9)nm4$DA^*W|wTv-CAAnyRHcx4$^`9sImuP|~X>GEi>4;@hU`ss9$ZW;bJ5dBhFcxbs%LB)L=gIA;A~ zC*<%bB}C>NcmATdl#=aXpiUdhn$ZiS9trV*JE1R>2&itZ^uQTm+|vk`gIyy0LMpQ7 z%Mhp&G-bhP!&p80bf7G+8?K+`@CaB-|e^*=m1*iv6hI=OnHX0vT z5Wn0&@du+u_{LYx1RLf5WW108D4j535Bsibmw#MKS&}$)g*Vjx1-owO(WQ|=CGh%v znaa$n3erdP-mmcCfz~GaxPRZ%N#%~;fuOop8o7j4lWx(q|8(;s`&{BqmBuNOPD%n} z5pleX#nCG-XPKv9oYno{ zCH(PTstfP-G5qrw2~BZ*&v(XP48;!B)8hf0&N5hS+kYkumBXA+;B`PkKQv)qxF_-c z^MBbz!>@M4kU7sWGz;U^8u3+jU07kljlOH-{V{)+x^F}ayF>CA~vl$gH2AXkxmj{HZY*_wMT+VyKM7ld8qsaK)b#T~4P+$Sab z=lv4#g~I1-DcWA)dP~k+`^e$bGm}rxIV-oJPtLzL&e|QStBu*tW6*tNARbc!Gj%v1 z#PI75`J7JN;3G@J2?NS*hPQUn^-=kzpo(!XIW-^g)<#}-J26#M%ZR8{4ExJUVoBLis3zB0Wp~f=kq)QM zj{#k*aKo=N4Iq6@oe+87@|ukM{JcQ=O@{K5Ns6kl_88`i2!QJ|EJ3ki;M7p9rn29H zh-|g$>MukfcD_*L*L}O|Nc@S~FW~sgU=dY2(i7)N9cp)?p|Qrznw`5JZ(*AbqW4H6 z9(nACD~wxTD&Y-_1)>5>)jSeaG2`atT|^QJwXEu89%T#gBl&AHdYEREMc zYTb0gQtLnSeq!H!Y zNSY1j3UlRW8HPdi17nC?g1<;W@abPjOBaxTT~%Pi$1|(#ljjb@7+Djdw_WAXS!x_t zSepm$1tsvA$b9B|#BCOq;Hj3!aMHnDDR&c_f@dSDA z1OpM11f{vyi|tTyKkyckfR&@~Y3Dbbt%#+Vv_UTgIkE)JMGEqbxfkCrG+lQCNR-)gFr^;%~Rb+PHxDuXCowuYd9 zZiohO>LQi&c@+8fp0~B(9`w|pdq7|0APIL{VVRR<&%VEp;?<@G(@j>ep z;%8Q%;?1d-85UDpn&}u#Y79>j5U5UpM$m#(J0NQ&PpTO1zppv}qHhvX5ep5t^s97F zhWQD<3rYE8u#09`vSieE^&~?gW`AvES&o~eS6W~{ts{??v!YNucE4Tp~fWa$l=cjM#h>3UZRPjH9i$Iqr* zXs3s-txwJyGlO^v`y!*BA5Wgy76O&-u5W*>40~4aJub>)Ly$a5J*i_>c={MlT@O}i zVs}_L`yX!xqoYW?+$w#qPNDZ_n9bNd-O24{GpzJ&-gO<2jH1pP2NUg6vHp^PJ;Xg# zx%Ly`yv~}q^T#Bl)A*h4F5F-m#-n_F^lR@}fvG3uZLhHL2z$qg6H+CGsN0m^N`Y^` zo0z<$*jPPKYFyg1;F}P)l_)w;K_BkzRj^@>0Hc?T3MQOx(C z^2wz~&aEf#7xuy!`&~=1Cls6(v5ijqnxi$*$|`{erb^OO4GkF=lUo$qV4{G9Nebkp zJ_ov=UnJSJHB4l5t5eA;lCA~QO?7m7NSTL7FioBA7W+<1uEJVP)N$lYDugXD&+z-6 zB;jmcDK~*=YlFi)afDust4X796wdZbEJv_OibTb`w*B#&Rp{sxa#jcX;k>Xy%U*%7CGi-i zGY?s>IvA=9b!%)o{F1z!vuyJ>Tg#2ykvT@N{o_A{?)9ByedhxEny*THv^IMXIW~Wl zT(FB+I)bpGMn2YE)OFyCpT}U(G%t}!x=`D^m}3#4h2M_F%MwY)lWWZj-A^@IpY{nGf`g)?QsSd zpc5|BHqGMDBhO6JZBE3X(pyoUe@+LxJ@!i4fv!0)Yz&JNJo1D3LYwF5r!Wr~aw87&8*#)$KGP}aw=}VPw#O@brD?U8#&>BLk+SLOD%K&;R4|62 zB$tE_|C9jK{9C)K0!Q80MaO?i79MsfEvE4$68w6*I9mW7J=S^e)C8}EIsD$ue$HY9 z>B7?^jwwgUwg8&LFK|SJd)d_P_WeCAmtdMO>E`#C61vCCIqHt6^US-K&(rd`QVGD! z*+e8ZMqul060&7h?E)XP2RMpWNNpufGhn#(>xZZ$WNPUK`3Z7!;EWvc83C`S6|6?( z&hxEP-%?>T)7Ct` zC`VjDk-4b9DbJaC9Ru})H%)xn4MPk>?AsGwwX){-m-L-S7?jlqVD8-Qq|Lv7(}61D z4neig3drJo{rPET*~yve?EetLOPZXhJNDT@Su!r+0lG!^|6FY<84E)>-w!RpX+3M1LhNVVNF51t__j4dyym}vL*Ff zQ78xMt1e=+^W?aqWI_dQ1jPn9Z#~1Lmvyhx%jhU3lM|9>ZzD}D03__V$XoL3XvR^P zo{I70qWVx>=Tk+Pd@2yC48~iyCT;*pNVrAo{0Cj)jgL5jN(^>=bUQb8Z;cc`WH+}n zH>;qMzz+OUSKze8F|E^Om%IJxPupbAm|6T7#X*nqQ4}Jf!4=_3zAHMXT8R`?LI~La zp%UVBJe1nGMHmBQO_1CCbmJN1aN$dpoM%+jLy9f!I$Gj~U_k9m4C$YM*?k*5GRKI3uyo z#R=ph8q}7;m^shBwyK!vXcSsczZQ$T*8x3-c&SbLRTDHv0XZ5>m>L+oHm%`$t_|WU z^&QTz1YAzGS@tXe7QPACt-myM-(C*kULf#_UF@!!5Imrr8w3LPpnUU%LC{$1c)yo3 zbMd}fvoS`9v8O=c-@Bi)%rXHBol2o4>XNF6^lmY@0vaJ zuT5g)#GejV!&96HKcl7-Kkg}#mjW}broxi&)yZu_rJ6l3_i<`^%C;*K0DTUs={)uW_fBj~V8@ z84JAULM>Vw6(KnxR6~8zw`~;0M~L>nBGZ@5=}@kns&2eJ<89x$gg^L7e_a6RTNMuv z0MeUHim;XP(CZbz)#=wq_@@m0Rm-cEuPZ;79{svPNwIC%I~De_#AYmi75DoaU7ccG z#okTkvyT1iJFk=?*4e&5wBPVo?Xb%QrlhV0kcZ5Q0nw6w4y06l@@@}G@CUMaY>$r- z(U(NMe*>@@9wa_$<6p0ll?wZ69_W2Kv4M0i?l%PuAMK^`%!*cAO#wUfGX!Y=;xb9T|KyL`46`0(M^v@BDh zdroBh14_AB+)PKw7K3W;8HOHyo#rnNe*EXW@Jv0eq(F@V$}io0yoX5tDyMR^_V+B< zi+Z);dWc_bH%ema05L)f_v0_Q&V$04cF?A{MXqTpBGnv3BsutY-wd7L6dh0=^YAs? zw|(BZ01@{2>Hg;XMZe)r^x2$!>(b8c!_RdDUbM5N{&e`jiVg|iBr{HAmOXxv5A8ybvOd+lW)LG z+nO9wS@`PfnND}&U)Ac7B)luzgDgCz!OIG)iuBSqP}y>T9Z&vu{_&~CsTB+$Pit#E|0hBqT|^`##eTkQDO2TYaPfB08 zo$_#`_hUTV=nAOi*bntz=MH!2LI3%Bq_DWA@=?pyh^oUKr%Saa4^LrZtGatKk;LuN zIEcQaW%6TD-27Wtum7ws^1Qtt1I%Ed&5N5)Vh1P4*JV*(A_6nxe(EtPjq?)g(q=S& zys(h5{;qQ0H466_+9Ll1p{4gALitEgSA#wyvn?xbCR9m9>xrct|G<4o4}xvpOUwQz z8XFy#*&UY$s*P#~+Gg{v8{|;u645`@sx3lV2%k+pDH)beQIOChgmsU1YSbTrBFu=nb1L0 zSuWnwn^tKs^L2FIcbXE1^dRukv7Bo=s>jR5QGE*Fo-J+`8FV|lUC?Z6;e17cc+~iT zCLBXL&#de~K|;4tDUQ7ItH~5XJ!c6z;?1UBGyI5jG<&mPoC0;+P6gc-4R6{OPRbgl z-#nD;gGTra?Nn^5g#1<8N@yJ$b#!BUhlW$2%RqKMphNQlG%J1XJD&wK3<0+!pgXgN z@WD?sW20?nSPKx z&=4k=1aFLbY;k{WzsIFOid~h7Gj+j%tF%o1{mBS*XwLel#Q;3V=tjQb>b@vXi!Aq0 z;OHD0LRpUv3;not+x^p*WZ>#UGx?o}^~1hB>@rSe`OOw|i##I+h}M_a9w>P2fr&?! zvUZ}DUA_2}`pM(27R#y9l*aGUR1>=2R9FP`$~Ky}t9&wBMk z(s0ACP-O z_b4x2lY*fz?v%n^d_4jb{f?`ChmKUD^0WD>S?d2Ni~q&pD(EzD9x|xo*5o*11R28` z+}Q}6sqnbQ9k4`bnhol5qNUsJ#a4wpi4M?!5Q^O?l}Y!uZZv%5rS1o4pf5fBZbm6Q zQbO``X23dmpsg17eRAn$gPV&VR?wK#>Jbh;z>jXBC<9@Y-fXPaptDhl$Za(VP1i$ zUYQrKJPNAjlMd|_CS_hp%{1PSZpVPOhr?~KR@E903(}oiPn$jY%$QY;OI)b^HA1@Z z$PR7cG*8NN*}%(J|7emgeRL(Jil5N}raXU% zPs97vVd|?>ctax8F#TbG&74{r5y2VE_Q7;}rz%WX$De$KwVIt4K*ehzHaIT1A?Uh4 z$b!c``BLZm&?F8@%4otaAhiPhK&fh=`Mjd1*ibYp@eRzrp%ma20S!4Kxe0cni&>E< zFjX9pcRJFi6Np33MRikf-I+Dvbm;G+cucvTaf1Lzg07W(G!`Zf+{!TSlt*4fPn(}@ zML%BHNB`lLVEx-{V2c2)vR0W|pKm5EZ=lhnu0FC3GO0+-0Zjd;vN>h0NL!--2NPz~b) zXv!sI3P;OY<8z6~mr={PC9s#}F3G?HF1$coz3=Xj(At6H52#yV+GzjAKQ;*j$POSS z?6$r|933*q#XO2dDxqg%r0myK9Vvm2Dy`YfFAh&+U8^ZAD(ecM>CAS2?LLEYloNlKkq;Q-<4B$g9R>gyjD4j zy9;$HzB_Ijds(pW+grF+Y59&!{;JMPk*-Scf_XtOSW)YT8(CJgMLsq2GZ?6`{exnH zssh!IDCiLKxX_=qYjaG?d@S6sg*?pZ%vi&}gKFcrxD>Ovh10lEm5aW?2v7 zD>|GQ$n6_8wR^A^dIUMsQZ)Xx|vT7Ic=g7`o-|JY$vv#XI8SMqkD`ut?Z6Hfygoh|tA&(?r=kI-1MYL?nOl6Z| zte^esF8~F0`)6w9mW4F-tLf~6M86$MI*9hE6BVUVyCq9lMw3t8puf&Y%^gX`ams$Y zJs$cbyR*0Fa-cy5n&8^xKq22ktGuU1X+A$pEKq2fJ(^fPf~!0YZ`#L2D1(sI z8+N`sb-xyyc9t{HSm4oAzxksMMI`1TBB_|R*NRL2-EMp=FPIQwr{XQXG$P2cARmI}hw#P}+F^2vu8_xKRy{m8Ah^Piy!eVhJvLTQ`GiG5sfQgKR!QrUj0&7R)1E!g_Dlh+PiUo^?Rm!{}% zUT@u)zll6_dDBsM{_Pee^A;6aRCJvE|7be%aH!t*kGCjoOsJG-iV)Hy`#P266Cqh6 zCi{}5B0HyD)=5H$vCG!TzQiQUgcwZr82i4>7-QCRe)Ij~_t#w4TytG>&Uv15KhN{N zU-$d&XQD36ODPU)t12caus0q#9gO(d;@4rN?q(KId_Vk-PhO>G#S@P^v52C2=owi! zlg+Y)5aDd$8jkcIXpkp}Gn~f+2((41Whv|F7-2NB{g?utfcyu(H<<@*cmDZz-fNtD ze1C=j)<9rKiaqZaAXSu8OGljIGzuiUK1fsce%tt}?f<<161Tt8ASHJz(SM+P#HCom z>HZ~FdjT}R_$4Qh$M?w;y5+#6?hDxT@%OK_z^6Tpx@)e3zY~3Ozg};z*iLXwo7W^> zyWuV(@z*LzIrS875LgAO5^FfsWL~8E>}K;aK%ZxS@ab7<&5?^<&lZbY+Evn+bBNnc z<6sEi&Bvkj6cCpJCJjAwF?IB?F5+s)tdMWD3gFKHT2%Nfpm57`s&*FZZgxy(2P+2D z%x==a+$QM$8*{DmDw>xr-D=d2x9*<=3}Eg&^3!sR#wO^B9Y7Oe@JBfFofJ#R_d}-l zJs5{_jCoA!q|f_0s7Iff_KGMbMJ%w&RjP@d&n22YWQ_Gl-#cutT?KJog~-P=Ugup zIRQLjtkQ>%0zW9Qc%(X$v`eR_J9pB!pBbR48aOuswa-8UX*QODEZxv5&E^li?e~}wFlX#00L3TSH=Kk|6 zbOdbP#hn7en50lB^u{QPuc`@>EFhlyTQSZ;E}x%~j_B$?1N2+84Lw5$`43#UKtD^CTQS)axf#zwctCy5sE>4$PbmW5angH<6UQ4?(Yug)p|f+cM4jFx780 zcrAkq3S!4BP$j=( zR=IXe7LD@kT8bN=e>=*A2f5pJdr?I!%ks15R8RoVeThG+Cs+O4_z1aI#9Y+X5)EZi zrNnMiqI7K7?vrXh&!0@LkeUTN4^LEq!Y|JtJ;vbzdip-9Mx?CuPyWI;P~PkWZYVx` z#SCx5es|~(Vnc1(74Je7*!+D#RWMy=s0LTV8I>EO&(a3G&i*fAVrrlsu{#^uV`TkM zXgD4>MwZTS*|x_-RBHBouWW+Qq5n=hKhW<{=rHtTmnmG-nU1pPd<-o)08;myTt58G z_A@uDIpn=k5R04XefuoBiMsGYbZA2e0fQH>?jO#ja^8cWCAURc41+)NXe}e7sll8UU05D&`Vx# z22Eb~oBHD|`p!&(M|9@Hd+*e;r3z_yepj8%0pxS*AB60%rR%wmPK7L8rW$2`Ew{ZN zbR2gi_@+&e-ZxXSA|?q8WuT59oz#^~x^k0rXz%@{ z;)=u-^=ezlv`^zere!%WYw`ppEHn=#T~Rw@0dnG?rV`*!>vX{VHNx|nGr>NPokxw# zx*!}TUFhEIQ*}U4zZ^L#Dz8IUs6|rA`}(0iN=Nh~TLZX*|L3J|B3_x{d4b#I_@KE+TCxDL;E=KJP>P|A^dA~%~Ox;{jj-au(~nv zuLD`N({u`0(_A4?@mSK#ZP{J#>Roe=U7askzg=X4k8cRldnkBeweCX%c?T#*rczWp zPU+ndn?(!DMQjjkS?C!EVZnlpfwqj2(3li+mhbxJ-ifbd><%;p?Jm+wc5p+G6cPGc zq;O&`;W;_MV6S7XRqDNZz`K@#&|iJpYuUIYI3VO$!V4DZ4jiyo<_PxjdNp z2&W&El*OBSj=&}soh~vA&ur-vf$wgM+tSp1LzA<@p}e@b({ER9S3_C!oFq;KMOe%vo9vv>rErq`SCXt|nZH3+eS^z@mXWRRt zp+=119L*~1VETwsopX&MZR#J&IiN4T)1DHzX~{w~<~{$72&H_HC${z`Izbwsnu;Ls z^A7=4To=VYbszH};?2eua!~hxXm+}&)mO&8IAr@|d-A-<4Q4I$A%Re=?G~Ey#h9U2 zQsLD9;jy7f_NK5bXw4?LRPLk2u`|G7IF1gV-$jGdWlMSV_dnb)qqufV7{|(1ch;Fd znL5mPBJxs^cV9(UumZnc`uvm6&+7JH$}rxG68RVn-c|r)yOMFIW z4H|3KjN!HsX1c7_9i(4N6}18VK6Q_*;&AThODo8b>r2X>R4$H?oB@H>_2V|t;}yL5mmSN(YVLa^RxLUf#aS) z7j&~@Q#q@(+A(%#U#h#Y!ei`77 zm<(tT7>>c+1M+C9B09|BgiYih+sqTn7SkPQv()#W5N3aWw6(!FZ(!Eci+n)_4vx3| z*{w?*vX8pr^&;LMX#Vfj-o1N1Gp5s7(i`=0*u$r#Vm|S|vpTqVxa-pO`G-lt&a&$& zdi^;W0}+0qgSF3+4xVaL?D^7>ck3?uo&m4k!H+0^qi-z6;u4)hh4Fsf!~T5P@+OLd zyGL#ZhMxA<&x>4#a=T!BXD>BZswd^7<&MA`(G$?yMBriH!#kIy!cM>yb^a_mJ)0Lk zG$T=cHSR52=skQrF6vRjfj6{1FW^D1Lbr)F@sIe3^fMMgJa!4H0s6kq?~Y!l={tN_ zf&*>BAyq#9MXobF$Pf1!GYk))f6}AT0+A_lNT_fXcK|w^cmly$Jc9F0g^dNKzHO_NRW9zI& zCEw9RX6EVtZNfb{2;^>__9}ebUHX@5wAt@C|Mn$G5$`)zs&|L=`is}L4&KO&X**vo zd-i3E(uI> zRl5xSSWS1!ueZ??tvYFFE)!8GdIuFm2qey`YL%G3RNW#l1|=TzR#mlh%_?6&o`=cffP9bKJw8s;tm`0X&Hu53$;S z=deTTi08&s_}#AovA}XIr8OKK=cnG=FRbtNwphshITfj1MxYBh8>N5!P`-0!=V*lS z;=+%Yov-^QycoxbrjkY{rN--`Ux4_Dp#LOo@}Zt*_rKr$Yua#^{&X^G^MvFDv!!?9 z^P+5!vU&dw*`d8SLJ}wQS4sa9a(1^L=zC{h2p*8?*oU+X*hI1qC*aUvXg31W-}R?| zZg(!E^`)2LA(5k%3YoEoFX_ed9$~YqMV2of-heiQz?79oHeZ zY(!tC!^=#M*?f-$1|zm+OSi?{B99l#T(a`$f=5;8e~)v2vhkpfeZDLnIa`Gs={t#b zw9tAXERe6NqxLN?`ay)9c%T6Vr}T0iiw4VVR(}w|78cl{54$9ovF5@)lfvd~IUGv< zB~0!IIVP8CWlJSB(dxmJ`Lb;9TY&=VpJQZrpN^g;HVV6QMcM8E-6QmN1yB9+ z5^ti5Gj986#1|=^zc{i=h))(PX-6CX7=)(4zzaexHg_7BE6SONd^qTWMqrFI4lP&t z|1_#?KuGAP;y!NhrZNRut+(u~4uuXvqh@;hU8hqbsCqfj;RN_uN5r|h*ay&v z-RyDy_mlpy09)Z)7~2=Ij_SnW){*BJyS1P#o3jcf76A;2GCBOgjGl^cJ9iCGr@oXyei}2ZnjSl0Gb+Osd(xNVO zVZYqNbY|qe#O8~Mv3k%0FgzB81eWD-YP|;!JqSn7DM{|`;A|oYQx3Q1Zbq!Ez?pi! zrT2H=IJ-do92^}pjw*QUD6XXrlH7G2Lw*lQv78yqb7##MSABLTohEnrVtB=` ze{{#6^rx5`m(MN$;wq9z=p`vcPz-akx6iI+*d-E5p(e0lH}#+nVF4)U9eub>c&wbR zxR)+5&RsN-3KVoKQUQcBVQ>*`P-OnYGmj$G!&-|D=13Yi$24@)%Fc*g607GF?`4 zacbFvNF47eJ6jNxdW^CBpX=ers~Y46qIUBBy_Dho5C1%zHFN98@$gtIup2V!cQ6Ac zm>31XW~|!VYOK1crloZMj?PeAl!*#^^yePaiWA3>>XCg9fARsmtucP+7J$(B5*>MP;v!d7YNMT&)a9+ic8WvhX) z#n3N5Gt>lo6UInqE0Oy-UW^f1oaQ=$Z^x=;Z2`{No>dzUFI$`3!o8dyo_f}iQ$#tt zY_3K1gnXfaWsj025(SUWmmrm2Rp@N=E0MBR7WhYiNVKe)BbNVG z%`b~B4OgUUGhG^UpEZYFSi<~gj5~^;pCTErdIEU|#+iTECFSio7_-6Vbu8V>%wARnt4 zf0|3pSPO})_$gtg563XUMg=CpN!oL98n>LFRRI+p|qT4v8Iau=n6beUPM_= z`#j>n-oqyN8F4OiKWmI1T~NC&EyOj5$UZ16z`6N`8VeLF zkODik{!8Tq-|QmIt?qKA$AVuBHUJia2xE^bV0~Ff&jz${^^p=Wrqz*4r{YW${}RCd z$*HoB4*RzDE4ja;|B5sfd!jPB4xnbxdBAqU4mvxHjNkZ$Jw2yC$2W|ON{F9KTQ6*d z`ih)Bb_I%MfWnNtmVvKiyte~##w}9j+L|B3HY}8=Lxd=mCS%)ciDwUp;9Oe`2YDOA zf8HVPt&5o7gy(wOE*2zNl^F$cu+kZ*&lv#q4|N5n*21^i4K09Fw#4{XN4(n$MZ59l zE1{bM{y!##HK3)@$!H7hn`7+1H0oNhH+SZTC~1dxZ)=m$xU~;e?C=<3j@d$3XaxYR2ssoY3HHEpWPG^Qo7f+N#u9sU5zvXjR~+<9|zo*%LFc)=nhW zEC%Ge`Gn|%vjWd`$sOQLMDABF*Le5aAptrGkrXCB(py%C3iNU8hZ?gf{Dy`o6;h)2 z-2ol;;NpO)4*Ss*z z46SuhN35#FeE2OpPB!l_at#M^5?u?6D)UT?>a@vmivzV0EQit8hl$r$Ymh~}SJE>g zwg|@e_WVoq0dw&Ky2E9J(&sD4^qYb!OTT=(;J>)TDfCYo`h8*fP2jmN3vgvQBL_Fw zvI{X$bD&bL)^o-fq+~3XL606?vI}d!w(6Q>$+N99l9)IA+BhTQo$K8@>2qi~>_cg7 z?SX9W$u;<%4J|kFrq%>S8l4{rkw^I%Ff~_KW(yK&Di&b?3wvhNz=Cv?|9}T@%YZ~D z)CE0zsA0YCzGLxtKn&VGY=ND}1kROG({O6`gOLMP5i5<$4E zZ8DZS>(Fec|2AA}hAjw8w%;nRc?Y^ly+ShlO&BqdD#tgC4M@klZQl-trhiwl_eXlp zQ?7XPg`4p)d>KawmlRf(YP#W%Ugx&xVjBwtiYy<+??Kk$xS}b2hQ4>j^^QX2a43@M$uT zeN?PikKp>?4dHh`)~9P%Ry-?r6w+(@Z_o|Jc)jfkX$CM9pKSQszQQMlvFk+awxJckc@kxx_2V$ezpj@L!GX z35Lhnr>8rE4sd%7O3$K8I7JcC&2yW5z<-BJnxWyqe~_*Cw&D-Y4%g89!Ro(?3xC}y za=3-EWym09J!#EMAUV6O_+%#D;r>(!XPAcNz{2XP*3?G6 z{ZUFvfFEmz{Z38(mLzV|^^7fPNA(tZ7SawsS%Vk`?X`iD$;jI82A~L1NkW0v0UdZ)s~{)28bYCx&OnXi*2^`>W>bc1E7X7L2+<*f zZyPtcj{em;L%7P=RnWO+e$D1${1eYQ5Od?uq5pag3_nt4*r9*}z$yh>uo} zKOVZB)vh``+{D?SQhU-y{9cMc`;5XeshN^_EAMT}Z+VSY1XwZuHEtRcA_8M5&z|&# zVQ7kxQj<`4xY3aAF&~gDp z`LAIXp}d?)Ml^fYO9=!=%3A!oa{K=I$%+8mwD7)T#68d`uS%gD3hV7}H+(`V74Xtv zOhkT|dF{KBSZ*=C6#+(W8WARO)rB0c9~((aLmq$xXOVv63;sQ}n}2=;uHY!rIiCA* zGC0mrFENYY43l(KCW?U3HViaR<`e5lfN{hd#((1)2BId0GHjvof#&yxq1 zF*=#O0rPG{1;Efn2_`QFe)VC<#F6pX!Evi*GC$V&EvATAn0FKz94(cySZJpiQ1}?p zBv;nxR=IkzIgLK@tt#Ch^Be^?KX!8Y=gBGwGNq(MV-EF<_Jg`WxSXh@yKGaPt6W}bx(}3l1J?Q6CQO3Ii z%hf>eM-O)5*x~hd@Pf{NqG>9hCjD5W_7j{bx8cH7B>hDYnihF{liBgWBR<0XrH+*W zc7oEXR1rT1EVeG9J@lSLq&yYERUw1qmD1=2Z;fU@BF}{p`Cmlyhw0X}r<}W*6(98% z7k*Po`)dlv;LFblr%K#8xv$TPhCP7&R4VQWTyr&x!)Q`#h(~4Jj?%u`(Zi#~grVQ> zb&)DH4?V26roudOMy>ylqUD)e;kC#}SE155blw(f>%uMV3_3hdN)O^=9JsgK|LWKr zG)qKMo|w~S9RJXlB55Q7xO8Rwc9o3X49Ystm)xV|Wff8~x7-gYk&8M_lNKGZbAiv> z-WLBiZTf{t&ikf0kN(rt9@zy}LGE;JL~pu)%ll%^QXNMTAvJ02S)}EOTg3NlV+aOR zZ7yhTKXC&rbwoMHnv>zI9kp4++VeJ?z*f6Y8}R7t?5k5a_g1oUNhJ|fr)A;dLG1ss z=-w`(Cqz8R^bRXvBmLT@3)|z#>|%2qPm&Dsbe2yX z*3X&@|Kbv6UuP$C0K1S5+-pt?VdLH#9{Q z=aa&Xt1E@h=ALI?`Fn6a78ZRiHfc4P2G2Jyr+A;VIKu+ezGBPR4}(rO6Wh%aFwCp> zr&sfa>3|kZwdV>$zuoGkJ!Mmm-42yMjO6qKcZAQmthE{+WhJWB&|pSZEAD{AbZ$np z(AfhALl|(&o`$sw+`c^NpSr%SWPMNQ^=zxOO`DdU-^D2;`L*P%#D2-MWZ+`h$$~Vr z0Yry8&f#Ri=Xli0tKm<$m#|8wT|j}@4Sg^RO7^+VkQPB!@q}hy4LZ!}R{W6eza4eV zG(>#fm#n*=Wd`XMehH^!^4SO+69NbIRI0Gc*UyZ|UO&-_3frOh_jzm&a4;b@LRU&2 zL3|kd z9p5q>+6kAUL82tBuAYxTP*Of2@aiT+z1%G zF|RMu#eA|FM~uNfOyF1d^Lcn^Gn-ImSc0`JOe$3*Mq{*;dTi8^>ONjU?nwE*HM)VE z6OIFR)+>L+ZFABd0tTCU8D(YJ=;kM;8n>Yb>-FKS-~1V=s(3`HIZO4p@dy<`MpD|jSw;mibA%SYT+O!}cZ6lF>ZalM@6ACLdvI!3R z<-!}9BvYYXlvITQcAIjzXw82SGmZRrgxM)hu>h`SsvWkbX~*Qv8zJpIkp27w=K`R7 zy2Ul_M$1!Q%}e1BTnrJbz1+Ww;oi=}^r4CB(Zm-=tD;jo$8D?Uw>B~yVqO9LCo5jp zygOwumiu<5mecN(wgl+NYeiUU><*(1h*btjb(@DLG*ztV(w>84IcW9i!g@cV%ml?G zv*e)%6buna4kT_ElNcHLL_0{@vPB{?$@<~mN&I;zKkZNlFRtWdhbnu_bM_Pirf#^t zq$uaryZSdiv;Wo;4?qv$PeB75bt6yg9qyMSOyx$RDqmN0|b9BFA-WAP;2Et*vR<3&4kr5g&Fo@DQV- z^EIFiCODUifu^U|u~A&0Rjf=tB_(gdhHLRYPmZ7RVIe|E1O6bO745m)(7j=N7CyFN zLAa-ji@)-2C7ZHuo0 zCwrE&5v99Bi>B9{XMdc9i!65PTe3$4jd-|be(Cwiy>#A(Tt0m4Cp?D3nidXDWBPWG zP5~dOge>1;w&t!?|EKw&5zNRO?n!O91Ax~XvlT+Ey(j~o_T8iCMFBi6AD7N<5#Hlw zGFQV+fUS^>q1Zu=`TLt;^-Yh5Bm3?cNd)=rO)0!QE)h2eUAM;N>A;Dl+4k$JqXE zUxhvKxn|G>HxEcJUr??a9WU=dOO$F}Qa5pFq!OC=Dni(0+alU4zi+-z4|rg80eB9T zP%PuF0}vGRm5k ze{Ys&CZ^o|WYV@*;O+Htp8 z*jbGG@4m@fjbt{j5b@vdSyUU!cv|~QQHPZSXPbqtgfqft3={SmTr|@hM*Y;RV&c8LB#2ugZE<24qdyY@eu=Fu~hGf@< z*~>|rWG2=iYZdLt9hyW}Z@@P8Sqprtx9_#G^%(;Uu}xrn`nDfmjicUHLPMXdUD>T4 z;G$)LzH;`($`!7)#7f*d7-~Yl#dqN$^^7GC;rX9t^6oj~KuCF-9+JkX_>=si?~ay8r;oA1rKdX1*qq%?x5!MAss6d zL9vM?CXh<4p24R?3)cuX7tL~No2aNQ#1M~cz`bhfJf;DuO=(}e`yMA4oMB8A6goC~upyT6-d@^x-;a2UA*RB<$ni+J2IqBTzF)-rA;AG-Z@&l*?_hlM zUCm;2{}zE2C!y3*ET7W8iBFy=ZD<`Q)!Q@yY30Y+(Zm0ed;eN);O)b*u%nY4_?0?s zJO3ohFgZ{Q>-`nEQ#>wr@Fy^=`uR|%hx#La@PkA8Bwu(d&Nky5m{Y?J2mzqSK72-B zDjuFR_!2t@ydJ})u-m}{-Q#MZlo8zSam@w2q-H4eRLH%K2ksvv{;Xv#HG^c32 zwg^0(6;th)uB&>Lu+@q?>NeXt9M`-d5{-Ea-7tMtG{F<``)l`yZ zHu%efg|ON_dB~?4*pe!SGM+FJc)-gS2ma!pu-r5s2wT27ioOW_2U>l&-9e!Jev6le zCYMmpTP50VB;abay_%}#NhB`5jQ3@txROud@=Ll~MA($|$)_>jFTvDCPc;ib=E=Np z@`u;f2lLm4X-_gVgXENFM<9=lkcI_b4`-$LLujq$s}^`6zlr~kyx#00JO=TSem4B} z#NK0@z~8d3W?5FzWK}Box`sS@|VhWJzoaShXpq*t7hV! zkHCMwLLFMzjG!d;wn%&b!EojoC~a!=S)2tRurXM`9uR*KLorn+Efi(YF>C0Mql`6%p=*I zpLe<8%|QLmX@%FZ&7d#hBADgJ_*G6H?!$Fi7g{3Ev(LhtgOz2K-r;c*4A9A%Wi?9v z2l;oC;^4%tOZ|Zl2lOOBnkTfhhhZ_vBn*Q$mD}L$qT2@bTyR#4DO`1ZZ!J=V+&OcI zYx5v}19OEJaWxY*9wt6xl8oz{Sfn3N1Gs#k%b)x4cdCKCoutHUfGa5uWO7qoZ6+-e zkCfqkGm~}N$I8V&C&lgpvREDq5#IeWmX7x9<&(0_(lu3sc^7#ljr%=+rYv*P`-1Mu zY5B6Y@kGTCT#2S)N-^>X=x_7^{4M5|zORJYyv>5K3Pt)x%Jz=^5^}@K>hEQDV^^E9 zQjkJ?A4O!%YTk8tp&0cnqVDiF!bhG{VR3J`R7~9kKxyOSIkkI@_k;p}LsQDD14z!l z{T;ARpZJ@mUQiEuFB-mJ{L|btGI@Lwfp@2ONBDb$FnkqXYR#SeNSKQnHND$REw4mXX5LCbs*fiKf`WBYikm$(>C99=)_rxW{IWzZlv> zZU(UMi13Ex-E$V-eifZ|xcYrhIQZPFhlPMA>p(S2LdLBiXATdFiKX~k#fwWbj~OJG z4H(u_;y5YLS1CgE0cDqStg(ZPZl~qtvrdi;HHKx-D`2`XCBJ>l<_y4C!3F=kc(nI~ zw>&!@n~|_^PDP@u-p{YW7-{J~2E3!vlM!E%7i554evjL7zYCYO8*GQ#0{X|Rys5W3 z0kU#h`B3ya3t1L8trBr>Z>wRi`guG0vRPigb-k!iOEyq5=bG-~MWYXA8rDJ#p~-Lc zzu}VXhqbq@{Z#BD+<5dx8GA)>^^(5aUk;g!f!SWbzM!c%4n>34vyf1jJX9(D9C zPsyHUPS%*IYVUvaCFr5i8Up$`Qx#ewMN@9+GF_WF8vX^c)%O@Im#R-9!?1N0awMy~ zdc%Unk1}?QcbbCZwg`1D7nu`y7Mf76HD5o*u8dfI@6R6RH@2nrlKE`Per&x_w^2vp zBkIFfzxnT^Z{8&!f1|I?EOkgHc@rK8{L!pk4dgL36K2mT+VAKzz3{DIbbcTRjne zo?8>5s%mQaU?82MsD%0}nSoer)DeE_y-1WHs}@>5U^k3W<;Ly*j`#`|R} z{y+ts2|q2pda=@@xQA}?Aby&X7|p(c3u`Pr@Ww=Yj}{{%whpPjgkhVnZ7x)_r|h%k%v~*9sXN&D~|un;?49vuD4$AD%q{qV~Q2|G2i(cig_te zsl40z0qGo|n{ZStAGKBgG00u#T60NiZ3x>gsK=l2Djw_#*KJu&@hRTY*FMp`H%4Q= zI2jYGcJK@!QP}ypK=}(pFisZy9}5u=!XuWT?E41GqRpTBM_!Gn%WeizYFTyUCEmU2mQZ%!&C_Hz)zmXh5lYL+km zfZA;ebf;DLs09l?4GIOXg2=YWMSF^b#ULnYTjggE(B&&@s%9*CQ7CodX?B#8?PtNF z{Zr%6o=*Dw7+B~(D~C4o>aFH)-m>fUf>XNH4^VDIg*!sAitpLwLua6yY2w}2$@;I} zvI|_xE=c?LC-i<2!01JE>EBxKh&-sjR52w4`;*GSG~{ziF4bJUJuR^daJwN3ouwHb znx|+1C2Yc1b!?U9y`JU+hs6!Pl8s6|Q{Gn03qShL*zN%0vwug)>$7 zy3qkQ7w+r;4n``?E?tya>;)6|GVavu{D5muk>23tES_w+JMzxS>5zzeS(TbyWx~T8 zd2g7Fj@710xKy~^=1iX0C*k1~dGGA!ag+I7Jf|3~}wQlWrg)cLHvRFc*2gK(RCb~Y8XSbU&LqVGfwgr^`gPGK~yN*?Ur_B7(D4Bxs@*lR3o zh}kH&h$*@rl;dbwk2NJ{06U+gj==@fAChrHCJ2UI?0wme`o^fsxR1}@e4CB!&Kfs? z{P>-cwxg9+vx;&~;*jI)xnAmf%Y}$tA(O)DwBOIS4wSs~%bpzkLH8=N#(Bm`bz1Qr z%Q^#DK%6)J|MX%gw`RPH$2}m)#Z}Ial*fXWEX$u4K8BGwyM=gg`2k8@@8&>0^%vYc zqBhs8x}7QQq<2+q-n!HqNBUwlgkqiIWGo>(A%;pmFLPzjwwDoe607 zG1Y#Ri$w?20pH05pNl3$;Xg4l+0V8Ot_3n*5B}rh%C1icl+N zo#nON3Mds96r`~&%wIW)4QkCuQ?vhQ%)C%W7sjW<$J2Be;kEgO$P)OCFV|GPt(%m? zZA#v)Kjvcvu0nq>NTrPYr1lYDQ2Fr>xfknWc*t5HY=t-3llP_ea&Fh}^o;u6Kht0Mue;rFDmLD3vw4{v z9`jimYyN3K`DlOSUyg}(Z^l=$TP4J+%AY|-gRsd2y;#1pK*?1h#k|#2*9FbFDAq9^ z@%5#a{pY{#$~Wu{k||OlC=8)xk@6uOsDxSk$NvS3_Tb!*`&d} zd+1vZArtGq&a8B;iWh{!_YB7VDTB@TxGQ?&dJ7_jW}pUmtpkrS(tU1JOGnvPdxYs+ zOE`j>fBo`Ozb*Jt`cTlT>4T``u3h+-<*eh^KAra6`?|wW03||5+_0{>fSdD~1k_DN zCuq{z{>8pwx0pvKo=y2B# z9rmowmtOq@k5luAS*&0F0)*bupjaHuaY=AE0L#Zi!Ma>LK3sKuFNvOb zkVeWAKC^P|QyjJU@;ntNWumfnnVGwr=)3wqJRKb5mj3I-<3KO&qrm>X2pMOEzraU7 zVt)uc0<5Pf-H8|bWV=Ox#L6_n(UTS>@-M-KH)s8NY;*+eA;2VgQ!L9schWN*u54c6 zoc^pw!JaD!xTZ=i?7Ti=$pcY}qji*oA3t7-`KHxQC%---6}bBI$JCn#%Pt`)>(fi^ zyaRf>TW>5)fO)r#T{PSvBR2@Sg(?#3gign-4LFx}+rBeqkvIv3L?eLy-%iPi-Qj>ZH9m{{G zlG?kr2~H?_%;t^{XzrYw;;vc-CgFyghrsMm{Xrzb8o^re2;pUvR*@6dm(7qr=bi?& zJsDr`_k3J-Xo!dUZ9OD~+)2LT~c|ZxuMv&MpCE(@cv$T-{jI8-d|G!b}qieTAE^*f~Dis(keUyA+C<*_2?! z2rIMue%sM%anCzV)Zr8v(YBCZ;;kzx{>#l3PbYq^Q=yG(BiXf3k?Brb0FIEB280CGkUB^{6>vWCb@9s6*Cg+vqHlN=v9G znywSbi1gYOxOkm&>aA3bwrl8YUALwC?@sl9KRanZNb)pV>XLBI;wy zwuH){BA2Rl!uNtWBvn2-g{28uas|k`JsozU;b~N6ZmCRepn!aM zC^b0yg^$Qa>!TMS?7@_@8rEGSUHl9@wo?>3eZ=QrGNxiiQ=Y(;Scgr1c_}PBeV+i#>@_{&o9|$_Yegy2`ohpp8`qCB?gP+U#a)IpY{5 zyYRz>ifFVFXFp>dm`Ng|#SF~nX0!_WC2fxRdN7gKX=rG(B^7Yw;%OF+yfO~ZrcYs{nH>M4@Gp}y}R?rxr6=utUJ@?%3=%WIzEY9bf; zp43`8dhRo{y+~C0HaIsrrdj1_7I$jl`HcU*jZ!XVmw?s0Dpt4)oMT2GFy>usS*^<0 zM zkv+5jNTpDzT-nU`r{_Fc=Y0<@Nr7)MT<@G9oBYsxDO!Zbb3Gvq-V7B)lb+nuL1j-D z>||3(Qj>uSIIvyqO~o4_z4pX79;3SwmJ3P8-usXrPc;- zk0h*ds4q?hl7nQd*j7e%qJHR}8!BZE0}>MyP9kdWn+24|`i(cwXnMA=dG2 z_2f&|G%t~x_M82Dh!MJsYxR)a3fe*AM0ac$-IA1)qjQK$CivIG6@0q}8G|&yFZEEf zflv$Xv-GR8pw;C5AIn8z%ZUiwpnn<#{^X0LI4aO4O(UjHF8$DI<>pYpB+1d%bK;@J z{)_is@;Am=MAW=n;N1rciw^Y0RuOdh?cMdgl=;DG-+DQ1zwzxZG;O#I(-?GHgR;ZR z#USlJB{zpfl#7d$U=!_iPLC(*Ze}UY0Tr6yZVv!GY9QD~xD6>5jJwZj`3r);7%yy4 z^A-AUXhUFLH(}t`lXKU(B~>+VQ3Xjgp*0?_c1}z-X^KLZ+TRSb2M^CUUb2I-c?VYH zhFTMzzhaxYZS)Ty?_c{128Oe{iD*x{V0BbOR(fmr{V3vSW z+Pd#$5KR=QPUE1XtUxjAcJL8}U)VFLD%=rJu$bHReDjK6*J!S%fNB>fKO5B`&=J;G2gp1@Jn`}XN_-7~Dh#y0oK_NFP!#IS2t7y8CQ>>a>&Rn{XF&et8kBu`0d~q0*ms%qeHl#nk#B2yGsDPc*ez^L=$VU0xWH(a)z#i`|S`Dy34`+yD!9`$He zT?HJy4-D3{*>eqeJ@4%Nd&0r z&ekBJ2XW916_6>wfTEfD{6iV($VzS}N{{S>Fj+ByMWi7t6TXf-pvij#?}44ch#S6# zyZ2L8Dy!>w-5f{4LxL_z-)j5;Y9vGrf1ELH0?Xg2v=hp@$R@WiU2zKJc+zS1HY?At z9Dy*iB%KMi_WG{u?t56( z5|4JkwomItEEwfC=QI~r*=NmGkw?2BdS+x&<_YO{J9>_YXFH&6W15wT3GaPN8mPsK zlCdZ`L8JLK2=BJcnZfAq#k~g%1|KS8&SI~rAJJmEEt}{PFh?D)pt*LuN8@1k5u^xs z((9k}f*(+Mwlx7paiNV_b~ufG+YsV9{o)|>HoY|<7J&IX9AIoaAswJRIqv~*u!jln zl&BNg+x0wqV_rdI-aq;VB&SoFz-t+H@!EX5ue*JCnDeq&MAkScdnLjswTqIKOK!po z9M@UnWH`_PAB1jK#_LCKr)ckPrCl_>(RG}S$z^2 z!{uL%d%vTgZo!xv2E|AP7>PcP48A8Kvc*n%THfu^Iq>!tRss@N1s(WO^-PJei^-q* z?$u31NyOhlu{AQ@FMso<*`Hc77Q+d!_0Gs01n#Ca7nj=XUM#_d64l5Ypy}Hxc z%q`aeX@qameD7w^sf=MlJN)#$@!=ICbLC)E_#E@!dOZ_ls8Ok?;<*5bXix_rjlyPn zl~(CmdGMJl(;GON!2XU8rjGo_2fp8tGtqocidjIN;^@khj;(+!bzh0PyL%j_w+&)m znuo_JSikDcy=A#`hIvfc%nn`r^55i7lY2E|yQT z8m#W>d&?5`kzZRAv;4L)d1TE&^mH4yI}rN^wU_0LH`z#|yq5L)spJ3q+;3h5PifHm z$WsY_h7`c7vENIieTWIOyl;6hzcjIp;y;8tb>r7L>WGimDg0}sjMy3E$NNa8XnX@v zkez$vb09bRk%Y#sWB~rwW4!8Za`2k~V~?qcL|S&b3X)@%zW7cteHp#s*Ge$3jq$a! zy~%-U6J4)JlmNDk<1Z(A+4`@lM&zrIfx@i)lY8$GMb5IN2Ls0b?(kj2{sk*>hsL93 zx&;2!=-t1tUs5Tgn{C|$3FplCZ>7K<9pd(ys8V5e_df&RekbgcZUJz%#3YUy0f@1& z8lyj)#c5dO%bYHmy0?{1s3sP(CUxti2#+7Qq_bVup-lPB?4|(3YU}z0v4oC8{|?^h znXvOVltg_L z*Fs$e;yk{RxQa&ewRqAV61?XIF$DQ(v;()eT^Sn3TBlI)1Uk5Lgb8|7Mtai4yn-_nn775#x(Fsz&7l@?@sWcEy2CmFb5%QfH=+lfFR0qTtrZQnvO%ON-_R zNQopJqOq}9*#C7wfGCW;dG{h2*6w|biaE>$Z#JnqWAE~(H}Reoik4-a9r?6FJ#feJ zr>I+<${WquR+%e+3CGYxoa@yHuN+m`7urqlP4({kaqtrc6s2ni*B=4Js7XV&GE(+J z@STnLJHJ|na%0ysgC{)Zn4rViuRh6gB7c}{PAf zNvau*^SEDuzg=P zW#xwbS3nU^`L-vC_-2OxLLW;H<4f&JJmm1-3Xd)EZnl-}j4Ca>A9$;l2XvKpi2Fdg; zAIgP)HjW9pq`U&;%L4Q#^t$+By_<9~hx{$XI4;ec1S-ot8MXG+LhTw_O2pkp(KYRo+Tot0i4Y0dOe+U(qG~c}Re(c$#c*tIvMOuY z`Boh4?`$>L5~$W1=5>!Y!f{Wr5EzmmCKmTFy#w^J2@o% zdw*hYn=VCdLG6iTpSU(d>xwMy1A$qtwCm+Lj6ra6WM(thGvK@Y6XGlO9dpvZ65$&_ z>>nWEC-~OM;cKh=QbEdNnWka)b61SNiOa$>ghF0zn7npwwUH{}B?W;%ENIVWd(`EPQV_VZz|%4%%>@T5L`cZHlty7o43G!0(rSVM)LC3DxOyJ%_2qdNvE*US~5p5;Pws!^x8d~8bo!#=}1yvq!^wc7cP z*L?j_P@@dV1O-lg5*nik*xFuuK9S$Iiplmw6Do+eiV$UrtqZuV|_D1(w>N?ukeT0EQY) z@s?EaTik|@8<=j`%39s1=$>-XGE)Q?F)u5ZPO{R;i0tmtYrMTZ`PaDX$-y<3p@7d@ zj~9Rlp*qNL`Rzoo+S zy;doSoZVMs0&^;IjA<1+X}y zN6Fpqd|ZFnab5yfK>dWTyOvu=J|_{WBS$*&q9=1lxg*0*D+Sz|{!7x^!se}0g4fYv z;{)UDo6d{@CtTC7ED;`2l(W4OjDXc15pR57{p?pAGMQ}aw0q*1Tt#YH((%b%gUnu+ z{N!F${W{etMh`i^9Vh+ttP7lcoeFWpYj>(Q)hPv>P^D0Z`2e;UaZ<7)y;G^hxC&l9 zc^}J6i>!e=#rtWi#Nol$_43m$3_^!6Nw{5;v&CznrJ|aF)wd5@!LH! zPy$`*vnrAf*&MlCwLZHSR^n{vbW1A?_@nHzRI>*v9r?)a8Gboh%ZNXk7=^C6&zNk& zH1D)2=RA(l!){75FJ{p|>hL3Y%ngWlk}lupl7Y4h7r$@cDBZUr-a+qUMMN#Lb}n z_UymFYG(n}=+6+3btXU%b+zq+smfj}*m$|ymvD9HA@R9sGOi5sE|J}J5J#~~6!hTn z+<)2UJ1fMq7%Tpl&T9{q0#qPRh2=HCddw1hm+%G+NYs_DL+j2^D~!0=ydi0(YABf} zfD=o13hhMita<68m)0cYZp9pJgBA%&&kuD(yXG%8-B7VwLFu!rTsg*^<~5zo#}LAX zZ)bzHZTSOH$nsWcxN2BSb~o)nS~KbvbmA9F-IK)MixVDfBqA-e_i|oL9!a8yfLVEB z**+;b{&VH2tEj;|widMB={T*1F-%xyx`LNh-mSBdmcZb}VBx_fa8d&dn}Gqh+?AKM zu&vUN(LfGJNE_jgUimMQGgI`NGAx!cVhNlm>_>hnulXYjhmK>=Y6z2ezvI$Ge73+sr<#rb)1LKp<#eJCB)hsW|MEdDgh>kJLe8_OT?%}Vh3(hqfIe`HCzu0vf~ACQoKetLu{tx(J)Ij_>+L~OTv z_Ghu*8;G0^OBemf3C7PZB{RI^u&63e)XMWc9iU&Tbg%KKRPW(Xx<7nP2gD5>G{4Ev zm4B4!^#LUPWpo!mzW7o`RmoUH1ff}!(LyiLg#+`sfwkvm^}tLZ@h$FTsD!a zGxjh5vL!~1D?ze~w9K5oe;Wo?TymdwZcy^_A*+#i?Tdu+H*Y&95aRuD9LH z@6+LM6t(Ut=lAXFYY>pZ!^msGl#Ynppq~$b&VT4$E6)3~xH=hZ&on!fQ^tI}eEMJX zvSOp$DH^rN=FF%FEgqH{MKYBL+Bi8}Uyw#Bn>+LhMN+afL(sIJH-2u1?8^r&;yz9A ze6<3ZaRxZ~>fJIWledvL%jq&7fH1rkUOpTpYe3dD_F=U=QU}_Q6!ztMWBs=qs7mTABFDmqo~*VtqqrB>EbBnpZ)JRt0#3kC1SX5=2EXw-!fu|O*C^&$wnmu z#sA_kLc6)!2dby&F2AXVh>HB*a`7ixB{o%He&wJR`Fk$L&{(7KnR4b?f1s+G`E zinYq3X%wsvm1#W7m!8*`8ZY%y!Y2ij1-4lUoY*}uJLap*hJ*R)!&D{;*~KXaujIE> z&GZ$#cPhN*g)=-9r+t2dT+`Q2?;@Z7wlO)C*P&**0}k)6UbLqcC!E zlXFH@`goF%!YPz9B2Ati`a;j+OYn2g~y`P_`w%T`LK^=0~_smju)P;lC zr`z)?U5N5*K_)LQ)oJGi&UUQV%f;)if3x~E zt9bUn*QA?$euf5C)u1YJ8)T4@KgHZ&uv;Ay=7JrnBq;deLSUyR0tMgUv;~jF_G!=6 zc9+6TuET04sZB-9cV+&r3J1hbb6K1g->48htjZT`J>&|+dWW(=z!X7={z zR!luttC&aVA}K?CWIlK}fjQ`DyTt2#HWD)IK+oB7-}X5o3CjezOOT$%l+cT&vn zei%irG~@a%Ni#o#_dDxYxL>dz9=3?e;(byd0UewzHsWo^=tS}14{_7F;Hdqc_+*WTqA}BgdIZ09`9pJTu}R9xQj#ZypTiy!HDj}e@S{JtWOCGml4?$ zu;oG(Pz8$a^O^;z+8nN7O-!gtyEOgdKu- z8mCWJeDDv0fT1GC=pemXEo5ZIiizBF#qClBUlHOMQFy+9CQ<+!#`;;mHjmVe6Hv(K zXjVgiVri|qeV#P#NGk<8gyx;rEl)}S?W>dOdDdA>>UyP$-09%f&)*)tX1Xaw^ ztv!0=qU^?x)f$4qUg)>ZOK)|afo>u)`@%J)nTR6wBfGW*Xxs*N6?d6{{K~tluP?AU_ZzRcb0QF2^tKoP6 zvINY$dqO+&x`sq1!`)8WIzHcKm3nt#Bv75~fF`1t5C;hXLn{TgR4*EpAo5KcnB}ec zM?l=_5k)0ItSFAdqNo4vdFsuT1NR%>OVP1fG^9zVr+UTM&ee!CZlE$gr<&!Ql)t@q zg^Wwl-WjDHe{HYYCS!JJMNaO*rL1OZ%IPfYjx0y=*I$oq8vD?ccidP~_ipy5wHKmu8&m8 zmD(+P(EakgSj^RsoSxApUek&OkH1 ztU9#1ZJws%3Z>`1NkPkJ5d%Z-eI>}Pdk;Mq4=Qy0Ofb0q3Qco{uxHI55$8E1&F#)ysx$YA@~=_YEK{TeYmO0`ZIafAHH{| z5&nLb@~n`ch>J2Gu+@qeN0eGK7tf~LSfyi`Z0x2H-(Gjtp@vUHEMOE9-WfVi!;tST z5*KF%^tTsJ!(O+5Tk^X26cbAS!4#xU*kv$QP3E!$ zWiHh1wV}tS6#*348A;=J$*FIKrIAjR+r}HuQJv=vM(W}6T@~3^ew-9ItkdzpC$7+$ z{edVc)sghC$mMQLk}!V+)>a${L$*VXF5tbfh3x_V#22%6l8Q@LQC7FqQl@ElDyk`V zp8g|_SACdI*uvJ_C`>tqGl6J??<XnE=Qo@jRaESHC8 zkmTobp&zdh`@-dKwX#dD56B5?mW4n*<5CdBhjt9#($p+_j@x6+#*=Wds(>zohM zo4Fgr!kg#i2+VzXtE+92FDKK!j+|4iK_q%0JRfdD{B+3mDub>Iw&lMv_WF!nINlz# z-bl|jvC2tmm?NHxwkPQ?UnnPbSQFO^*I9T&`j2^mxn7A|GppmGPmg~=?LU{ShhH5p zC8t_(*0muWdY%gqVa>;TP{nK4sDQEhSLg2@wW-G}o({BF`gK3&yBD&}Dp1C#^RlA% z>qsUwTai@@U9uqReXK(|7Oqva{u1!TuO>AciqmaBnV{e@#EWw`9x_mh6)vWDHv;ez zVKR)I-@qJFB(M}|_N$`ctU0Wf-Cd^U@B|(fHqe%Vi%=Z}@A>+`Ed^UT3|^ckL$JdR zzh{pj0v)Icmv$6hrswM?_Q86vw{=q#?+Ih6Jk(SSNV(M@67${MVHJ>0j-=dp;rZvQ zMJ13w?!0>w4asK`!5j>uv>(3)W8RLXUK~56)A@D^tpS`)QYFn?MQ?iPd$mf_DX5>c z`beDA??4d{cE{H&*YRdfTs>cgXa^m~Kn}%^zKk<$hz&M>eNJFWq@lBVL}a)PY?e5T zuoRgeWt>n2`U&ctOe-sLc`+r+O0C3L0-fAp6{ zny&hp(M8tPjbbxU~8~Wn&J1EQeef-&;OGKd) zxBi@esMQ3SZb441HUBMfaRJ~sP?^}qEYNpfW~>#l^*b5AZv~p@#8G-O6{x7>-*-{) zsK>i;$$qij7k7b8%EqZ}5L2cc!eKMd6SPT^Wa_3W$WVfI@8vv`_bJ9c|Tp`LjLvV(MRP*1fW(d zq<9cSRS|!LJCL9>NqU0kT3Oa|ssZc|Ep9CnNAI1wdTFDE52!k0i;R=~u-w}z)WJ6- z1WTFBNze1kuL$nv6#4zGzGbOPPU%G9 zs>{HRn<*WXBOGSJb4o=&yjfA_wNa7jwGVkz?BgQKEgu^%=9YnKwT z(~@@utjh1DA7-{KOOzi5pZAW6fV1Wvq{vI>n}Y|0gZ1QblT(R@b6zL6%i4ktnxP8C zNqO&w-QiFXoe3?Ib)nj>M%0$s zsSurW3v6!D0 zg8Fv1%KitQ`tkr7rRsoe+6U{R5K*MFqnw_1l|rLHz}`x=u^dDbzwhcrTU1&ce__+pVc9d|@Dm+2FP-szZ_{Sdu5V{{~>PyjDNzlE-GY+&D@o)+6y6 z$@Jg*6?>j7d?k=tj;oZ64Gd9;kf%K{3M`(P?a?9Y`1oT!9a4NP)Y^AqO}!<%7u_3K;D~E;$4obU`8b@n^bhfzan*(v z+4n}wG#~8Hxn`6Va;kEuacO!|BQedc(Rf?WyWW-c!`5xg$xXf5LUefa3}CwrF4XhT zpuEWHyay(fc9JS4u?)gtX)w9Rzvgh-WwLZGH!b0XFD+*Iu-zmVulXzJOD`_#gje=7 z5vV5*NUparb$hf7;Zu=D{bU_7^D<@do5U}$#v{Rw*ev<6X>D~ulYgre7r*m|*6vW<1BUi-++e~i!yQ^mv82#YZ zWAkvTN>ms1*hh`d{aRv&Fp1twKHZKPRKNwodzlh}&)57!)uLkcSWwulHAD&;+_!!~$=+5fcQ+ylW@wn2nd{mIV%a!|2GL zN4)oC9eKn}h6mMwY~>^wA@^8T5BDtjc@6I8ZT$A?}_FJ`wR&0D5qaT;yR|^;ks`_ns1^QQ}^H(_j)k?v3FUHJLa(9(B!tK$7kMn$ODcONxn@n|OD z&cJN!ke{Pnih_kNDed9zS1!l1Q%gszfO%zfkyWSM4IoYV^+lgAIEp96V7g9sx1jHd zkPK7UcG&L0KO+BU73_8x=CS#$0Sg&1#ei&~-Z)Lv(1JJZcR-I4j>PTXaAExWmeO6H z{hc&MMbmqa_f%S#P{jJ&>YuV!>UlGd3U z?mC7H=rmt&NkTLaJs2@A)|fq5KRO^`rw6_cQ*}dCfp?#(wld^A-}-OlMbC-XQ9~Fa za+FRN!ipc5)c#eOhL9oO#rl1moOUYxIouiq{JqGwr6Iz9wdi;rXqyZFmuad}bTO8H zni8?bx6Nc4hpIA$N{re`%Gm{Z_D=IE9>Ru#b_Bbj@j$)~I)y!5N?2#&-Gmc-KCNma z>{6xPQ5BeIYB2m?xZ+!6UhZ1OTi>?e`{7ngdU5Dojv%snJm!n{9;vh=nRXQI_iKg7 z5))`eDk<^6M$~VGfVNMnZ;hN&4!d4N_wV6!nw9@hbAF5(KCTabvpr#WtA>cVbI0W~ zQCqn>O(;)m(9qj~YfjUbM>y{KOealf??&j)h5EFJYf!aLX~RU@yP1~*Z8&kG&qUHu z)|<~${FYLLERF3tpFFgth*F5 zXv+e#7vo47LG4#36SE9|-KF;`Cp|$e;TO3qgSy^0pn?dh95A}`43J?1>m)&$0)k}> z_j5KhzmShKY2e=--X;Q6cW*yv?zD8hF3<6F@zoK=ck(l3_Y>Vcg$?@YzN0smw;LB? z$AEQ&1+n{PMje4J4zmvRx{J8aye)C?CIug2Bu9ezz6ctL;2YzV!|M5|tW00sd5hA@ zvedB2T*)&3dNpT6Apb3epESIYk2>Q(NiML?h#ds83RHu-h^;rQO&54E!%`$J;`x3jv#1$RD*+Xf;qX@lCto>OvVw zp_dang|iuW4=&}gl9?tBFt-4c0OiioPE4(F$b%As1Ov4aY3qp$?=N+qsI({Z96A1^ zkZ0n`m&pw=h2Yq&J=HsFiKCg+pAlbqa3m&D4fxAL4D|@O7qGapBruPnCNG{!KU2F5 zG?xqw`6=GSdMO!RII$QeE*a7HDIz)n30>3ag#45>%)KF-MZT@B=;;JJJ&l5+6Tl}$I22nz5*EGp&S_EWnG#KL#GAz# z@aB1o#UgE_^1`VMr~2X#ClZAP`FyDk!7*dcWBI;pVq0R5UMYdAOsbXhsoHfd99mNL3d9%H`sF z&vW)}<6JyRP<*7{+Y?XHNVKUUkR{}G!a6`E=`~D_?wPy&y+~3Q3pkp4PG2 z7eQB4_M%BBy{yf3tG>kjyCK~i=G=G6iXN`C-W#*awgIH$NhJ>V%X7Ljodi6FVL(d$ z6GA38$><%fHJ{q!@r*DV@&RD;pu*fs@JccJE8&hKKR-9mKR~9FGeJak6qG;^c#_twY7wLZ;P^1J>(^}F4Wz| z%rMZDgXYl|F*h)q%2pv=uAmz4PyuC6m&>o@cz_&ZZA`81)ZFDEkeIml+kx(=vETaX zo9n!hmvQTE75~mZ9Lahv^FCy8VKa?=eyCs!wZi?Ma8)m}h3v+S;z>>=R77J~Cc&Cs z+s6fgOuU&urc(*U-lp>L!_F0PC2g=PJ+gmR?{sv9(?J&SUSzqbA+6rDIV6x$0&x6% zy>+l~^^^;GF68!Stt+eDC>y>ceaG}8Ei#emELcKuIn{Ec zk2rf;dcv&aKM=f6Nh2NK5+go%Be1|RHK=Ln(?HBJUNqU`VAJIN?c%xqJo)_!sDoq- zbiqSsFq8RT(2_}Tt?}!yA3Y4*bmgSC)uc~B9vRfb6Ohf#=_7ylGEJ}onT;!S6M8@|G1zTKa`D#^krI}}2^V~hQubrB?0RmewSl|DQO=#`TMSLLt59b9a7 zhAQVfCYqX>#;dBPH3Nz(gLz$w-}zRS?kbvBCa{!WE?~2}rn1WQt&8E=&5!qlmdPlv zazb`(ZWs9{`RdiPrgVwpjPhf%P0aYTQ|#J5&zcV#1Yw#Fx9jEz>ReP^uy#gHl$~C7 zy&&UT(3nO}yx)8MQd|pB+_4ij0B#WJ6uEIkMvE?^(|%%8yukTJ``68`u`@TPMdC*) zq2yi3xZvcYDWrYn&Su9tFW3fSlz3Mi#lFk*hfWaJTrFF2eLw-*Fij=*o`Gv!nY^jccMnM?u!t^sT6vdOZrdpMOT53)yyw=&=*@;YloVRzew7{v`{Oq={ z@N(rL1i8^)$$R|Dc_lJh@Mw-$ZlUsI%uH&$#ADnHu z{;sRTkHiJ^4E$8~Ex@|vYu)^np6ErExU%xbs;8Wyr3`o`OKg?=u~K*!V`Gw4#9apj zXGg~J3m$R$uVI#N(blb<4vc2Gyb6QW*8@otmS7;vzWG57n5p6wAN%_C+PRs;iOJFz zSmkGh_McB>2qQduNp-|V!lle*6PPmt()$AzSp&ddl0KAfbF&nZAE7>x@9bKEEvraU z3FcRyZMI8===dTEVR?+gYn{RxroeV$Dj5c!Z5|v)Q7XqdqzlXJA#9Xe=rPmlh18k6 zO3pzcr0*ZDRqt;XCW!0$D>p~P*IU$oX)l@Q_Yp<8y0bLHoXin2(|`oAzRC3z6Wy#A zP=5%GfVdAG5>Qg$1dMufHre}E?5~IcA(4#_v)eh}9eTnOyFV2a+slX>&^}_`MLhcK zOjYq&ACdNDE@HP6lMPhE)v$W!mjZ828?iv9`Z>Ke?%QW?!z;i)eD)P!wC0#x7i2&* zJ9@D?FTlkP)He5`))Guu;Hb$R!lFa!>j(V!vFO+b*-NQOQpE^xHu}w!z40ZGgT|UFInjj zo~RR6{^*0To#^R)hcoVN)O5_4Kp<~f99e>Q_cH){fy=c;6ksI+YEDs1yor&e+atJi z4}f`BlYuSn={0x&`NJircL(5|K0^Ko*rqB=h8`zyWyU~F$D<`Zg-j*HSP-8Bx(HqCI@JT>!cf+HH9wC z%(V4`1x}~na;|PIUL&jjx#kOVjKZjAw>|8+=9)e7PsbHA&7 zKpN^!=KZU~i^{u_l4n7DeVBd8?2KEJO?tcfL9apX<^c(WL z(H_xox$Rf1sDv?4dlgir6CcgaM7xE&UNC4htzC{=vPci~-+V0~qczGt8hk+a*u?>F zpS^xk5Yxl-xxWowhn(+>XCU`> z7-l61;6w*?0Ane7`l@tqlkc1Jz&exDeO5km!ju=kV`!OMw8q|Yoxpt0BdHrq{V*HVon1s*h5 zp*~FM@RFL9Z#g}nhI-hP5KlW_?F}VTL1yOHA!TZ-sE^Ifu#06U)(^c+pM?HJ;cZsN zIJ&ystjJa5>mWfwPRfz7c>5O{n#(P)^y=S3^koJx1@-yU!O@U$SE)^So=$wSD zn5i9Bx_fQ;vZ!_s9I1x_6U%LZM|9`KbBBk4WhcB-2!GdaaZ@EV4qUSPAforiM$7Hy z0INpj8Wnvp&-7QeJy{RWIitE=B#WeTA_;UIsFko>p##T4RYXikp&bVlD=}FJ7PaC~ zQI`$}YlG1#j~<7Yz}G1b!e)WUas{R{7;6*xrr#zH>e|4aONs|3B?nxNr0REeJfQ*c zfej^OV*l$aWsptv(Ac7Bg3m0l+d>y42pHxPP>D5thckMXQ*jlTxN!`5{tc?*(-Bt* zr8cmZWcHsCf*I!`FZpRsZ0>lG5jJW}-0|9#aKE28eApI@6D%O!+`VNR*Al zD^fNTPh7h!jK{%L27G&?drQcu_r^7^DJ;XhC-BRY)MU2h<8oDQWtIR zO+a|$u71WtL_!+9#F2CBiHUP74ejxrN=%-iRTt903$OU@hr%Y5L)Q}Bf<5(7G)g_& zij7tgagSdQz_PAAfy__BLKuFb7zvZ%;K6qpv-jQY84&~b59i^iPKevom%9V4GW_Dx zClW`cnM$O{^aV|X7kpb!X^GybJ^1d214dyOW0RxErr>6Vhl&LmeKZ1i7zo#zA-cm& z?j@ z2=ub4Qvhv{&D~GHU5S`ihSq=M+Fz41NxyA79f3?>KssI7)Uj`Dsmm=_lIdS} zXo(L%r4a+Y5$4LHs^GVENQ8AkrWQ{0`Y|4VFS9$oz&@wD56~%{gb#Eg{@pFL=*0N9 zHGJFdy&Ag0&d-?YM=f>G2d&#jH^2G&O!1-X@f2p~gf1=J&gzfn>}^aigf?&B+WqbR z-Au~Q29gK3$iMwi3Nk90M$nC;^uhSoNoRx=liyNEW$*nZ?xpWS?bUC-*eB@psxOJ| z@PALNv^m3MYK*DAv_T!FQqJbgP0^QDe!49g#P%3lL6I+M=_{DQKO0~7d9GM(>7E5k zy}ZhE$rr63b=8^OjdCyDlaJ5Nu%-0?X9SZ&&Y-OfsQ~pz`A55Rxz56G;3ISs^5ZDv z3Lc|h*V$UKUjp{Q^Lvrg^)V+QxT|L!Z!P08sd=G6fse#nRlzTAfv&iu-yYfAD!Px< z;zGXb&QBdc&tFwAvN&bA9mnP!qv2K#Ft&t!>Mjc7B^fea*nrgQ2yHYGtN)2mRpY?S z>Y)|~FmmQ7|CEL@##N!7*Gj9Y_AZcn1jGM%`g28zY zBcL0opznDZM02mf9Ve6Zr*2Z0q;F(t{Yk$asEJQ~Y_nzkBC`prdeH7V$bd_HyGA31 zHDQ|>IrpknzavpBSy&Un z3EHZ+I8Xbrr8mJQ=xjplerxo*HOdKS8?-6`VD4QseDI!$Je~w=@rzv;o*AjPByIVN z?v}kP6P;XGrL58d+ni({xdB2f9PlRCzLk(&zhl}LVz>BJ?^d_B?6yNUF_macbvuuc z_eC~IAf6NTB-VB_lLf0Svv;CF8ol52P2dxiY-e?|Oqkwn!7le{rY|i1wt5tsx%bo1 zy_PETu!V&AX}C++Bs}xTh{qnJN1wL{<#GBU0kMr@Ypoh=IZDvGVAADI5IXP-h~mUV zB#Z2G&0qhhqezU0|J8W__Hh3A^8K-OP~gzI=Bs~cHZyZbk*!`Tvs85WRuKkkV8 zh5N_q+u68w)9F%s$cE|j-1{zl%IC^75#C374YHa-f>tf|WYONEwX!SRSrY3@=Ju2N z=LnSmHq~=^UA~2XhXYOgxt*T^^li8!qy6spvPv@uEQa zHY#3%%#`Y0D&Ch@nMq^(>$o@4QANs zzlIC#lx57>fXO-LEJ~$Xy#b{#-$O?nWROy+t{r1GqHSM}tbbRU`t!S>so`j*Lchnu zB5SCV2w`Z8g))yg0}qZEcu~!-)ke9&g|hiyx7X0?oWx;X+n@eEB$FRO#kCg&Q(lu) zp}uacQ8Fs~P^N=nr8QX8nXH;wgN7TA2l0qCmrqzp5QloD*bzLjkZQU1MC59m;|EpN zKXn~8*4}$BVsH%CJp=DA(Ou#C#5D@4^fhZ1zH_U&LIMu;pvXxOBCbyn|D zC(K^ziSXs`7c1m)T;EDIiA6+-H8vGilu>8Btp%D z^sUl|%xsEy%E=s8Rvskd;}R~oB(Wj5$v7fu*G8dWjxa7ii_5_u*X>A$OWCh}LjS<= z_;AugFOcd?0G6gagSJ~AxV^m~xCE=znWv3*VcPvXy&DJ=yOWs559;7H9?@RQW2|UOGMwrUvGTZ%SU3G1t|o&6X<>BXkTNPv z#PFrPryP6np|&$7+p)GDN!JlEe=b6vP+^*G+{X+Qo2&%a*`nO`xqh@%n+B87#F7l= z1@*`LFl4zE&&2ft7<;hgRlC;DF)pw3o(XQLP73FBfprEMA%*=@2cK3SH@@)k_NIkg zW1d+MWlz%!?~x}i?vLjS-HTfn9M(6ak@B>|--6uN2^b}6Pu-OEdcw28X&mw0CvS8_ z%5=>vsEJJUTWh%MjQ<~+&O4sU|NsA$N)nQytdl6E5R&aA?`&BiBd3gPCo;luPLhyu z$j&$!*?Z4(GEdoib8zf^jN>@#`uTisx8L9ApX+vRuj_R^p5t+UC_Lppqa3DDuN*s* zL4dgH+$@i0o_>`;sx@0H#5a93wELH8k)oHyB-z|;a{x$*6{=#Nw0?{)Y6tNm7Syf!NnGaN^ZF1S zxCq1q_$HY5ToUPA#mN)2_MwVn@SaT6*U$CR6#@drFqRfxkw67Scu)63&i+NU_ zntozBVl)L!KjXZ|K0JolxCHqdPG*xcHkf{wUN1A7}1`r~C> z*G4s%Fif|iMq#}srf?gVbT)x#U4EuyIUtORM@^OR*D(dn%^I&b=` zQ~eDlh)r#T@$Eafl1xE7uM;NFT;B7!Nh~*Pc_OqZs|u49LU2U96Gf4Jvt!F81wj?R z7`l&^qyriO8?*|kdSS|H)Wc-{2j+Z0GAJ)~i)2JBc+lvoPzbRZmQ;P*%d?_q^6M-FRK z8+>t9iWd}GW|gN(Sv<~h_`R-Rks}pe=@JBU*Vzfb^B%bRz)tXHhmQ{z{pJziK#i=y z4ASkZfPjBk)O!vq4xVq~IJ*tH%sn4-r=_Hhe%o_ny2tN>P` zYQi43UKfeE%~^l&OYp+^dXg3}4DeBSV^0H38AWFq${`J4A6-z&lAKlo7H(?cgO zU%g)fBz8d-aZh75d{B;J-VDw}E~E5PISSDQwGHL`HeVs@(fa77s9?m>K*g(#%sx_g z@Lz!gy{@~rimt|cd|R{#G)9EE0J_Ich%scM9SzPtg9Z*`pmhc*%| z7~}G)YIL9V6;wR9>var~-K|DAP}*3RZV!v#S^v50v3wCSR0@20h3_?>Z=P^P23|?$ zbptXw)Qb!}uhLb18rpW2FKKz$GU{h>kG8V5lA8boHs$$^C82HYf<gI;+{OXi|}*Mrs{9Ib2GZ`}LJ)^7>9+ zVvLxayB#H5ZML7@Bc)!?`=6KxMPeMZtHK6}x%`3f^Y#%$F#pWDkyJI!**1!Z@sbQx zI8{k4K0Wa;L3gnqS1SSu>ZuJ;?dsoyUq&I!tMy-(>j-nlItgHF!`~f#%1adqG5HK{ zF_L2M=+v-#{zWh&eRa04MX2HW+ewWl(u_CQ45ZokgxENpA$HHF_18X!eX7VNjf7A; z;d%*1rU4Iqt-ED}$MVTy*Dnu0)D9A{9!^1>g!CoPL<_Z%KNiSaaw&5^9(4ObxLX*@ zWqvW;%hfZmu*?3e7))r=gkbUC@5mE_F+^{>fyUa~U|O?p)TP&7CcFmi7Cs3bh(EZ0 zYs4-bd2youe}f35;_Y~6ovIKKM^yoPIr>l(oU-7wfx2tVg()}}8Qb+Le$;2|lIN>S zvYy-cTlqA)*W)3>GdQ91wub!mj@q^l8FgNMoA+6KxcurwIan`ZgpFQ%8*ei0+HLHKJ zAZ0a$a-BSBy)Y#-f^fCyx-CxS!9~CQKJAI6|5+TrJ+BVT%Ra{3mHD!!gbxwwQU{TX zR$|-+FaP2a0Q;pRwevpatQyDi12=^B*NUSOe4mC z`hSBoEJQl}w0a9TmBk!9DK_7D0r|?E`o4fyK=l7!Kc~@ijkr6TZ#nm zAv*VaIUEi(HDT??Q}XmrRaaHY7_MPy2mMLdJ7FH$2kzl)580Ong;$PMX4XJgU^xLX zvG~Fx2FRo;6_m|qmiZ;RMeiS7^Q`pr0o!R4y35t__cjW+^XGlAY}oRzG=v4Z+x9n; zu}&AgP1xiw|A6}Fw-a@7C18v%P0@*5$|^E#d+RpimsUp4jqGmBbd?_7 z(V!k8pfuC7M23nl;(sdW(@mTp<#d>>79kkow`c4Ci4D6nJfs{nP6$4ec$$>MPUZxS zUCqeqy7n!$u!6LIJWt|ahh;kN#V^nUGo3U@e1T+KC4Hd&hjamH-^F%6nI!MxQd6Lx zAHDw_2LenAf{?Ppr$DaQbJxk|29gO>_Nt?Sj>V5ktU(|GgaUdHZ>XQ4UPACc*gt3U zLD+sswfjjzqtq^j>f$ ziL&~+J@v>qXvtkAgb5VA$m)8GNB(WYnDHk~fF#E4!OBLr>K8Z${d-q}|&0aOIi5dRid4oQqo^Z81 zOi*6`Wt61;n4l~4p#Gi4TdDaUeD16J>1^?LK_`=IGh)0+PFK^CV-<3;IadGoC7n%< z?1T(QsZFEgQ~pml^csb{rb$d2y^D$*xGNg+s3+O$`Dk{Z=1cxw#=tI^$^_1f`dc3nw&2dKB*X(p zwmlX(ItJ@}YJTS72zxEg`VjMxq1Eud`cL8Z2!IdPbq>NPbgy#GbFHm3cBUQrIL6pu z@vjDx#Ce1c7I+)OO}YEUZ2XZh42iZll!Ki1VNaB`px7 zte?y1%p{$duBpL}7V+=8+jEnCjcWgAHw9KyKHU2uAEK)^g|e%wo2|PW! zAo{)?^>m`25*Z*lMOUMsbjN{$;8EpChD+E8mYqsR#LS)=iqH27OFD4>nhjm=;yW|! zr%%a<5f`Mt6=LAai%}{1T54eCN+4(JMlHI6*2cpijQ?glQY+v0{ZC1BuG!6>x@=S9t; zLrnc>Aku(jNhi6GoS}d`3vs*(za1Q}a^7u4gwbk427MR_81vr=xTM}^^tT2r_!Dur zItHKB#;9g^Rcsxop%0r3vLo^=2%D~1edQh#PwXH#qG=Y%8>0aI>A2oxnF73$@QC3U#y$Q3E(aRl-kqyE<-&kOt7}qp_8UVzrUKa{~ z5IXFoz1+fTFbKd#=?Llw`>#3JyxJ;8xMc!GI%78Lgh=;y9S=fku&Y8&V~8(`vqir@ zHS7GN_xSaYb|HYAEKA_rw{ktdV^HQVCZ5z>j0TJ8RXHQ>5tqMy4;tj+@?Rl{U~Bv< z+$d5*m$J=ecAmw$Au~?>dy(JJKSwIAmcBiO8wNBD$%9t$Z?Wu>9( zJ02T1Svoy)R7UzCeAx%ax(_Ug3db=GW8>{X{%A$O_6i;RlCr(gIh2S40L;AJj5RFz zNsu4JDBYrdN&?Ud1y~5c7s1*`DX!prMUUB7yU803Ou>B(oqgYk;LUt?4;g>$?y#a24_^oTvth=Z72BqjanLz5(9K}YM zm#_ElIqBv72CSj*d%;^kkFein;FZrBJ&LIfc%+zQ7UqKx+wp(6YbwNaHcpR~N3~RRoUmZ8_HQcKg1`qT~9_TqoNWF~jYZv2w zId7r4@ob*R*D*?WqsmqGfgASsgh|X%$;LVTX|MUwaAPyS`i&OM#q*a7%>(3~Agpg! z{-`D`42z+s+q)kFDi$yvH?97JAsl@Go9)554Xr%8y{lObrWE(n4;gR5eRM8~*gQcb z8%^V`O`%qU=JOH;^E<%@iG(T))nb92nr+Jte{!Ne&N=3~dH)*yd3?+m zpiedQR`e^B)Wzf4#!Fs->m;exY{8aa1~s1eyz4L%M>Fr)-)D%?Y#T27kH&*Thh#c~ zS7R*22iBf!>rvm)*vvcnlhln#-mU2RiQ0lk28gjo&KaPaz#1#MND~k&G6L42%LTEV z0mZ-=9ON~HAm6KzR-Ikg%V3!esQg9~4|qcV6?KE%!6DCxV^ftVdsK_C59yJFr;=ON ze^k~yMhSPi|JYvmgSY{~q9?N#v86Er27$7f>9D+>n1$nZ5P82zFQEB4NrA7o$=<_v zts&lSa@lY8YL53bPCEj32-In-xj9kaTlqA1u6Ii#ZmG}!`w9#XqAAF|aa`B5sYH|w z4hcwFF%z!_8c94H0P}U!>`Cr)ymj#Id+Ns?wQzj>o*cmINU@>X&^28i1C} z8Fxe)t^)pgQUxu;?zlLuA}S1%gRmGU@Dle25>hV-m}fi92XvJv*O`I2_^KWJUNwD? zcM9CYI8qlBrcu&o3K>CZYMfCd1t80Iv^FR0Z}UMs%9>a|s*_9A@3D-R%=)*lSD0w^z~0Yy5YOL0 zzYW;h|0YTsKExv9b+!hcE?>37KLHcujU_>KpMuBoGs{~S%Yhf!75}7!r@-1~O-(PoSfw?NQYi8QgA?3ZGOL6`L*PUzye!n&R+2Z!eC9i3}?6 zD^%*>;NMrg^x}S3G47o_n-Lm|oXQ@M%ONzYfnzOwaZ)OHt!S6WCu@s>pTWz>-*XUf znH4DeBWUszE;Cf8kstbav&JI^SV<1sgeApKcz_+c`geRq1}cmD>RLE0u@ zSiYPX1@6lGqzl;dS1?XPx6hbdJ|U}JoXE?WxuD)#5x@q)7}9=`eQ9{M7NL03L$teB!N_9a2m!h0gcu$F@{Yy(cFNLezjpdc$i;=d zZM}P%7hk=BbxvI3(lQ5kl5zudPC7QvPy?@V>W}^?F>#KjnS>aEo;3VyCSbHe9Dz%H zB$g`(ZgHXSK1!rnTK}pCP}xsUyapE8#@Yj&^OcB|P0k*Fc|1sEp94XI4hAxxVntp3 zHX!E{GXwDsXIbxi@UDHA@tG3&m{b_J@=V^! z(TLNrx!SJp#tVNLy3l`!|AV7pT#Z;y+RvS6`i;ybG3}d$%)U;*5ndg+778}7Rv=b6 z?BiwrqCQb8kT@eZ+K^<*=q`};((F}@+^0&9@pWW;I2`|y(*HGq0-ylI%n@L{CxZfO zhCk3v-x=$87V>v*dw0!GzN%4$3Ics?lIdh}@UJh3f;8BAKYX}V(Vk17p=SDoN zg}a;8Q`vS++rQCyhJhx-(@PI^VL~%;8`7!AZ{$W_wObBBd_om7Pmd)i!QW5sZ-7&A zHI7lQ5cW;mF*8WfMoWx$xa0Qy2Q`n97Q5H@9{^(yXi6QU>bI*x`Kw4a| zaKBgx{5_X;-CkC0q6OfZ|DZUT+5@&eV|eh!a18OoI0)s^xR zNw+YGH^TY3&f~AKxASGU7L&@XogG4Fs&IFB@2o)q#t6rjehBo#$6iW_q6V`?$LeZg z90;~(^{T2F*0w8h7P8OI;Z|cP@6K8;ir$Z~z~CheRKiMTNqT?{__{$(*55MTfUmT* zUd_`c04O!Plg_HVz1y6)yGryKUUftqa|>?cPPYxE5p^~nZb~hoh+~`G_-a~)6uB&^ z(vD%z5m5?+r)4}!gl&oSGJ?ipJPVr0`zI2)Vj|PcPTxAq)w_Z*@W%Zw1+IvE?o(Bp*M&SbOPU&KT9v~kD^~$32&Q?qqAf&RdCHi2DWyB@ z>MJx*-q`I5G4#)C;O-YDg#fO!Mjg4m7n*C>Gy=~TD0@PL3zc17E4a*uV*!bhFrjsy zmDoLLRXu&dJWCJN4yv|(cYykUl*@>UMY7V*+Nfdb@|d{tE3x6G5@C8-HMz#(^hfZf zv(Xr^av*$gr)Ix>R!^pS$@{kI7#E_50y$1(=G93QDM4g=0S_nPNCd+QYL2N$sC|QK|i-XuUMY4(Hn*%$7#s8T?EO^D z-%Bz^%dHdB-U~hNWjLS3(46aBMfWJR03sq=zvzKDa*(3Jkc^|QYpGB7FT3 zcR15Y+k!u}SVYwgRO(C(Gyz1aZoE|*>%lNiuz5AoV-khH`ycH7Ry5PrH-^;6;-0E zZil$Ng*1|zqrL$3<^i}bW5N6ZZ!=Ln`7$?bQ}iU_p|Dj0lB{vG05a%_~sM^G_OZsK(4CInMlj^Q?O%pcw`+LK}x(hkur zvZXN3J-ekd_)8-?As@IgKgL=PgMhf@xSDh-HZ(Yj$b0^)O zjF`Mh-z@^`Yas4P(?1i%&(Wo8Mvp>njoTxPhp6-ZG!A!~k?B9>jw2Qz+e?J@77I`L z@mYRy+javgBNP`7VBah!h?ir|$BT~JPjQ+p5!*46TXxI|qTZ}SsqY>LsM^gTo_+4} zELXG^T8k_Ek7A?KDl8!A`^FM{tu1%psr;9~E5GxuCaQo{WNfPOIK%2=%9qafT8x8N zWauv-{MIKf1ZNtPohk*ym^`iF3~1~zZX<{jP{79g?g@)HNrPJGQ%8 zKq=a8^&9=5`{TfFhrz(f*1pW7bkt4Ww5QiVbM#+Kf!nLyff$OOtC7`#`hmNu?%>%p zulC4g!t_KLG-&#K+XQA@yibggMpTToJbG|)fDq+h1G4nSTjxJJF84`!3E*W$G#}bE zpJX2pJSM>3G46Dn%Urfc>kG=&_T^L`oF#vQ$WB!|YSyotB)4&>)U`#EKC65X<1tvO z-i*1nh{!&|toHYcF#;uIW?hrMkxt6~^yF7VG7}U?dd9bX1fM)6@IB5;h1ZGgbfMjp zcIe7S9EbvsNj>mJAS9qAS-k)?P&#SIihF}DLilyN0V$p^%#Z0)dLOQ)X#>9jk}g*` z*yHhJH}Z+-O4&n8N;W_|f z!AYC(UXI40c3X$%V8v5yMhhIn$OrxomcBI9?#v!#$C-&TWlmx^Cn|CDQwAx z^^E?{iqWt8L?fbz6qlP?PS=s1&o_@+@z{MvadU${<&&JZBZ>-}xET_}QlZIJ`;CUx zSJ~X<+G3I1zv2tvr7Du<@FQyEC663gtz%oTV+UpLm>w**Jc^OQMdYHF8}{oq&eqS& zrt@gKAu~gX<0^x#?UEt$A^fx6sXsGpr*@m1z}U&CMwoaF?R2?<*2o-f)%OdxT?KxW zL2D-JJ=oQq`Bgzx@BbCY^;SIZlRnLc`ACe5 zEE_l^9n`d3t8^o70^-~Bu3dt>7||y)6(J43TjII*e#TR4v8)Z6o21UE@%j+67zG}d z@$e%(M~W$9=fA;ui$p2ZMcyNOg&$^U@=9U%<*h;wZb0?26`L|Kq`k9|4;_lARwr3k zM_kW!qx3fsEs9Ou+1;vY;`7-cUJjVc!^n&vE$pyQ(yxltZ5I zw7gr6$taF^ayL@_Xa6wp<{-agnT&YtVzy)jkn&$DJp^im-#t3`c}$J!e6!$wFot*1%T8oQ$O2Fis!}qBy2Dz4m00fa``GjF zAHd@TmXS&Q)H1gNH0{)>r5rtVuq9yS8%tJ?iHPJt)m?QP(Kck zWM-%z|B`B>h%!G;gq0PDJuL@%+&$fsbS_6FVgc^=tVoGtZNvKJa=VPl_Wh?q^fi0l zlD(2FV79RYyN2kOr{0@pgdhN{F8eN8fAhodO0$rI?ss2&G=M@`Phnot`39LtKGGEI z{pStsP)7>RTrA*G+Uq-Eq3g`{?-HYu2Fh*@9!r=X`(su&PwOABX9%`Mg(z46J~{@( zxMTw^(vb(=^cXxw-4>%hH@jl;H* zVe&$LC##kVh#-DeiI95`05{t#LyCVcqVB~WCpcHXWXTu>rE30BK$mzGY~j@m#m=+o z7W97zrZL=;8IaZtNj-_F4v zCt~CU)T~j-J47Z~m+{h{0gu#0zeWa6fh1ZOn@12s#r@S^wQuVFf<(cGHJCok@c7@d zqDNT9t}I1#U|3Sl9MKR=n9|#_HOqBKYlGDmoUzuc@XJ8&Kh#3fx}?x|zryvoQQ@s? z2K@rtJ>WB$ibLdW8NSD(^f{us%0!R+jx?eyt8YBPh;`H|cFg?^Mb$|ABOMLO+cqh% zq}w~yBJ>(xn6D+mBY5pDBZ|JBN9T>uWkUou+r1}0bgJC=-YLZUu)}mjFV$yDCM^Fq z-8gR`}Q>HxD_hA$Jv3EKvf*SIgXbI`1K9DfO6S*9pfcVc=_yvl?!KWXf8wbV5vl}&=^8Xp!r9N>hNY5>WTU#g%9hM;$ z#TqgpWsd9y;^%?vDU>(sI$}fyP4V9khoAJ}_t8g?L+xQS9ToYLsezftzNZ8pbMTXS zNx&%TdwNMOa(4_7r9Q*tzl|#ZV6Txm8&$%vUed=y$3|xxJHL8uo`>kGMKI3b&|1Lx z(NCXeK+02jYh$ft8gpsv9Hog(1TL!XS;N%anoxx+id&!G>lYPKSTA=9ZC;&5Zj49yBnls1 z+FY-IrqFWY?fHG@yr1)Nz3zyU-;8GN6n;~O$k2NgNH0B#ypzl87dhW?7xIa*=dQbb z5vze{d-kKv%NV*$u>NIL0CF{r#s&&!j!F9z^I_DD3(}C8>c20VBaN}EAu8zoeg_`% zEJ9?MLuu;o?&s=RTsOI(ygXYI)kAMOM9kNZJaLbzDqv2!kky}#v<3MV9E=Hd(hbLyH#=bCoE;Es>k_>N z?q$hQf59d^DK1Mh`R+YjUyR49Fwyrsb$;0X+noZ&faXU2?%$AzhqIJzY}aqZ2P9}g zQ{iWI|9g1RNl@a(ikf99TP<@V=jrILwa%mU#9yH=LO|}3r{3sAuCSy_A5g(pT&mXT zdF20Ssyc49H0dJ|<(nLEPZbcF%0|wF@Y2U^BGVqt)_u8*{@b!5n6ov?=sebEj%VUmU)C{9cCjz zaf9^exp~uD^Jnvh^A2_-j!I$Pmp7QLXIDhf-B*W4u~=J?sp|-1&+0;F@aH?Ko;OB1 zaF$#>bHB@(OVj*^iv31|#(AGG>^(383v~|0eY(Cg7JM<*(C| zA15$tjvuPQ_vkMyj0@2E&9p6! zhInS1Q&Dh@VhrA;&smW#+{7Ph^;$p!>`oAZTc{EUbK0+Zk#coQaCY5XG%4j*owA0z zuD%s*yuEsiR$$NkAIf|+r5(7O&2Eh1rkE3pm8Y5}bu}`AVdoRcU zc7#rlb#`|1d+nDz#`klaWgH;960<(vR*A~(`Zm#TYp{O7&tOIR>I?PUp!)|i-)sKJ z;Vp60Tpub6Kl^bc_}Z4=FPN(wF+!#GC zp15$jB5CG467=*Bfh*$sH#Xy;!%-q?e_7%L4*CnYeuwop>P#vgTRxm{0q^Gto~KwB zBL(S?IzNlV_7AIp!o?||m5cK?d+Er^pQ^o+@Vz$s$N`TZE8<1qByf81iT2;O^t0)= zuHuvAPbiFJQjw1p1hQ`AUf`DF?NZ0}qa*#M`#Ofz`~B{ zlp*L<;8fsp{PWhbE95QhkM6sM+j-0_La+8ZK=?{vdMu;+Zp2ZW3Mg&2u5M%aI6k)u zkaM6@qAH0|%qvjFD1Jr)QCZbCtPFsyMeXFnU zz-QcR^jZh=cHnip`IC0Zij}{*uP^QayuL{X8^(Q zUsHHd_Xe@dPOk^)A!Km-t64jWCfDxn5yh~XNZ2~|;E?GbJ6p5A@f8yJqsG5?rQkUD zdcrX4>cunL{ytNvirEzlit5Fah!n;E+w{h+hv0+H#LHDs)zhT8g{l2M=+W2%+V0xFBPfr&l7*6l)l%^dB}l7WWo;Gc|PYc;lA|e zD|^mxnkfB#F%8^h zEA6y5Tgaz+b|Sg=`~%GK7~*>|Rj~?}T=4U^)!^TZ%Jj8n`qHQTmri>vH9ci9;_h!$aJN%n6ZUBbUTnZb!|4TQ*RhKp(m=#!oatA5Dfq(Xj(*l7c^O8r z^0xMJqa0o!{2O=qKYxA`FzvY+ZRBVATiqhvFui%gMAxVv=5mtIW|s=Y#W(feYx6(ul0f`nb;YO%c9WWgmVMjBNRaxUU`&hOZYBP`e7C>-AePKgYB zbG65ZZQH?AuM^O$a38PfSdm|bB2YC~{s0DZNl`Ng$QLH1{KngIh~VZ~@?t3t{@`VT z(HM9abF)-^L9y0aHQ?#t<$Xjq zvxaM>FBgF@kvyZA(=9ybEFp&Jm1f6qk9Le24Y5iC54|W}Rxzawk}#c9yrN}DIWO_F z8%ox4aP}=CPHId`{OO~nycg=73*YsW|4@YoO}rLeSmUFBZ%?nXjtF*8!{5&4W$c%m z&*M{8`As2jVslrkG3v99elklGG4KG_$3!QilTG0biAHW>Spx|3+!z*+ksx_YiLYNa z2Bqv$M+;3h`AYEA@YYg7_}itozIHoUnTz4!>GTjk4p1Qn!Gb5?2;c9YC016*e_wW& z3o7n|ItcY*#f7mX6Ky>9BcV5rf6S8WxG>Ai)V*M_1V7koJVE8lqvR(kl5Ie-nM^;xltqnD#?8W}VTdNhgFl!i&v+>(P-m za+yO{L^nDEGLb@D^<4}>{%V1*kAwj>{UceMBlI1`aL9Sw%8TpB*;~2lAHj{(dVY#c zpnAu8z$-tc+eeXQ)F2u2#l<>NV6P zjXbtllzW94rLYob7ib`?@|m#}-pRCeEY>2w0v@3ep+60x$fodZbPW|Np4W^jB$n9F zhmPe7_8&h_N;QRT4n~(?fyFdQ=O3Mz)f@JlB65Lt$$!0@uXNf6c}pHh&1wuI#T|#j zAti*Qsxf*!bgGG$w(CEY3VZ^Jm(xFv_M7r3aeCb7G(B3cCz7x2;@wN+{>1;l)*r%^h)>aI_6RWjsNJ%egoipjJ~qRl0qc z=Zf}V4QrVGOor}JI&pB=qF?WUQ%rx2dvBu$%HnieRc2R^F9Q6&>1p^;5@arB3Ums> zLdkrfYpQZv0uhMW6Z;5+;2z+&wOfN(SV7^H==p3gChBQxed55Q*!23{^y3*yS_8j7 z(*_Ft-IsZ{_6?qvxIhCxrf1`?Z*#e7(E61;!#yUr>IY2@(jg7K2b&9Ioa59XF_PVI zllSOAG1<9}u2*osY7{`1b#hVbH9wcX-#5WmVX|pO_8aiPDchc~JADlYpr6TD@C7Mv zr4UGZ{M&!~z?8j_Opoj7`z&_ex!I#!?EG*|!>O~Z!K(+H2c?_w&TH)y%APUWmz-3u z-aUikIsUQz=_Ikv{Y0@8&tDy}=NM6aEgMX@|IIpr6<5TD`*`KSXU>FN66!zjE=?YG zns0S@C=kH2`4Y{*0Ffcd|13c7<=ZtZjBdm7Xpu!uz>EykASxS`*t6?IZP&@6pFF;LN7SX-8s&r`>NAB!F?oB(>bRvz+zMLU%+qfr7eJb2Q5T_}_vcUc-JU zk`ONI|I%5gk>MKk7b4w4gXnI*o#n+VbEuq6Yf(5G1;C6`_q44)&t4B!q!v6{DORUX zr;pJZoz#ydpchKX=K+o^1JJ2?*IAlv1bwkS7k$KCyx=L7S8WtUz!xSn#+WX=acPS; zAbg}xwikvXDdai#42#W>1H`g-epYpxEfIW6Zv>&GFZ1;4uPb)kf9zKT+9oR)AwTY< zmx*uX-ah#9MXz}{ftD`rgi(ia!RBA~`eZ4+?fyUjyWI&0T=90=j8t-j-bjBZO**3rfQ-Di*2SACQ$>i zk9X%UhCsr2Sbftt(7r^%YnhU6z(h=6o^INChVn)1B3J_l*uu-W!q4hyzdmAtlnlp2i^b31cb!1?UDfP+XDRA3uf4wRjF1tdJRc zZND<_o^DqvdcZoWyn=ZQ5m|;sB93932IFi?88%P=B<~(X`&2z`m_F)tt3^7@BlmID zsgG@h(#{Kb@|_Lh_A|p_69g<=-8tJnoXznIS|YC_goY5Iq7p@KZ|=c;t8FYsr;Ua z04-NpStGlRrhWv#xBTy}+Z)z`^cGF3QEf`L&$Awp1LVw*Ps-J@SASyJl(UZaMTZ*& zkF3sI4E#x?&8Jq(uN6~2{rmW`!Hi>TYQSlJV1f5!IoPhX${oJ7WQ-tuW&oe$GC@u8 zy;l@jGAE8lhE}^Gfx1^oidbcyALs`z3w$F%TUf4Jsc$EJy1Jo|`ICx!aa#8L`953g zgE?>b*BaJY_E!`3?WaFK$#a(4XgbDOnTX~Gr7UIr^!0*0K|URA{S5ggMp@{p=w_9z8#(8UC(j zj$IzDlcK;R+T@E3{&e_Wzj?8r|9-f*+2DvA5#-;QUU2*=dpi>F58F{jZTkGy8Btp> zKUqibiis!E`;>lOAAI0*FN816e!Jexw+**rTR%?UwtjO3--^u%N93=MAb~N&OmUBb zOZfg_#cKDsRj!Y0NlWG)m_&hnP&j6BmbOYSglJ2c?Q}v0R{#SiQ&35-YJs^H^i;ba9!0m)kT{V!@lyr?!2h*B`ceD*72~9_sx&=5jJ{ z{}Zx$!|FKfhOz?@#)Q3mEj|| z6v9-rg~bjqhll$Jgoo4VNaBfz66<%C_^_X^6;J)J`+vRke6ws0((X|Rs>t<#R2(dq zzfFW<1bGO>{72=>@xv{Yi7Gu!CHtKOpI8e^H{C47tbyyZULy*vA)ZRpLoBg!;Fc?nALxp_gkE}RClkI3S{KKWSD1CoiL(hz})2-Zpe^1Z! zs=Cvg-wH-&b?I=bDA!9dD7^?Sm-)DnT*|MHW9L%V!G?%m>s+c4fzYmx!bq#$q6c$N zD;0mk7ax{3tEFUk=-^ZKa%GYg9~T{+qf8hP$0n!tjYZ26Wsp{vA)kZ{JB2p?KMUYu zZB8xB`&cs8{jQ&=`#Nd~v1tz#E9Ct6@tUUZqWkO3tv5%{_qKDzhf9g3c^K52nn@qO zTZK#$ry;>v>XJ&9CDd>Vx3bWm?h7+Cuq<-eV@D5Xxudizv0O;E)7L3y5Zc6kC2OSR z_NBj`%WBjY-dNmKnz?`b1sAVeH?nJGaA1tXFR=W>**Nj@F4Yc|`w1A_DA$D&Y7ecz z=;??5#zWYk)C$ItJcg*y{*!_bW2ah((pSG{=(`j4k7}%dRfUA&LuVtn3OtB^SIc)1 znxWgS3XGT7#_!TwUB9D}7y|p>&t|XVnUMq5V$UJ{U%9L{Xkm>gQPY4G^#0yxVZ?9b zJ>QuT!9>#CqvH|r?cSPHQy_TlJ`wZy#ZeAs_P2|~FIw6$eY#6)3dH&D!~Pm& zLP|Pn-E`5#<(hpHkITbeNCj;cK2_ndoO|ls=EAM{??E5*DOWY8{PTgYBzWL_yYD_- z#0;`18u9^kA$&ZOmZ*m6xg+1Oxj_Xlm-gg1ix2H4@av@U!-td{+5<5D=`@fKo+Hxd zookl(aCA<|?c8vAx9mk>j1N_bdcfSx8UoEf89G?*4zYZLJq`2OJ}&%u%qwklFl&hR zZH;8WVr(!qiC7Hfi1hzxx)OIN->_RDMF=5#^2=68l-*R4gplmZl${CLw_z&#o@`|s zyJVSUUnkku$vV~<`!;rlG28q3uJ8K(gZsUn=X#&}KIcB?;O^Adf;0CO!9oZ-_IrPS^B*i7;)1 zWuBh{*3fvaAjGt;Zb$mI*g+zJEHIMrW*r=YH#$@d*&Cid=$ZLFpzN4>j&%p2K&Z0i zoma$gdH+F>Gh=$l((vy?j4$=9TW`nGVOO=b4oP33NeGPV4#al=*LlaWMuV#7YpnVY zpL2Z#pKm!G4 z{t?2o{jG0gF&2>e~V?Q$u*yYlA#f$SIbAt=6?H-iUaeWcO*ka1c|GHms`0E*zpM7 zE^ol#XsUy~?uN{QDWV>#J{A?qa-g*XL^{wHyc!*})xuoypNKbPr>BkIPB3^{9D!`R zv5h+dF`pA{#G>h@02`l+dlx7+zHO5-hV>In+*^qB2`W*Gh}#0tGL=r4_NL{_L+i~1 z*_!W}%l&6FQC58ouW?IXKskHhXY*dewyU3xOj3gJZ=^8UJ%OL`qrn+C%EIz#N=X_h zF({LGI-}<`AAPPF8Cuiv=JPtDv%Plkhe-OVr)Db9V0ZR~2znXvux{zb%JU7=( z`s688*u1EpMD+p2YN#CYqsj44(MWF zGTKv7RX@A46ASoVam3d1vP=1^z`6KuYf&gEbl~<+(f(Cfxo?nrwnc;PdAS`_kJATx z``iNV$P@D+AyzCJSXIjM`{-Urd3Nb37t4fzfPILL&IX4p{0#_!FQzQ1@Rwc*_C>eQ z%@^Z>t1LTB#(sgO!8Y@#u8eZzx5N!fY*XI5M4&1D^nLLrYo*H7$Y;Ffd78V{WuiFA z)cB@a@L@h;@#%dM``m@$__A^JVS5(xPNV%WuY;*<&M(hpzyS0)rjhz1`0`P@IR`0$+=kn^hMuZN3OD-G-6z52p>7_Hi-J`MHb9>&Y_XYrZ?J}|IghjzsK zZmz;|biFf12~434{yv+8*4)fYV-_eiTKfU4Oh^`vF(-<<$F;&gi`4@>E4Qx>v@EeUVDv(u008N z#Q|&iMh`!%2^h-lEw zz$aF@*?Gb2R>(t*FOi6V-hk!f2S(#7*(bVN5I+=_@~_%Lt)uMb_ur1eYYzkoW@nHAR-iM` z{w_Xp2ClI3^Ba1x+2tIfi{eUXG{`>DRoc0~6NK~VYcr$sdz)@n09q#N@5~Nb$_>dR zn)Ww-+5u6OanFbPj#;t^&o6knxxK*}Qx;s$VJJPgng8e``^mPSeifxAo13=v*~OG- zy?KcIOvzI9`(^E%;d%_D`fv@24tzpqLYbhr2(x5%SDxFfj&^CXHwhdPCS*x;dZntr zh8NpLj-&D8o0(KkuK2yqb@f&AR?NsMPn0v(Vq30g|IOX*-o1?o_H*|&Tc--pmfHyG zeOZ;g1wNEV(2nf0yuixXtp==yriL_t!^7A^UB0` z$m=x~wd4xscz8wO)7l8@Vmk$%svq&A=lm_k6xIM(EeBjdOPX3#8{1jkJ6IL3=&A(f z*sT0UeQsrIl9xFre#bd4YpzSc%5vCby~&2(*Pd|xps{9Y8u~QWuj+{Q4f?C2S`#a+j;)+&>2Y>Nsis5 z5Am)fU2{9+Q?>^E3-F8w3!Y9%>Xk`Db5%~CkwWWssq5iXA)$wHs90F7U9XgLlb z1n!99E*)|z>xpM>MnebO&5hbTEY-MWwr-M4u~Kg`-&XV|`b+`l#V0^0=pO?0@T8c9 zpM5k-&bg`5gmQeZg1=sTY~6(kJj;5dEZ_mFSbNN}X{5*GPW$9OP8Nr3rYhG~0z?Y7 z_lvOgCK~uvmRU~95B0TZCbyq>)Hq*%vS8MToPBFFmF`E46iBX(ee})V+hom5bKX>- zIoz?Yx!1ID^AFu`zw8p_FZlP@k$)`Yj3YUVL8BAqFDy%RC-uE`7F%`bgP}PCQiR+P zt>SLFkg&o>_rM77P3m37M@%a&miHo_0{NP@I#oH#a%XYOd_Q@%b@pjP@ZdSH+rPr^ z!{XVpY$SG&^I4rY_wa$Q`J6y0qw&fKHD8h^LbAu7Trzw>0RGuB_)QkFnM{eN8Mk@V zNHLePCbQk$DG@@AhR0O`y1kM1TzZ^Rl-~JCVFC?2`tL=+*4nHh!R9-Lzdc-_gqd2e zM@{0KyZiILK)9?HzP^5PviA$U%N@UiSwEgxx!6MLDRFgYPD>Th{5;L7>aSm#O^I#= z9=02VhfEFlpfl`_sNtc<)Y2*mTlH`{?eh_LT#KJ7&B)|QapX!bYkV78{FkB08oDKP zNKb+j9c?qh1JJ-i*$=IAamk|RbkDBq63cg4xgTQ!o-&S0TQE~@;Y#wGHe6#D_SD3P zekSGkO7czO?h^RK!Y_Tc?c|q6F{LM`twi2rAK+n%Iy2>DpI~{Ey3Z><3r2@X?H;&^ zjYA1dsjHb={_^%@c6QHr!zI1!g7gaTZ{+q^^Pw6gms3zi@o=T34%u2b_NfK&GMedQ zP#ZUww}K|H!?HTkKrH%^fFNzNO^_((8SsAuVL1YeQ5_^Qd6n+R|sCnuS>rm3$>;u@W2^&~{MvhR(HW|pFVf^HX4tN>B9 z%w|o`c8xYAuioZPgZmG$gp*U>d4*r8ZhVh<{QksehsBHlNs(|zSQ|Se2kdikOADGoae;zn>RUGW5g#aXe?xrLMtDQY5tK*gp z`5?+@*LwD+7U8Jl{n|3`Cu9*EcU`0TED`M@B!BsSh^(#-rr;zO!V#Du^1zUry}aa_3C`x?Ug2WvGiB$cVT8x4k>)p5jAmAVt+0$o zujm?XzRXMimr7w59*xb@7d9-Y>L zme$_279`!ki$X_skM7Q<(u_;Xn&6N3ojF6#y+|2Qtrhw!$`ux-pT;;A;E8=WEZXcYigyW;^lc1c&p$J#jC#^ z2@*6|C4(oW$AZ;Edwc)UGyW(5jQm_;_jvGJCe+ndj%p{bPhh!HkO7~z{a8njvuU1R zrSmer3HAF-LdWTk5$SCQuz;OuU&h)Dq1IXhw8y+>0eNi2X`EGM=IAyH#7_0^IuG1C zv?It~Ffp;^aP0KVql)eIEV9ML!U!0R;C;?a+&RmENxAMnyH_=-9XUtnW4e@d%=pFY zWHLUX=||y--(sY!$X}QWccdoW*I}iTh{GQ<;I^^@g|6ur-AG1C8TXcw-S5)ibG+<$ z5YYdnd_Lu#0|KE71-cY_vW#9%Ubrg~Kq(Q|4yT4%A~Zw30M(R$WU#!(pD!ndngl@H zbxSAbA*Sxhuh+a!T0+qebBXK*0YmU%X+~_lZqbNI2{qsbUNJCbnZa%C15od9h1zaz zyHnc8^;EEpsugcrA9fv|Sf}MU4z34up+uA)1S*=a0j?w|clmU2Wd@x5*fYsr_{=h& z*DwifvjzAnmNCW3JMBngGMfC*OO*8rjM4Q5|7o^rYdhl;H1PT*(V1+=f6CGlYl$yu z=_~ab;YrUV6s4R-nD2J`9=T_+tU0%HBvjqIi zrHSwtKhM9@lLmKDaM~IfI4;t~QKkaksRP-0hAzLJRQ#Mv#d_4OIX1~8D>SVX1g=2n z;k;^zlXSO61Kod+=!`I;XNT3y3X)(F5O;5#U|;U`JG;WC zr=>eY{GIucrx<1rGVeh`Pu9+&hf$!@3;<{@as;L3?qxG1eSd39=ta2@|-P2Q?cce!|VouV@ z8|lk}xYI1yqh)xUE-+xEOA$oooRj`Q&dsZ^!Xs2H2r6&n3_q<0VRScr%RJZMj)H>n zb}##iUj=oak3aCAXX{!qkTtmFH%I>L6G!r1Z32bMJAa;e26hq7`{-MGA{5ZLR0eP- zo&Zskwl%_5oy%O&Ni)QCnMrLt@gfmfj&!4Vu@dJqPU8#}<-M&>{eB~CVRcAK4fDE@ z<*SF(<-%-WRKSh2)v-J9FR5{G&4s=PrilxA#6>d1gD9i%KyGH@*}889Sn}0GF&?>R z;NZM#JACdAz}I?P0+#gNAg0;&SmIX&%T)QC*W{t+BBF}M25ato1#GetGTm-k_#%m_-*FPXHn51wKT{HtErGk7t?%@=g8=rb2M z@T^#qW^$#QJz5V)+-7cgAuokl37j9~JXbL!xJXSiA{ECc4=u6Y6W=Mc_WEvqg4$j71Gx!^#FpRS&LnE4K(#%xrs? zoUNDr2HGuS4KWBq73c<(2Yslcb_mmxXDs8zm5+~Mx3{$h_1q}^5AJ?Bac^7xuk~c@ zaeY1Y49Ss7EA`LHO1gh0dKCKEElzdqZqQlP!j(ZPViw5p$r8}D0*iC{ygrVd4qooQ zXmwo`F1p)0d63*q5~;PqRMnEsdfWnkLvcvV5@Yc6TKk58EVar#RJifmLhMbWMJh3J zkFLUNeLwcC)s=3*apUtXgjLcdrPw;#S-z=$c2qQWR(g^}smSX2sO}H<=3Q zV&4GY)wj4%P1jp$*K}5xw9>5lT}#v~+knO9*A_Bmp2~Pw)Y?o7iS=_N!Vs8l%(Lob zv#{0BbcUP&nSIhKeTl)yGPPhN5#>w$^y-lblsp4efTxUtVl%MskW?QWtk#Xt{8;{p zhb))42RT-?*01=c>sAFYOAR(_JYGJ{pcmc;fpTnyqI7>bkRvlM0ZS}cGpeB19{&d; zpF2>&pSN>A${CctOcl8m(`vY5qxGQl$U!8zMO?O2cGLAi@^_uDT8BeAHf$W_w{)Yl zwzF-X+%tXrOGx7n8wV=}>%LRHr;1v=`0$956t8xQ@jAgk5Vf;25X2$jVK0ZXod9t4 z`Lx=WL5|O&RX^^V-!T0!?PIe6=AVz4G7u`}6)pJ(;3OzIzPXD>e|* zxn19JWw0O?r zoBSyfH7hGvj8&A_Z)6FWr>Q}_gw2Wv+rZauo90hXHS6@-8#(f5WCuzy-4jvnglg}Jiy%#t6*3+|dS-fKVX=eSHoDxALqZ@$l0BV66X zi? zq$htIZZt7v$na@LvxSh{Tw}fV1dM7NM)W(*x)bk2h_I6tPR|Uw0d9UL>%HC_wqd@dVY!8QC@&A#@fE$l38WXNqhLb zyYp`HTlI7V^QcaXEwq@N%Ch7GG#Z62vu2JbJ$z=d?Zo=m zt3ti?#{+?3*82(-4f|EhbXPL3-}?4G^S&nZ(z^?nz8+tLj?hj@mS$}Ib&u{2zZB~N zl)dw$suuiWfR_0)E>!zw3LzNyChxVr|d6< zit#fEK7MVMEioqycU%a1IbB7UxE`KOXV7KF8ll}8n8p?bHOB;FFGTLeb)?xCef}pM zGwCckOe4K*u0sd`X&I}0dTaEl7$r-Q4gN_17r|CIu1q|Vr-oLx3{dvmzmKts(Y}~1 zs|tCeEpr$heeG&MK6cNh+O-1;bgV6{0Y`Q-IBjxm)*kGHn(_-P7)2=HZmWDM-Qwqc zAhIix)6#uL^^DU)b5+D|h)w3y$8Za0@6}|dEV4MN#XZ@-rS^F=-(K?QiFWg_DWv9I zXdJ<;O=?|#!MGiEErw&MgoE@@Q<^3IP=fjw@;VLcGMw{>9sOrqHgaHm$Vq?KjY9ES z$EKM1Gd~V}AY7vST2dr_R*5e>wl4d6_ouPdNJ({B#vLE(^zaD$$;}Sn_}Wphy3kSn zzRh4d3&Ub0hIW_GGWmSgtYGv`+VP;m>w9g2%vPFI{!2dBUR5e>wJi-$fkm!F$0lelf*A3qxHQ3gRL==8yPm z{yi@uC%C%X##c*C>e=Fc)D};g9S_LS{<_kW84B9S7wD21Ea3kWxU>~7)LRsug#OLI zv1)I30=0A}CD`2Kk{(@k-SAvx9r&veGO5Tk*9%`0g!r1B*I`&0aaDNe?`^^zsosl2 z7SwOFJl>1RKp=ms`-lMKKaw{r#WDi6^3kcMwgl6o#$@tB04Ve=3LMVSj9d7cG@&s- z0R>4(+1U{iiGiRSSM&8f=Ko{9KdLdzPvDXk;7WgjvMKc+aD>|o?y$Sah_A! zaY^HHRngDKEC=eMLbG|c4=+eW&5>Fsx}1@GpYf1%8+NXn=p29Wcdi#V;yoPrZ`1?y z`Svg}lKJ{~n>&}9XIp0Mt=b2)xMcy{uVztp! zTte)IuO)P$FYI9tEP!f;-p~_x6K69|o9bWUusbH-@}?!GXocD_+oj~J((Dv_{X$01 zx0(ae%@eCr@H*UlerO0;{?J`jAS)XdXnj4>n{|-xnU;Eww~{4#6YEWFM?(J_LMnEu zqHRAy5H%>*qp?^obdd@muyR{-D1;+0fgFgPA!n+F$Eq^-FWELNt;sfuGvsC#93X{PSJ*&$Owm;q`=ONQ@!3WAJnd*!;{~%tRrlu&%TX zI0)?tm2zkUa$zk&OF!{luDh8l?k|CH7G{+L?~oVGRaYd&lp5G24~wb*x=*DFNAMs& zNcLP=HBfOz(e4riHT|9g*vQMkvi?1qrq}s&oQeZ672A3N)B#i*Yv^>cjQrspXpx-;4&i|pzX)zCwW#mI&7Tce zOus>UuEPa*a~c9wk9ZfYU0y6;a@;!=PFLv0gnq;g#fnc8QYXzFA|qo* zNyfRGhm((3Y(a+=m`{%!F-f8c(r`T)sxVF#ynJcFCxwsr_WKIt6gzRnOPR$D?9KD} zx7cR?$iALwAhGRKD?2thB(;ULC1SPyX*@{vlylO7#1)D`t8T#-D=WJ8;=m@O_ndk% zuL1fkKb*cxkf(auZUwWxG@3*@NxTT0^rVtDWtW@yyTftA3pfEgOWVucjM%Os0TMi8 zA*ZWFF5o25A_nV~AZt(P$qF5i-G7twC`sdWr9|?v z!Nr^|*(#hCM;mG1?gofI>8P=0I_j6w7^wRiu4El_miW;0G9>)p#R}r0;2zx`qrl)Y zcjSEJK;12!W0)r9^d|ZuB(JsOW#8GU7$<9{@i>Yf<+b~-zqATqS(w}7DSGh1Bqjed z>Jl|et9;~2{2>8#thd}``wynNPC?7JaKDt7aqeq%87|Ie=j=9jP+V|GXhcj!$ct>k z_WK$ZZ7r3l;0~MTcWfo|>7BUuKMAPJ_h~GYMN3O>Vy|EiM8V)y5cbDDJb?W01Sus| zMqYPN!Ed{fXMxs}PS_fSMdHmm_KkY-n-k>x0o)7aUpPezpWuU5FeXy1ksE;MDhT;Y z$timizAl*jY(sY;acG?*4N-RRIe%ca`vChXVD=gHaHI#ajPme@YEYM2j6yDakpnQH zWQ~BwKGg6_d=yT|6;-R;np#f9KgMeYT-{cgwH_>Im;of^(+}tuZ8E zdD_(7yb&n+D+J$&fj(vIRaUERa+<#w+X)EVH1;0`d^*J*ZVzW7Qr2C1IdMAPnp-f{ zQNEoGUEf~2A#KOe?s4p0I8m*_L9lVNJq3M^mTc|%n^bCGiBeSovG>AH>H zR}R0e-7P(aM33+_@}#$vM3wXmc_~@ioaBAMShDCMXLXp82`f+PmrU-3y0 z8W4y7JDi}n)92NngKbJur`GL%oDmH-AQO`k7GZfwhg^Mk=a|a{Rl9cv95a_bw9qk} zCTUw=;ZZ?k;7a2JDt<3Rv)7qg^%nM4J$_OZSB)I z3w9~GjhE;b+NupI*f<~7v0v9#`6LuPOr3w>UwG0htRPCIBpWwrmaghI!>P^=6l;JZ*MUGi#dS@zh$cAT~-S1tMlGl(vYhBnwU!oA)CMMJS3Lg z_ZJEZ^;3cX`)sF=`>qJ_T)wV)pTED&1#1;>OnE1>*Sr9`wM|M(+pi3iX*t~Hz*Ty_ z8|K^p9l_E9omv{lEY!IM6al3J6x7kP89-t^tG8e9u)+671NUKoQ+^qaqnFz<{Y2Rg zZZl`X{Is(DDXO_KS%7&}OS_B8h~b)3mN-F*ZX7L$eqh?6mdM}nF`WaX1l#^wm~#BP z{fDf0#M1FMX6_MgXtQ)W^NVO32Sg+N-Hv+RuusV(DrM*pWh9aIZanXAk^r;ZrC-*z zIasp%KKr)GaP7_9afA>${Pee;y6m3v@z3!(ud;kNMN@ePLUQkZaj$P)rNAjx0pdhn z+Y_ytfxYjJn1XjxZ3TB<#OPZ$^J`4~RGB_QGp?SFNpU}`%Jv_gilC=k>h>Du|KOW$ zb07B;2OQme>JPhtd##wJD#}N4r#Q>(O((*`L^AcEE}`kHDBjBCK5}|s zbc(TSk;AW5-K+XUH|~l-yW?E2&S+LoCW+>{x$=w3)F*`cqz4$_HKy5KdZADtIon=x7J5`aYCqfAZ3Tcj?#WtjMB z_5fk=2~a79hwa>ZoqFvb_yV1xcKvGWLM~s7$M0T+S&jQQ$bdP3XiEqF`*{WPCYG{` zpE71gEYq(gXB@IYm34+(P0#(D4CKF;#K5Gy*xbszMRCtsUHCq0SYG@#w;^r$NWwBo zEfI1-GM{Htkozndcj%WIGBg6#wwOO^e1Sdon2G!|Z^tjCU9zK07+S@Xaz=%E!CMCD@2Sy4|UEn#P(`Qhap~;Sv=59fsqXVT5qy1|ge^ z{cm!;;f7T}6A4@GGHD294m#SJRj>Y48a3BnR^6=n>@r;rFBsnzn>~bawCx3(>;Tt5 z9sTe|DGo-JTY>v#@u{D8+vf{)4FrX6p^%2K@XRM+kCicjnP(xO1AVr!sTjr|v1#!U zLM}||WKRzoigj7&P>*g2)9$V%*t36MuLJUN2IrewY2fqD;4Y(D2diDT#(mwd?ac@5 z!;wTnO`C)&&w-y#4s8934MV74<*Q^LgTIpXMdoU!u-{i+WxTh}a0>X}6NN7Vibp6W zkery%^5~wbp$hqKHzP+3@XoY4q2uSoivLKeUIdK6ygZP>pK&$eZV$#Jwk(7vjX=*P z`^02a_PJ=Z!VW#uy17B6gciWHA38!bqp8WB_z z9{UH@?nW#8x0#pk4Y!n(CTlrOl`tOO;5y;HVffi&(H<$={5NjkS#Qm+ko+eWlHgEO z!^BH8As*7$aKP5N0)E#CMn1-QHiSx(?;S0E4q|5Ulj?ra%6+#qCH||!uNPk*r{D_@ zxMV($aQei*UiK9ptmFP1ap}rFcVMd&TzRs1h^O6TKrO0U#9r%jS?a>TG}@L`Wv20W zb;F`?;)jE8YoD(C@b)=GZE!7=89Al&hYBwNg^@b6@s{qW5iaH9HbQ0asj`-OKcE z8h&Gct8GqH9l=s0Q&U>1iszJzF)Z7mGSq=f2J$|H0Ao{HFV^s{(e%yUT3x({C(mvz zs>s5P^Lah|k{1&-#UWFgH)wBk6{)8^hpJ$W(D1brP><>8uCJ=R^$%lCy|AF!8G`nU ziAmtX>$7EYX2PLy4y+!!75&FuZ@=$4S9>?%!Di{>bbJ80d6%S`*qCe3NX@{W$*=NA zcO^FmNniOd#KlEIlq|k&8$hL8{FK5a(ukoBBH3XX%v*XNrW)|odWQ+xJW{eC@_167 zf&;(1hpB6PnVhumoirt zvVBHrt|G+Vx+ciOXc_)-SDe}^FaJc`5xQ9y77N985p8{eM38eLD%|3BO{0^{avVjE zY0g6J>{&8Z&+FpjYcEx;`JgY;r_Nu2>Kp0SyN*t{CFWDgY2xCa$;<6MlTkSF*0(e+ z6hyPhDe@U4Cp{ic3-i5IDO{mx;?UIDzl?emxG%V_aev1TAW?dv!GnR%eSuidM!*Y+ zK7l<@7?!ez`ftPZ79AwJ-fOSsfBq^J@`Ag?0P{Bcpd*w$_G8_Fm zJWnqRR-gZFk32w723BIrVVF0QUEg2^H^W0arNwD1mZ+!N_vCv;sT~0EV=)PAI%Gb4 z?U>=$Dr&gnQ2i-b@7@HHrBhL;@ct%32S$>*qiH@3Kqp&5_8%|(k{GRr))GHh8L2v1%(U#;*#_JA4`>Tc= zxtTxrLlL%s4;38zM$K=06E5j3$+gZ`KCZGZwTJ7pqzkA59S|kQL#9tIp~2qrf%k&jy_OKRlHuwT%c(-!cc=mWUu2 zk1cATl#N=0`&txq(JbxVlXp%zDJwWWbVBNAK@6u^p#;?S%H%MA_cM)Lb`?!JKot)| z2}hSi|E^yD5@4ur%FOtM_Rc9#)95e#w7q@cvSddbt1=U#Q`(5#C!gUCvAZeD8II<( z?(GkzyeIb}79#@Ta-s|IK88+gKmkzX?$7crg_98#KwBmtRkhRn0#8k+|DJFd;0kom zSqoFRuYDj>Eoi@1F|$kB@eayB;p_kIDC2g|~iksXbp7m;(o zFle^ob%-IgIsxWG)ykLytiNU@)~4^$ns``yV4k-!En}&AZUd+8CQHjJ3D)M1`7mri@MS~P4hPJisxm_=4J2LsRZtOJ`E_v*b zFJ4%8$s%oX9kg9GIg3bJg4Dbvqluo2i*(n?3;*uyhmPJIx=E7V@%v-f;RzhT#cgQ4 zKK*hT*50<&W6$({G2$$?_`xZ;O3R%zXt;W&{O~zuZ%a0QZk#=rFgZb1s;eR`mRy%)v4dy9Ok9`K z;?2qG!7|35^DP73Y?-JD!HV(41C2tLATp*DtLA^9<9Gbab$Dzlzlxcy z%S)JLTg3TJec%J*MZHE((?Q#d)*j=(ujsA_(0I4}JMNe@(3`>L6Yzh6miVN|&w$>q z`-6o2O(!Ktj*PeR(uuFI+c^6Aa>#uyLow?^cP4?88n#Do)Qb%=Oz;Py&{dus!+GG% zOyl=}8)uOH&?fu=nC&t5njJ@4pFE?ry>>vzmB7(QK}9hz7a6@i#P#5a^)giTHzUPol=JAkEZXZeSVM9=Ci*W@o&_$Tjmb6;L7@a zqO5avv!M3#3T{~_liD`O+4l%5h7C`=b!J_p*deR*G)G_HEOp|KUvSL5gPxm{RY)3K zpvtv!i>z)(a{~pv=a_T#1JMGeEmbD<_lJ%9idj>}>D;&dlA31)J8NYlVU9~!Ta}nC zbnfFpAK18a5RN4Y70_W$E9A*`IT-}~i#oe5#-?9IZ71r-@XP)S8 z9QNpy7yf<&c7t16XTjD}xZ3-*R1o_LtE<^u;y8(;{AeZH0SNmj&@ zPulr(ca#&og)Z{)^a}3v-(Y&iu+3!VVyKPp&$Rmm?Joq;HX%qdzKmqOb@UgMBuOAsc z`lJWj&kl$+b)od}QH`?P_I|0px+Vf$bcfZ>;OGdA$f6S$@`uHFEo(=o2oaLti_R>u zv&7PfEcJ_;eXZx_~zSE{h9XT`Ly^pTpYG)pzv(EW>c8%f8bA3@J%!-R7q zz$eh|?{w9lU##%rpExud*0<;wID_$=`u9(Ve;5j*hp05W{-XY;7t-9|vP}^yDGsK3 zt31Igxgiyh!_V3k>lHebai_xjJikm1CI_;F6nM-0ca#s{kDb1&qj23HrlaMvB9{+U zmV;>5;qL;2a{mrQ=3k5bTCW8SGk_=~dC{Pws~!4+>qf({`VZ8yVWc_#9cr5F#P0r& zW$6Pd!i*d#p!Q)s%?I%h8tKRb9S+!F7x#N1aDB5h>}5dHU4LYM>|0uxDJ|rc+v|o^ zSn-da{~0U&Nud|_oR(Bqn`*rY#J8;!s-tw>JRXok^>A;p$Y7VwTCrWKsO534*4qb_ z>sLWLsCv$>>;}*yhtJp@jH{R(# zk4oarwD%&2KD|TKMrn1LU1y=wbbdltt@GtirI<+16Hmc=;*YrM$*vCGFUh4_bF-Qe z%J6i7=U>8%Ejg$kO1^8&{zis{ zhY@ELUZppU0`3y*40R(OfeyGBLj9g!GvpRXmbsq*Y+h)qy)qz8C+0KL(o98M^_18z zxn;WfT&3*cy*c@J(HVXGlmU&zI>F!mg91+|r0oM`&3-z&|&E@;Ugw_j9 z8@uO_?Wx8sFHD8yzxyywp)WECQ#otcH*yIzgX30p9<@LBRV{;@JS#W)J!tlI{vu9b zUIf6M2xM=-uEgPFI%%o^uAIbJdmAHKeu-n$evoap&yuv=nlGo{^2wUa9QGTLb#EsO zu7HizfB!EvC-_YlSSK?R=(gnnT!|M6&cOyW2sP?+GXK${V4$IFrKaij{B{{ddQd5W z%2tVDBdh-+j+sx>$6n{W`=%@bm>)s*Bn|pVg1;jeJcKzbecB@NCgf8&z*A?_$TV*5 z@5M$XYG8hgOwy1A0SzbJTuu(o4MS*zE%y=byM#HA6Ez=CuxPMz$Vu^saq^P_LL3(* zC?t6F(-;bKE2r3d%h#j)v}MQXyN$rmT&Q~cf2tDu!d74Is??_i{v1V8nMFuZCsiRc z)7CcJn({9nl_M7!asmpwSBAt!uM8MZapIJ*c=q~R=KX_R5>?E?4<2p;=l;eBS zHLR*ayQ6(=)7w{L)dGCOsBc~2mlZ2j=^!?86@K}Zn@^M;raZaup2d9rIeVtlNcR$p zU`L?VwU-1JJ8LL<@ttlVX?dF6qlgh|s|8!23ct7elg>Q3x*GPEML+SRg;vsWIl@`= zQj`L}aF>AptJ5g2b)w%aNG1C6PHY@(X+M|FX?t=g5g7s5@P6W0o8*+JMZ7c9DGlGh z*E)ENavvo+a?|~ACI{p`dX=;cQ@dn8Uq%-va$JAeGD-5;{>MMou0#6e45lrgy3cM; zT@GL^XGEz0k$LkWE9gLaDhk`gfo|!9srTM|oM{GZGn2q`&lhfc=!oeHU3*&r>n$eDN@0 zr8(rh=`lXZunE$A!f}L}T9psx)01v=AhE1Sw|IFEf+X*+>zE6WOq8XvFn-vnk8ty^ zO8x3N2XAe}49A}P=O`YBrcu|bS7{XPXGPhEBl#Vh0#g8m9oS{f?OPQ%pYLw6KXL9C z*gfcFoK469oGg@T9HDySajoIVA?L%h3mo6Gs^iIt$9ptbuYOpS$Pr~&8X+an3gu^# zh@pzT%j(QS6@Fayka}ioJ;FM9$J_Z^V4qN@bpKV@P4ct>c1IAo?on#$C2X32G%()? z$#Wn7FeWP4vlZoGtTF!b+3%Bk6Pb%FDkT=9Hlir9mq3h1S`X+>!MC*RDgl}4nm_1= zHAa}QU$=XXD<|CRm7H{#<-Q&vEG%hl6-#ZHzgLVNAlRZwSscSY)b@f#YBbC=2coq~ z?NI{5fr^+Mu@2pzJFr9ReeIMZPst8!eWKI_qufvR8q?k#Y=;-dlC^U?$tKs|%AoI~ z;cw{RE4b(n?;jkvyP{N7->7tJq|;oxP(}S3#KYC@vK=H|FsnD;2X5i>i)(3K$LX;{ z4!atjsnRiOjkSoIMn34C^<+JuMt1MpIUWo$SsWDpdW4Cs-&YcB^0Qo-%2B2sI1j(V zm5xSF-3Z~4JygG;6OULFJU*3CIAlf0QX_M3l|E|Q=gN*On=A@^>J)=SZuf_BqebaK z*h}?JWwEKUk1kVb{{0791kuy(9IxcA`KD5XK7&%c3OMEeg8iAHcZ>s!2*S%xqrK=A zTRQQ-iLDE8LQ_bJ)S2-KJ+7Z1e}YVl+kAS7Ysxb1$Bl0Xhy*}_g39W#-@L-Xr>~$c ztac$~S?|+Va@%=pljwP}KwefC_2YZS&5g8PR>nsS^Mf0jhxLfFJzI)|49Zh<*`C-7(IPY=j-(DKq zUQNCs_i{;rMsKSTdilx{%Ln)ShgYAPwIlm4?twqiT`?{F(oC3zs9zQ9;oW{lcID`_ zI!~x!SSB(If8-#`lBa-|RIfJgj{sDjBG|uUL^Txn{rvzt1^jQ%M-p83Qw1+I0G+x?*@*?_l(G8 zM|$SXzkRlsyZZM3fCh4%9uGdeEV^H$cRO)eey!GOi->aEUath=`h*0x&Ef##y$j2C z1~0eVY%uG+8MnjvcD3kO-3r7uzkJPdfq!z9I6(9E3>a5zqIVNKq*tv9=(FpN zln$seJF#T(RZf?#vb_Pw=i8dw+|*PqvHUshO6 z|ASp;plOU(`N_Qwr(DO0+7sM(b$5|6*x)rks-AZ^4>USNY>}nof%o6~F*PMFs*aj! zQ>cx(mHU0rHtZ!H}E!)1!ani^#hz(0CBJhzltIOMNvo{CCwa8<@pGnbV39i=Nv zP!vmptO->SB`bP_rv6BT-P5#aVbX2jnWcj*7V+?dizUd^94u_b6w`hOXZui*x6was zV~>DSrsEb-Y1VVMAB3dPyxXa9(uB-)mi@}tMz8Ndiy9V#6E!$SCBb5iKs1=6&2||& zH(s|lok7)Ti$(Wr0H(0lLCV+r_vSJ^C@lN9B)a}tCF2L@#<4qO7J&)s=~F!IaQq{O zwxhfhbaYh1x1UGS^%bHIBEAC4Tss9k!%&ktJcyp%rSRbtTqZGY4>#*KW;XaSN#NUgH=ifJ@Z%ywzLhKb*&e0Sd?OBPbsRW)8KO*jI zMT2a23WstS@#VHNJ4Enz7)Du_z**z)anKelWBpz(l3MS6`%|d5;w~twCrfrA-A3v_ zCGE!1YqiBsuca~BO@EKp0wDa{Fx<7S*DLm!0wMgXuU29X9*uxD9t*6)BBZH8$hz#m zCI<$7-8W=VT>}O$7WoKl_@NG7t9$l;-ghEj!MeFGJOCOGE~*;V{C!%-U$p-+23;0} ztbJ5FEo$$$t~gxqg1c?+s9C7@e`q?(sHooe>x+sA2q@ht(v8xLfWQ|i>1GJ&?q&q( zR!VXNB&4N#2mt|U0Rds??jdHFVa_xE-&)U$^X|MmXRZ6*``Y_+(WPKiJe(DrI);p1 zV6crN))EJ?iM)k6;COoGCBjDJH+5G(b@+fKIZ7ev1wq6ugTl@Qx_LzT*%EdYR6x6E*tu4VbTtjf8f;7#~FPUdO7EcxVbS;iO3J}O{ zuJ2-6H;nNZ?6@jyxo4kn>ScwnIknjE=n0qwB3}Q=8SJh~%*9*qb&%=_GI53`kxNNE9?*#GjX%L^jB-}&!KPRHHENvsx-OgI) z)t~GhI~Ap;^x@3Fcbr@`TLsML)LRXS{PM}tnS?%lC&Vy5;Cjj<_Fp!S^|5(WOVe8; z>%I=%KA_e+9P#YT$vSmGLESft1d5({`%qIg2AtF2N5+4|3?m(rkK&z?l6coD zT#gBSCvva!i3OqMD@NsetF5k`jmW>1gzq_og0k-RayC8zK|O)Chs%$}mZ>R(=;#f# zMZX7x`cc*1%qyc!H&%}#m&t^#BM8p=!(N?~xv@4|nFzP-#g>-k{uz3lMY>_jR91F3 zsf0~zF*U}FgGU&m1D|Sc6)cwhrZ>Fo6WkE9d2scwMD7Knm&sIr z&6GZ{gBNs;`(M@|CqWcO@5w69I4}ilNy0t#^Aarby{(nNN)b_p;*rij^QCtB;4 zt*t49;dQx2(&u#cYj;I-r7q6J=zkhNhb|Qk!A?Jy+Q)kORg{%}mj<*jgT0xRbe`Gxxh2dVUbq z$|kvfuO&iC!r|g#kNA86zkO8ItUgyvrCzP8@{Wb0E)o)4aIQ^2Z~e%ECx8F6TtAV3&XFRb&eWDL*jK|(-cLU$& z?#Sf7@nQak|J0mBgR|?IZ8Y^i^hrb4WO~*o|2%idZwK!D_iR>m>V!VGXqC%ZeWe_2ER9G3GOoDp-$E?41CO0JDSEQ5`uF@)j|Uxr?Q_0#qpql@Aq z&?37~k&YU%0XPf3ye-}?ibkZBoSGAwe+{d5jjPmy``ODw31RQWTa>DS1h}Bj zU)&u-&6t|dYX@F`dX>+NbYeP>28+>>f*C(rKD_Ny+V}2eIEK=rTlJgso-_Z=xNLPh z|F|2RVsf!k{(!9WPXN)hv&f%uI>qLO45Y1HF@x1U%hPHzLo?wnD7_covsWC|1*tQY zB-&3)D}2?Cy@6?g%gYei;buZ+qf*uNsxzOp5wtZA4t2PLtyf8rreEXpQ`=4H=D=Ra z=gat(ERFaO05j2s8;7EIn>N>opT@)Nelct=8~Vx&a89gV?I3S#xA1vQz6`@zs`GvA zxPHh`r7VV+U`RIC=~odEcBWnm>0k*lZj*%&Mb9tSKW=fOgIFx`)t}#VwLOjj@$J{C za^oj7BUo@jb3bTR>5rG+pLU%0fRtGb*H04%r=*fxX0Ny%V%{O-E&;r15nkfOfd$Ps ze^YHtVxapVKf(EDNiH?C&AH^**g|F&VWx#t^IIFQdlw($11Tv~<*abV!8Y&*#jAvF z`lgCvdb5$U_5Og854$_)87pYvAHgzD=LCrT)}?~DtgIkCQUF(X% zFj03h#^D6ml!7^65ed^{Gyet0o-f1!I09J~(=W&b^!7hB9qwfffWgQ&*Z>lKm?{@ro<`!7Eds-M&^r{5?)h>TKVN0qZWa8cltc_K6w?japosM&vD=XW z&e)&D-@Rv9mD*jluE|&Nj<_L5^^Fg{eVB967eNF02QtL>nZE zHPqjPj9#@;B#6`elb2qblyQ*iGW{H6B0etT694EOO=ysK3|w5fYC&*~0@>Hf3;cup zw_&zh5Y1k&dqy6vsu)|)?J2oxxMcd$$-%mf$>N*5yiZtQe8nsX0hoUo=ZFy$jdxV? z{X6k>S@sF|4H$pTvE1_)RZVj;W&){gn>>n!GfsZr5pP6|g(ly5tPu6jN>NGtD3`tG zk^E$q5(DOSk;}n~d<`YRNS51}aFO!MVDagCZ0tuf)lU?wkGGTG=~qmF88^u@&uK$Tq|`AajWfyW{zB8c z^<2aMJrgm5{-ht!PCkZjtH0cniJ{8xTO=Gk>Qv0?qr3~RkVRz3PH#*EzZajNDv)*%pj*>S{l58vE?_EcX0d{lKhBv_QyXO>;oW0 zH3BLN9*`OGTf{R!=3q^*JV${;<>-{Ro+&PTqsO1H=gax_FZQD+J1e!K_?H6i1q7}J z)En_QNN8`~4LJ6LD?LvPzZDe}F)UqaT)dYP4fLp}9?4iguV2z0fb_GbHIBB|pdf)@*a#?Tg|i#?nUJY#Po0^gJ>fo9~s zWV?7ZBdD`K%w{Jgt<6i>gPSajdq>War=@q)36!f9m!G~vZd(05Yks&yOHbW|n(PJ5 zRuO?%9^s1;RDG!&TX0lWgSoB>xfPH1p32WBTJcx&FxD33u;Q+#kztKI`whx`L%gAf zqW)98H_t#h#`j@N_0O+jd)1y%Tp@_QP&Ei92GE5MaZT4d0f&k@pc|&Rs?7~snq7>- zJ4e3RPXbz@_RHOlvvcY08MW`eb`xNH!glC@@t(mcGQVH8*C&fv);WFz zKYn}T<`#JjkPUZd(r|NA1??JZcU8yfI3ViuDw#II^y<$3wT-aoL>TQt2fJ{%(pygJ z4GtBHDP>#|fGXU3y6p8M7hSTiMJBlyKku&!123}sTgyGIee)QS=ge|{l$@f)B;T7F znaj$g@*;#pFUpBPLXRR&0qsrDH0c&tOy`VjsM`wT4e1<6D3rpM%` z)?!SR@k$yU*TUbVfH$rjy!<1sD;scz7}M-PCMjclYu-zV)NhrRfjg+|A+9Hsn?5fP zY!{-~+!C1I`&&Zz1ISeVX~49gL=G=Dq!{uz-*fr9N@d>HY|D0#9ut5@NerIr66L#( z(G+fD#A=5r`E{dM+()Q>Wo&+@STb~`YTap=_!w!JKO;HuM*}0%)5g1Tu!TuROd`2E z@V*J>uDf_zH?i&IIvqNcLHzC-dkT%;YIoT<>dU1jQs6(`8CkI?g>ZxlfYZrImsYr$ zel_LU$i;bl2lO##7g#k)C!3x_Q^JKtfiFUz*D6j$;a+BYc-YT9Hz&_}P*fEICdAyd zu3kRS?>Nh?@LW;0SB$z+Y9w%aLpw15p*t_R;Ptfx-(P1cx@Y9-!2A8Eff5J6UlZ)t z{oGUcQk@W#xotoQHfEmjU3BqVpdaA0Ioql{-uwe|_`S{k#qW&JM%`&HBMLnIr7ckE z7JZk<#=>eywQvI|m;Ota?5Td?BGS^qMGG=j11pnf_$Wa)4wa--(Z1>oYpjFN0ML2e!4xnxxqL1C6Dhkp5j~qN8I{x=DV{11zNvNB#)qr91 zr$FNA!b_vPIB3(Jji3W});fd3-W&6eYF`X|B&a2%!ixaO&DRv91EHpXgG6`=l|Y$a zqKo9`c8A*6eMiTh+KwUpcb-zfZ?h86)faET0U1<0g73GP;wN^cd zo*2RC*)N)iNfqY!fJ|$aqVD${xnES5+n$HOadB%vE}SzmniirXe9+*IhPO3r!sb0v z(eV2M&ROf%pErVjMZJ&`_XawB_qq*fPAN#6=9<4Jfb2LTz(%{zB8k1aKhl<`4q^qh zw$=cP9hOv8_O@p2{7D$o(4bh(NBdV5)iTrd|A4?3Bz|tRh}6WjCvZ&1)GSF2yZ~~j z^V8Fn7*3qs1&nazRWEO0CH&-FM8X*9f9F4#xz!Fqmfx$g1#P^yFSDm5XZS^I;Y*> zLH55mXVHYsymZZcgH@(3nB$&~h$wk|mqsZY`xj;f?M>+0$2AG3921o;si##qL5dp! zeCqx;@Xnii80Pop=3O&#_?8^qiEE_q9wh(B5#M0xS225Fk z*a$UWV5pL?p*ZBNF|XTJM_>-aDlu1mBSaH1dPbMpYc|`OlT0~SjxUHJEd*oZS-qvo4KBx|P3E1FVheYmXG{z;gRfTZsOG6}zdnP24bkASgi4GZ!|oX|??v`9XtJv& z2^U;DRm19Eo;!!x->KX|r#$~W^(j=KG^u#TAr(dzq zr_C@Mg~?vu6`?%@X&%TB2F)88XLB>WcC~-bcJVP4-$4wJG*V_5ZACLT1c+eyx)VQY z9la48ie|DU#fFg9iL|b94xDjc+X=6%LHQrblr^uMd)&zyRaBx;zadf+GpjiV#NkUz zCFkGqf`CRid>;b?z2&UcxyN^cx>&N|M28H4T5|Uo4usHPsq(;n*Y#1B>7O;6+tT4(m`$ei7c2$NFV<{A0$H4w9L+=P?=N`2I=&!b z@QtrrzEJOeY)?k$8w6+}12)(<82kB*bJ&!b^L|X^mV_yYt$!?mt9y1W$2Wjz`r2Zs zd#L-?HQ$(~;Y`I-u^;MQTcE3z5?s+HXP^D=dCqzOd(RfK?plykzR0IZ!0MhcBXnSC zpN!ktV`0voBs}O@5)NHJF0lL31RIxK-V6!lIdG~4(qp+%h8bJb);Yx3QL~KYKj(EX zIXth7ngNRkSCKY&15f8H9+rELr+}6xKJ1B1JXJZepq#H1SCmnE60Qop7{8cJ(+ms( z{`m1cYM@46xGONMvJ6Q1O`$tuF$jq}iqxF1y|LXY|9+i}=2^RtnTf-6z!qh+@n+0n-LM@)gq1@yER!SK}OF#(T+^Wc^u(br;pX zmh0wE!o4hudQ_0?Hjr<%YNy>l7xGF^H`r;nmt=w8Pk3zMq{vWh1SoUPXM$2NGRz^= zS}3yM6elAWy&b;p4xN~f%1LEU>34XN1)ukrYouUz@dlqxB+Kmo1z&ZRM}b*n^z}BN z*R$Tgel}K=e1ipUqjm$jBMQ3X68*yer5veqo;d112t5~vHQ>v2(-IhwX|;f8_8!5@ z*gsC%mt?piv-u&5;~$PQndX#5?xE# zl4Mh{)9rQ)B%I%9s=EMK^0b4vE+fxDK+lC5JP#PNGgo@cn6a#}DLB}&qPCm?Ca7p|3l;B^ssr@{>M)?uLv!v9Hu%(B z$-^RB&=QgOYY-~?8gYs-VWN~9@^b75=6<*%`cY{%E3@>PCdcI?;ekI(?3h**+L`<> z>4OmlhvRL7I-28-W|A0F#lyE;;$q0c^<^Gsowr-1K*uZE9zyv3*mK@UC$eKrzS799 ze-+l>CNB)l>6bc*vF z2$u3{a@F;^#2<1Cse}tG<1>8=3V}APz8Jd zo3&_*_@b`vwjFLk1o(!wo$s#d>=03abO0`%Z2GFYew_dgCu0?+@Yz@^&-6fRIUmMs z;7%g8j0Z-A;f;S|!)eF*mNPbl#o&AhAwFJLRja_ov(itKAe=4);iPUT%)@IhdS$>_ zJDbLXt7WIam0{6`F&wAL$esmjT+FlYSu5B5?=Or9(4j?NwU(eNa$~NZ@DI zxhuW4=JUy$^veois#K!3p`QD0tIkUl7!ACUW_3UbW{ai6FCgwHp)5(Hw5jcGksC76 zLsAMl?c=d=ZAJx-3{}PLck%F-qVR-sbo9y~vg@DRt~$||O^eL(z9i!cE_NOKYLU*n zw*6qEO6O?#c;&P4A}@wa)s_46$IEPvrY>{RwoeF*4!OomgvVAq;}HkM9tuJ`?zrk?H;<2sO{KW-lk194P zEI9A2A!+(=kZhq2zSkp2FCK>d7Vl=x*@dC;`4xmv>|mSyTi1wmqWaw3VydBKV^5o2 zpTnZ4Pi!x9G%?G>_KfMmRM`-AAz^$h59{E|LFymNT7azX2^aGkXRb?yao2oEOkA71 zu{nOjYRX%I_Q_MZ_LJaQ4U6h7#~~s*Xc=2oLQS{8Kyk)9R=5zYw|)^;N1z5V2uF67}tSZAhPTbc81PRw& zfLB!NUu2=dJ7%R263Ek)Rx+BtR_=En%XM`oi6f15M_WE|9W>=9Uj!_^@|xN3(&hG_ zc_sK;@pV5E9%0tsw)Y+&masT0tm^)QDM4zby>{3_uXJe;zm$MgOkB}`=vv6%MPW45WeF>9LMo5>hW0R21y5@N#N(JeB4h=@F#ewZ*B-X9h z=r*EzMrBv3Tn^vyQv=Gzygh-?-3Vzc&%EPxMQ`*>NH5@c#t_JcAvU})dU`n1hA_aC zdL>a=m5Y>akg|EU^@?h>(oAk#Xk9{IX?xHaf3$rTN`QV#1wmnW7DiY^PrcCgNmdMO zcX|1M{5Wco=2ZfyC`z@vCE(M1kK?UsHx)+a>)O-WqLKH7G@bzM;dJK_PKfy3y!fxC zxIfx~5Kd+t62Ib>(I5P;UFPNkU`@ps7_?y2Zr*#pL8dVB1voFtg!rB3-w(>~jdnRV zmqu~Jll|MAQ=G&(r%~a!+hl`;E-(TpcQou15K36I(;3Y|#9$dYrG=UtKZ4+>C?l6H zJD{uoYytiKy3PStPxJr2rwe6%|@5H)nhw`2un|inJ-!|sl`Pb}XB|Tcy4$1ule)=8V z>Yno+GZ;D~){~y}7@d8*D?4WCSBmlL1vh_alw<3xJS&&VCWX_`{kq2OwZd$2zfA|+ zkn_qkaw#6`PNs8(0H4>~^d1DT!>ferw9PyO3C)LdH5V5er3}yxLA>AzL~I?F=~6*SO*8oQ z&y2iK{Q8%-cTlUFpCxJM5`%EWN47c}=7=}`G~i6wds!wjYfaZAD{0qPyRnS)sg=$n z7za;WwAWC`+?{hMC<*_mwg7j(%_~_X8_@L`F)6qS8iFD_Rm+0}F|@Os-!NT|z6epQ z5kDGiPdHcn?Yl{oM;;zNCeS-O;m~N*Tu?;2lbf*%-hpX*7I3)^L0{D~>w#nH1`DZI zB3RHNFBb(Zv~GsjktCx$s*jPG8caH6X&x_672n(Qnjk*TEAZU92V6pX+r6G*FfBD6 z5n#D2hth+J#%i89HC1(p03Da5$tc$o;wD|Gf=%$3DcoH%g=vq)?BHMkB52^ihpc$`+sN1$@N(MRk{+VmR_!RWjt7||6 zn1RtIF(OFjQ8~8Ra~pO>!v=(cd-!&5^JfDWScL^If|x}gbkE^yX|5lt*>7l^L@dS0 zd7D;GEO=|Jj7k}#TBvCy=4U4^ZbeFs3l&xTq#otT@Bs%sSWLcoeFC#gs~ymLGX;%# z%eBl<=(1t%nkd#KFqkz5;msKS+0*YcIjFe>eV+}IyoI*6bx)zzq%U5#1B-@t+K{RZ)~@)2i&Zb)uxLOWy)zE2K$tY6 zv`M!eP?%k5Shx9Z^o`aTFmnnRQ++K!%R_x_*2H{&_ZH+q>%bNG#e$M{F-=dOH>mc- z;HzsEdJ-t~9WC)tjA^Hr4nxRDjA(ri+Yn<{4E_>5R`>l%H6{-_Uh?}gtc5(C?k>=X zW^k4eKc@1=f$x>@2Ao*Z#Z>5+_7#{TIx}~SOCp4|Wvl517L-xJbh8Pk9(+Cn!L3NM z^6x|-bG{+`)LN=+pFV_&>ls}*b8psf28ez?3r$o#E32NPY4*}D#rn|Pe*$sOjuaX= z68ET^6#YKw48zB+5vPnJ_{WxP52rN1l5|*WM^Yv%>SMz3<1a$PGZi8)Vw$G zVhVR7x|`1Ug|^@%*y#@!+L_o>ai9u!TuttFJS_}Atti&)G#pfdg%%lC9zL?tKlfk+ zUMV0=#Vf-0w=1ZbuF+%K6vO8a%^ThYltE%3e{NRl(--d9PC4~`(tBLv>32Yy@z8ce zRAyFr?3rz6kV#F|Wk4ceiC%w2vcOn#Gjz34=c%bsT{h&8FOT^?0ZW2W7Y=!g83@Vd zeZ+|i&`Ven)#Xn{@g4cj4#K;+`}rNLgzLH*v7ZH}!1g;CU^3pM!)yBNkW}-A+Q97` ziG*abE@};bj>5SsuD!@oZI{~>Z}pz;788uv-N$>GpzgLa*)aQt$2l(fU;!}Q%XT=T zT>1Z8@Reb^RH74AW2?S2d&!;gO%Ks58@Z=FGH?JXVy^z_KG#JQgSySbR*s=GL5hOY zkVp@RJu*cEvg=PcNx+=DtT>kFl{a5$p>Dn;%F>g*XOorhZL<7%IhXS(0dw+UsW&t~ zdfs(y$NZ~j@9u~69z4+7a?`NN$WQcnEn{t(s1F6`Y4R+&2iZ2xrgh3AyEiO-$N8D6 z8(*V74@Uod{ObC1r0B{Q9qTT+w|qmX*F*|^{Wmq-g`E~RbGaeteP^07-@2^xaAhP8khOtq)tl;InWUFUVBrux1+c{ zE!?qF;_j@9CN93AEGi?-O&Z{zzAv!wE*cR*eJs&qSt!uv;zJA$?l?Gn)!~SL+P5)f|D;Elvwk*O&c)V?^FXgW-V%TLd zc(ng58=>uz1q!7M&Qklrduri1T=4~RVNYD|+?aNjijg*qW>Hg|f_I-zZ=jZcynj%8 z=9lSv{`m*ypNVW@=}(ev$<8#d7P1q3AErnmX#`hU5}5`jeA|T7aaef584VNqrq7I{ zR=>-KLCMYgIn^QkjfEhz0te9I{oI^x;k^hxmSDvh7@88p~!6zB;>D6 zW7_XbdG9;A+S4Z8chkovJMh!}1q}&AjB@w@2Jy~;Xlw*GY$+h7fhK%{q!(L<0eVG$ zjOLy05`>oqpam>~*YEyxrk(q1d#lqGa0aR0a8{0H1Lxu~SWA?(e@p{)73>HBA!!7Fl>)T*BXjv(ho=ep4{V|)HV>7j;% zph`AvW08iTL;S6*Np?>KG%!&0&XaXzuq`EV?T7h8aQe>Ix3lw&G(Y-QZ>H82R-1#& zjfUVSd(idPQa}*LW=n+OL$8>JfCwtAnCw;5Zswny9PIccWM6j|)r+i|8 zntTJffgyfqjbqBQX5Dd5^+LW8;{qQJH#rP*JCdUGSRr+i5Y7%oD)2 ztGQ6B8dt#Z@-B`ar9=GDMrC*JHTn^ymhvvvoeBJ72Z`|Jr}4_7=MD z92=Xe!=I?LEf_*>wiKUJ?sL-=O{`^poH(NTG<;hz0+W|GPE8z47m^a+P(0l69*Qgd zccC&Hlo(<^>BT!SK0V{;XPv)Y(laNq*8StWX6=(@2=zjvU6_bU@s49yq&Avj>#~># z_M4t12k>LogoQj8=`_pUHJcAQAd`L^3$S~Hj$<79xz2^!Cc`$gi++`LoltH0HENj` zrjbkXv@Q^b3cW9dOo{Q&=o(IrjLba6Mknf05#;N<>TBT!(<7q48NYzKR&IF697}u( zNd8aYQg$fx1IVYV`U9kWH&45~ffKM8X#8fH%z{^DI5z7?qG=bC6o^~Lw{)A$s}{y2 z9OOyqUEH_kP+&@FPi%$;2d!sRwbK^YwwwEUycyEp1-aGytejnuej??+1~NbY{lzrV#%1MT32e$%4w8jgz#?Xvj+J4FAUEexwSwPQHIyQp7&8`cxJ7AheW z5}(pk{sXWD)KWtDaGT%ZgsPdI{S9dvS3U=|$XGk>3+-f` zCY!_{C$wYs?jPc~?!0YiOmZBG;KWYzd>>l9$Dqj#Z2e!aDI~yIDQWVVSFNee=*!=> zmHjuZlgR?XM=%8+tW)zHe~k90Q9&FOb28|cQ}>!t-@EL~7wg(X>M>a*9q+o&>nOn4 z%eKfbKJE<6Z~xF|JN~8&4Q6+3Qg#_byj_?Yr2;?h$sFa|glFwuskSvEh(fm$fEM^{ zsD~)F7(TPj44yUVb4HaLRE$;#dM`wCX;2jp7S8hA*`O)zqO)|F>qhtTA51{HJ@?Aw z*3HJ~U>wh5?otfUEb2ZWQRj6;O zWs_KIwDPoU3T(8-t}qyG86el`ZxP)efvzLr>r_!Y*+V4yCo20EG~u;jG^#|M2tLM` zks2aCR^4TSYUBr6ffqiXPH(02{{9|GOptO7i{!8z#)`!#)FNa%^Fmlrk@;Os1rLR| z)vnB`3avNo+=aZYPaa&eEcN_7>gjJcUbw2OUH=`9x$9LsR#)bJ@D!ESm(P;V5)hu_ zm))3Aui5?2=+arq8~i<>n*{+LxTNx4Vk|ZDb+X(+2 zKxYDOyjaVn5w)ItB%ybbjhuiUAjMR(Ai=3?(ao#)`lD3Xyu22QjidEZEbF81aIR3H zk;U;{`GW1EX{~=B`6RrtTpz1+3pMs@xkC%RM|%5zTrUwXC&aE#T9&|H6(dmx2#?Pt zg%?PVl_G<4youJ7uPZWKpL@>` zAO&P1VGRERe$$zSyiA47up1BY!mjz?eCewx6+L7&lKaTr`%g9K?LOnX%omoDs;IYX z#msvIY>*o7G$@J0!?iO1OxLO&)_Wg(u=^I2p2r*Yi{vaew2k3J=Qcx=jRO!EkVY0k zVXu7-Jx9xE($7w7?9z{Wd|A&{$!nNI2)RUz=e}%Ef`^(`ZU1Z-dwJo!kwXuFkEe{;{K{XuMrENHHI|v2z^)S-ZLA+L`qSbY*JIxuI_PBM~`dQ@zU|BnQ`2?dHc5Mg3^?L z=p{zx(w*W--d)Qj+QqtSk@jx-HH2AZF^);`Nub? zFo3Q&4zKw&Cn^qHzX6)QnzHw`)*fK$`n6BVov+8I$ZmcXsGf356GueMZpEdDfk zN=JH%f2Ob|$LK)c_@tkIFIH%aS$%Nl295ze47gIA8Df(0j8+O&!_T$TVdX@2mcY(J zHfjSlen(8(M_Wmiy{&zo3gWrO%|+@*UyB9KnLmtavwCTF%lAS5>3+JYtH0QXpH7Zp zSJE+Gv>cNxeExY0me}->CcmVke`&3U{=MpZCwEjLm*91Yo*=S_`caNj6;Mq1=C{0G zYX9A3ZRbo>2Lj!P|HCXa>l<4|yiX9yuNGriAC^^|;{BHgI;TX0>D3V4mH!Ce$TgOh zQ(^4vgtff5P~OBC(m_N?=G{Uy^_qcF^%1?#CCY6JvvOs>FZd}5 ztZ#LAYpIvluON#=itsm5tMb3YeQ!WDWuw$yX>PNh+H2nU^DzJpN)foSZ zhMSq|cHd%JM9uuLT*#2VrbdmZt7?Ohq*pWG;H8)WdH>g@*$IYT9|AMG*=FIz5pOcF z`jYrnJK;c|%M1r0~dR+0vU=3OW zLl&Rb@O;ALj4Ft4P!P2}jcd@J)E71`6UUm~U-@BsU54x z;87?lyYmYqBZc~8fdy|k+1OF^M-o-*Ua@N8v4=Es!bX};C-pF}msT-*9&}^05Xs<` zO}a$P7K;#1uG0XchaY?i#o=3&Pa)#skmLnUYZpZ7XbpUZ*QZx*c)LpgNB$XmqqBPS zM8fcdjJk^&Z_ltAgt4~Jc~_lV1j~G~-hi&~xa71A1I(`Le&XHk`^YwOepjaJ$^A9d zd5!WQZRf%v+LQ^dK^FbHcOHE~e4Y>T1ZBthFw;#c#&@mZ?gW*Oe4dK@QN0 zshVa%epn%b05ZA-kgfUfyC2N(7q{A*{Th8am%womQ80FDE>;E*w}~w?1^>-c_%&d68k%K3*EK)gC0XPZRr;xrhVi8K1BgKHxn+L*CZ@HqaOVBf$6~($4cyQ1=ZBC4@)W^?! zr(I`%qRSU6FDJ83Mz>l@cmvZEHKHw_Jjg^}aWej=a=;Gs5OdwruQ}Mi2Utw$){N zovvWUXy`X%dxij2;0Yw~0q{N3o&(#m?3J#Pi&59GcR&M`5)*5jgsXVrnLtva z)t=%fi?w0Sphk>CVlmJ(p^2KTtK*44Oy9$C$m}t9;w2n4(%6{r46nPnk0k<)Ijwz= zGIPzdN&OMu7TehHwh$azY?}>IB>AwW-$+Mp3>=<_vE$;;+N_f!GD+vV$Uba;V+MPO zQjf-R0JU5qkD8jp3=h$e7)mIR z=3rj2$*fDg%ggw&GhTd^F%{_BwWK09)3uJdooGt8rvb9^=1Z>t z{oC4m)b~bOIVSFUblZiSos6)lNz*+=EdB+cFQGLF^eiJ);tiuZigyvzA3}>`O{`7* zF$-v2!+cHSbeHCz(kz+@F>2`#K?QIMP~bjWV&XA#d4+N5teW}Ludvv20CtfFy zr#_FWgx((%MH0%1n2+MeO}dt#9%vAPkf}H%uxXUydLSk7c)&Q}*+^+9d#)=}Z|aqh zY5w_tlQ)O0WTW(^=Im{%(=){EdTJfy;RQgBG=sK!wO@<6(O`^g`imj8{1|-KEXcvR zD^s?AA*Ur+g<(_}>$(Jk%W=kB#ASZJX^j2)YsnAr#8rWlJ zqL_G;$wAPD<;C}|ueyfj^{5Y#F@@3xGD#rMm%hW@aP!T)4^WHWL`OR?GmGkYpTOXn za#h=hiDS0e98e_JO#K@u=B$|Wi?4la9lueW&qtviNci{e*z&HTZm{B}?wLuNUf1M=lAtWGKWgS)l$ z-2dcJD0#*vOb|jSJZ;sN$a47bB9cQrDC^OGg`1(wr*s{3J$8dyUwB)YdI!IFvu$RD zP?G~K+)mJo#E4(>U3rf23zgg4$OsoVAd&j4yc+cDC(DxepVm(_q4fmtoKq!guGSVj z&^T0fN1GnT1{@ozf9zxrdFN_a>f+CW`!=bwaJIeQ%!>{0L`HCO3! zgA8~2btVUF-bna4TD8t(l^{@XhcKtOediJAR87CQr5AU?(FE4=b0Zt-H0)QX3Qx@g zX5|YiuQ4+G*TTCFe0%+<7FmM#I0neUtwa#D*IfH0<*)I~5IUC2f*HDY6-aP5K27(b z?JBMpusLnIYu6T6cLJd}zyIY1rc5JGy~;Ji?UTRGM%kVb$3UcHbY+0KE7UE9!NW4P zp(kXmkZY&HqogUhljR=x#h*O$l)8#@!XAl1<Yo`o!L%u>OwH)L< zvK(jmw%ZzeO-fU1i*t(^$FH-SmLQST7h8L>5g7%0NJQxJC$Tn;s~gDG8*c1y+m_nq ztsW2k=@IY*Y#ekab72;izy_HsI1)%4ixGVUrfH3W`u#fGK|n(<#@JY@VGyqW=_irr zk;3sWCScS`!%zCz+wwjAU*}xZgdR)a&-T9qE-hMuGtzvTdi(9_g>$z!;e>4sdx`24 zG~=p}?pkA?0d?yG(32v&Ik|7?szsq37=Mc=NpcBa*R>+VBrfnSJ#_La8w;x8 zgZJolzPXW4xSr2tcvTX#!bV&4kj#9fJTbbQ#=T6VzbZzE&k;H+L&b&dCuwDkS-YLG znLuI0;~li~*YjIOn>)K0kc_h3mR*uj~1IydIDH z@=O8zp)}TZ?-r8TZ#eWn-^hX7t{B&6!IOksA_Ed=6Dh<<}j$G<6^Q{N?x)L8ZUYvCf&;3LF zLBPe&dnezZ%ewN;Z!?#^(^jnvfmOxaBbifKGp+l{k83$4N>l7go&0;MjDXo+^>Do_{HE*ge2naxZHC2WVcKwonF>j{T%AIYUv}_ zm)H%dZri6-LlTe}xcuzOnQroVr>RaNE8PUyu3Y^mD5I$V^KY8umw>7*eurAe#%nRw=LI z%b1>b^1!GP3ZTZ;7G z2-n#Mb(4zR*cJegGE34IPm4>~SoF9I@>Jbvca${dWR%%LY!rDOBDY9gU@lU4>P0i* zD844>H{ItSkLzx~iI7Y(c|%&f{)4sHvn>23t6@|0KjA+oc1ryK+ow-}yupN%T(uRv zt*Wn({=rA0K@{p~YnSqGCY$vJD?bqCcR=*k&~p)o)OIdlD!T7m-dz_g+U4OG!p^H% z>H5>kn<0OC=Hzi&hNF9vD_+Z0%6i<Ym73((jwfw_aujf1bTcYk@=c z2QAVEgH6nXFNx7|V~yt-enaJurm(W+-}-wMH;md9T+%SVb^*j6M=RB#>O^_L6~0He zNHT*5s^oApLk3{aT3pt}qL0JRx5-mJ>lPhQ^+e>t+f{xBy-apU$$6kWIo)0^)7$=* z$r1X8$mlL$3#~41T|<^9S2xG(zOtUi7Fv#NA!R0LZ`Kho^zRe9r)v6Xhm@%;_%EcP z>z&ZyVpnBVGHmWDd1uz=l{x(r$1s=29Tz*?g7Myse0d&t!8b?5Rl;NW(iY1k5{vsa zGnAo^J70$x;y!7l0Qb0{x?^e$&w$rp1%Hk?7@%mfTcz(+L6SctE3d?^|rUw8t#F&4p#mT@Je#fkAU| zd-?LMFFF}Jv0_vdXBCxCry^uF3_7*JCy5nWO+2Se#>XE?_1%ci$0Ty&-> zzeMt|cRxK;aM%^EXEdrHW_Uaj1^anQKgw69p>N@}_$E(3d+zyoq*DI2Kjs_em#C<_ z$;kvx7K+_F7fOn?67YB^ z@O{0Fw38lCF>x3>&%0+=x4Wl4#xuDSj-FfxUVQL=Iv3*5^Q6%0?`}@MgV-?fUS4Kj zhmqxno`6Dg^um7Wsn*2jsZx*b(V?wYpaR{xxWVq52b17@5)fg4EMDl>KN4n-;0tSe zI?dct610R^du3seSIE)VnJ$H|?T5^eGB4SGxYIg++ooTf%7mNPxqIAe*W0XPDO-jL| zfLNk?TT@!Cv64z*8QhUwWxMlp$jL~a@*@Nt}SI;BBD92akRLiAvvIM~9j~~fv7-#+WZoqL0{tdZ@ zUP8Y%Q93UNUf`zmAgfkI_TjxkubA=i7+UDehC2wBe_&A<)!+7qQb2lcIfWM zBY1|r_bY__OnN8+cNE4r0f+cbYPNyzJm&sbFh1ABX`q1H(9YXYpMo>J!O^qnxyrKR zpXY@ufX1H2sqK?8vBYmRJ$A%X350GF=eb;8{x9d&CvjW;ZaU8! z<=%m&&fG={V5**h-L)-eI@g(i10;O!B0>S@PzpRoLbDaJ)ZX8R1;K5V>TMk_)0NN| z>f+tON)NE3(cF3`-qv1Pq!jfl$I$q-pA^pYqt?GprrYFAZuMaHnH(k`Tmc`H2Fsn< zp1H!+zIh)Hk0H*#yWSwDnLXfzSmZ?QHo|h4DZ7R4z8yMKlqWb(pg$w%d<$m}#3hK9 zwoLjq*6C9?=FpD$#)2eV_MF)B2tzG!I%LhdlIe8rFXmXidHS=${bS%ehkqaJKu=`}GGS8N!r3)JI8J6krt_2jM-ZyXPZpTa*s2l z5h2`@Pzwf^$c-`K$aZAz0 zeLLyjEA*6V$<|*4ZE@}!MaNob=^l7?{+zY@d)R!5yklCw@ZQ(H=ghP4?J2i0Q;_9r z;Mrt0rIyESh3MPHx^TpsMQZbC-*;WVMC1S)(P_8!@?*UX8MFAX9*x`FI_-(FFSe~q zAFtInxLt;TS_ZsoRz(L2>HCQb#h9+x_j~XzTxP$<5Gk;2klvHNZsB{)G(_vo5qcaR z@Z0cn2qADXUuGfHmtBRdn^ZdBrXzW9%91Va`k!2*)p_q%CLv&5l*55&FA9w(+}7aF zLt_)IXN?r8wf-}rg{aU4-(t|&RC+~#)ZRUtjL&p9!_$ymAbXjl_UGHw?MA!PD&VHc zIobfsaSrcWb=df+9uTYiQjPoKb9;3#5=CfZ(q6Rwtq?;}h`g+Ws>==SXGKq=j**6c zpUO#=5x@Vw%?WETX-q9ZOydR6@AB(tAKkja)p_&$_oR0rha2UpW~IPk>1z(r7&qg+ zu)<4?+b)?WJ`qdn+Z(}wVvZNzg_`;B1m-;pLp+hJ+xI2mWT174l~9_I$@SYYUkjRH z;4lC85Fs1o%3Ruzr?Aa_Z?aZjXqzFz9d{nPY1Qax5L9&|+V!(rMWSmnJ}pNTNwXcD z_2dBy2X+G+}U|~??tmCxy6XM7eOy4UGSC(6vOP#31&oa#$q`3Cpu5sq|u`N*nHRLK^g33_5 z-UqRYP`6{{(j@b8-#^s^9-rDfUczkoV0KN>Fv9&0$&J|YFM=YRzY~B7zwJd5mFYXn zr}*-v#ql1fjYEH^x4 z2I(zC*0AfRH)#VaHOhP#o*i=KSW1cv7#VoPiX7_qATp>mGmrk0xs$~Ei6}SXx=;ba ztXWbcL(ZI2?$(^k6TL01TL#8Rs(dCN?2aIEy-~+-O^n8vs;LV)irgI3&ziB01J-bzM$OeDPJbSSsA#@x6{3XKo#4Vj3 z#~NeE`22YV)_?Gs?!SWJr|UiFrj{bXG@fB=k-Kt!?Q@&;t-P91(0L&4uD2uUjkgkq ziv`gr+x-cY(hQVpJ0q;CC&Ib0S4LXZ&Oqr%(V`JC$^S=PHMop7t!Z&`YVd1`ezZI46>CoM~RoL+EOc`)NHBS0Bs8M3Zw;~e8&@- zJJ&1y#|TVAQ-K$vPGlGzT~PNU|9JzR8giUrHVJ&no3;5?rD1O)nb%OwRBit!Bs%UZ zB%oq4rY&a};}A z+U2dzKqZPYU3FXeuu~Z=lwbgbCOaS{^T6p0K;;Dtqlvg(?%-x0aA9lmKFp@K#$=XB`;=ZgrpWmFEXWka6mvp!BZb(Bp+Lf5R$aoY%Nk-%x^Z zO%=4n9H|VZ07u<_KDdJ1?>MDB+GV=uvB+9)9W~UKy!aA!ka|LUJ*Dbu7nk_VDs}vo zWq1$oT#0c*&7~Ix-NGz3;7^k>nvB?)w>Q1ab?>g1Q7gP$ecLR){C3&T#{S+%%LdGU zmjcaylY^IL_9<7(hS+4whM{C`!2wpdngV1I-xNUzV^dlh360#`gsTd)6ae6H1q-EA z**)@x+YiE)C6Ai0fAFI4SGq&HOpM6yvIL*F}hz3!z zt3POkGmH<>iEjUi=X#Qt@6O`#H~I06ulg?FOJ?HZGmtcSRF40YSJ+Ap15^^6Nz(r0 z8jt-e-*d!{zucB?p@dzPW;`Xw*%E1kb0V~IY@6r3)#TzhhF?!Jzh#oGnLW=L)^Zt> z@shsK+%OqE96fQJiiZuKwi{W@4lSK}{nro=WC)-`qtndFO&F{lA_z)!xmfArgVHSh zn3HYu{C{bjUsl4|o^i2^G=Ftxmn^($tJq5yp*q zD282ddak5=$kk9_YoQ)Z_yy(8%UINwAHrwZPcJqY5c;?&3t&WhjsCv|Fiy@yskRtc z(Ah@zL!XG0k4An2Fe|X4kLDOfN>kQF?nWlQUJ2 zpe*1etB%uYyyz)*a2AV;h;TZVk)q@#84B7K&P)%dzsD>avBma3b0MC`5?AT!~)TI{*3^X50d z@_!)szy`$enD?_Q82faRH|4-Hr`LiCZlKD7&WYAvap=pLT!iT3TQB0av4$PO{;0xgD3_MzSV79*k>UkF|2VX-7c{qSx z^1d`{G!Kg4cFFj2Q_*zLjhc@8RmN(Q>2H1SkbZS%`JwbvgD*au5|6Rhdy?$9Jc4Y2 z*H`>prK{m-$yUd63$pTah}PwQOs@z3x8(r8Z6uQUk7}l!VUK=tz?%M*#TV%f#s${F;dmC(5ee~%z2IUG`Hnc_!LnFu$GLLVE*g1(@JpwmU*`GnS$eJc=a-Zw4*y^Z zgJP9r-`Cl(mhU~hSXPPEv5eX ztQxMYUw7Mg`K9BLJ5%i7Ew}L;8o8G{X$}3>H3&1XezpZQotY*#Fr>N02#yS9WzdVz%8mQhJ>_$fL z6D#UZ-1`NpbC~5I&yE`>g+A~?gT)Bl%OE%9^%IzUnQJD~Bkz-!IPZOUe3&x8KG#sp z^Jp5g)U+2`s_Tjqz%BY%-(0>Wt zvqASaAR1!#G8w~SDAA2(;?>K4AEUE@JNg+Po_w~h9f$ju12*y9GaSDo)xk>?l;>1+ zELt9JaZ}am4<8PG3Ji5>HY8()2_HTfhT?1OT^HZ5CmO7y)q1TMd020=EPn&vUpQrs z?V;Z#0e%=P>_Raxv3c`>GwtA~n-+)k^evVDIo)5ccT)>zRL&2X*|@{se!B5wZ6<-t zpo3GjRM1r7nh#!h&#=_(WvbbLSA8vjKRRhiiynQ{D7v+SE(_=p<|b)<6wI}B*o3xG z$jD-3yL(T3aQaR}F{4)7u#tEV)ZS9`SUIR&%*%$LE86gUj@pf<-3(nJ|KtjCgTg1j zkbTjp7djw4@zH4=%^ryIS^X=F_&RaR@WtimudTwgoOY@~(=JNtL3c@$b*|E}oZrj% zbVH8C2?KBgUySPTyQHDl)RB>YGsoqN`qo;xcg78MCymHf>A7szwf3EfIPP^9%?>R1 zIwv6um-8Ep*M~ptyQ1r2Y${YUQbmc)QOLL5}_calQR%zFLIs^RKBcaiT{8jG7gZbC2 z*bd`;cr{1WP?Gjls1EBi)gjaarRh8;|0J_A!K|9>kC!OZyH-~~NwPy%bajlaX|{pv zf;sj~U>pA?ZUI=WNF|dO3NT}gS5ZKV#qQKbBZHF1_3Jc@L^M%?GySbwjseRiJMyBz zr7{shLw|xW9(wX_DOXb7i$h&3(&sSYByfu;Fy$Be-{tIz5~h4L_*%IYzOkdZ|AJ#M zw+Rte!*p3p`S}Hb{#a01r^2vu{18}S!qdvDilgaXQP`93UgST9q9V=Y$!>j@7`?qk z<@5(Go<4lh*m1k)m5DEcbN)(KJsLmqUg^=l7fszi6G+8edF$*}U+9d7x0+2%V9=iU zR|dSxzxyUxaq1!P!{H~I zb1P=~;Z@fk^tvi5T|l#1@0Xs^jvL@Rj?nH_!k0~!FO2y!`gZ!s0#U~SkYP-PfB95q zw|Z)qVVN=u+dHqjXJ|D6?TkssUZ+`hNRqKYS8~Za7KO0jk<+W1>=76f7fCtt&a_!7 z_1m8Gs5u$x|JP7LjrYAftZd_t^!EQ*zwM%X!;A(&C?NkU*}JNyN^zOv4m~sID0p^v zE=~oc`rANAKQ5mwBCR*g8(I~d)l{2fiqVJN0DE5He>u))3))9Ox6LN@oB_}9Du+<~ zVPk5=KsZOwz=cZT141M8OuW5jeNi@j)w8ScoIjq2XRM=vJA=gSVQnyj%%S}GW6AH6 zZR$7`FwLZGtC;1)x81EzL_BaH29HQL>iWZTVgM}Hn^rBwwJF; zr=E!ZeH}kSKQzGj(DTSH^h62Dc3bz(h&?eOz?VdhLg(RUe?H;wI^np^@XMnDk_Gwl zE(1J*v@WmnYF3c18TRF>8t4Nce6>zg?vAGdm;7-}FS;f1R!E~QKk{w&W%C$`xc@h^ z-EcW3do5@;t3TOB4$&|cIA`}*Z}VHp{oL!A`G7LUrtQbr-e5J*M1q0fs(&9g=_Q{4 z+g#nQs(FxPfR+7qC^Qk?96zBdc^s=+zrbx~`@AHuVPiNWp?tiLTn9Q_itztdx+7&* z^Ow%(SfLEqswhqvELzqfMc=0u?1gOS-2wCcU*TIzd7|+C+bm@X0{@HK@Na{>?yW%{>xD zzIvCuA3b1YOE;y}xukf(q$<%6P7obWO_@&s46h(|oQc40QadVc0uBfIpL}BaEBj{& z?(v!MB6;F9A?9R*A1S=Pn2s)^(?(1KSK1PFtZ@9Y`53C&H3;rcidf%_5tpPC^I3R4 za1X;Z8Bi0tS{r!qt=eE?{>9>_yNY%e-8Vj4mKhj|v8L`gI0^I=-Oc`CzaQ>XHl&}! z5JmS0b#4(l9|QNO9L{UlONQy%mU`ul7D+5!OPS;r-f6O5OE;Pn!CiGBn;#==_-sU-Tl>8uLk+3*1-e>i?0?KHz&(VE{q%?n8b>Fk^FZTi~R< zabo5!8$KOd3l-sS-kqbv(mxj1_M9e^rs9V0-<^X$JGS03dVc7KA3i{8UepaCryd13 zii}2&J5U*PH)~z2zA};plLFs)+B{hs{-B)i@0MktU6_8Hbjgn|#amL7!R1uhJw#8L zCQa6BC&;$(Dq%6RWDEWDdC$PZVTV@T!1HURE7Pehhj(_3aauya4u0w==lyOfmGv*M z*6CQv`?Wu!>TgQ#Cuh_ARklC!dFknEkY)AH3pRGXXO{}slM#}nP_OH$3dD|gX?p~`{9wB*L)f~ z8wkj9#*SCFRfIPwxB_2!Y1odlqnqRf8;y%sss#p>rPB2GV`Y$y3SzB1n1r8jHB z#YgCESgGWVz`q zJUsrWDY(m<6uoVv;aFhL;@lEkMc^NKDd6ya;QL}cv;rtY)3DQF@wM6npya73hG|%G z2ABsIN`2c_sB=J{M4syLe_xB?kSA{H6phBC>LF#&pb9vgJRKgQpFcz2hC+C}Udya| z-+5p#5V-7ga;3;Rcc6b19FFh5RiWYWN8rjHBtD_}2OJuo3=5gs+UcApG*8Mr8lg*m z_XIe<@HoG^FG%FC&hLO?p(7Xr;BcONLBalAU=r;Sagir9Sw{6!^kXu)LpEGsTZrPP zj7ej~UYZR|>cMu;Grd{h6;HF4oS1xJpP%VhU8^6^adiiq3RM6^Eu8BNChcZVpc#W0 ze{JkMI^v_Qu2Zyc$yVI4Wv>3C-V9bP+K-pQy_oCIbt^)&aSIQDDC1)OK8hUw4ZC~E z(1l(u zGBV<6Rk9ILE}pDb&O}Sf8)uY((If8;eT&vKNmupn51ByS2c?Gk5Iv;BaH02H`p4Yao{k$35nZT>ZeR8cd;9VD#K~DC@>hB>EhH?;SsE zi`wTT{mBNXfbE)Jya|88**Nf3v^##1nO~Y)CzAoa_!%o<(`r}|Mr++~YwDVWo!s`K zn<$aOzjisDYq8IHUXk#_3%}L+v_7#DJj|5g8Xhl;VuBj`8Mi{5KB`}4F~afMU_GHM zuvbap>7}A>7GuQ;5Eze-$4vFM-ozh=zc@dRzD}WDW;xzG1hWv8et_$tn+pF$ODhf|y`0$4~wOn0VD^Q=1BBRkZ z^t>E58=Oc+l!jQyplh~5VOebnmeMf=iz{gkVNBq*SGPEJV+%jgJDiQ|*8ApY5UlHL z))7Y$PCcKW<$bE<_)*PiaD3vAUXv`e?sJb&l{T(CHGW`bkw$ZBE6H>FDM_+*w^BFU zgs{N0m^nW*A?!ApQpEedCZo49_iMypgwCX2vV(8jRB zuR1v8*wzf{{OL&s766q5xzpicB!)dyAV8N8Pa2oZn3|1#idzzwwLMQiQBR4bnX-_; zFMaafC2JrRP$5J21XWXBGhijb8QsaCRGDqnN?*#=Vtb1t`Ro?&nldMG&u43pC3*Bn zT}V2SKDhm2D&6)_I3e=!2BU2q&T{+GLjD?&1+NU98#U;8GAhg-tNHe?{Z9q{Zj|7h zhkT~jqTc25_p~i0j`F~FQ6%gB$!{i-)o|YRCmid@%m|8Tx33p)(U6wdh-eX=fb?|p zY2|~OFwGd=BdNt6T`Xp0#UHrc!OpIAUfmWm;&U?dI z=)e$+%ODeRz6>Fe6je=s$Vt|*$i-q{U)hn4uKZj4nY{ox2K7B2l@2t)-EXh?Y&qx1 z!>e1y*;9_kj-52!$zjB~-#K-K4WDvY6g)X&TV-eIv8;V~!OXJi5Qmvpw$h+x|#&Fo0>I@}eUbWFDCo@+b4X+5Qxp z4--?YlH>h|@Dk^d2-VCtT(8Y_4nrpb3t_>42#yKtDH;#RK+&-jw>zyj&+_ZBXYH+_ ztFT760Rz=d=hJ{O$@X>qGX_r2JX) zSsgDH{xF_0QSLxigSx}g36ZbD{1XG818s0^6W+*4R4HplRB6(?(!*c8&77;tmoSrB z4Y{}3wT*Pflt<2yF(#Z_?~*fwN=BLAu~JD0ek7dyc0hWQr!gHoM`Q2+_N?nL;Iq+l5eSoQkYsD#S!Q3N}s^!*=b_QF_v zCSzD!xl}SQn#>0NuI4`kIC9*)(+yRX`Iik%R~|p{jwK;}5kS;Qx^?H2eu3MdqbD51 zbsLCS@rf{k|89sw^-B$KiCGGET$*$Vo>MT*>&7ZnY zF+`k~b02$yk`vVug*JjLyU%0*WLasObh(cPZMmR*dUTD*@SV5RP)bBQ{BiK(T_Ucz z0RY89>?fGI!Yyu475vJT#Q$ZC_jd-H2Kx!sZd0OU-d*7mySMnULCp)qNWQ*kzxzYr z2%T72CCDn#ZpHEbqV~hH>!ASZbKY_&hvB^N@=F7pg> zvYJ6ThyC`so{D?Z+IkG9g7A1 z0b)~6VP2%TJsds$9ncy6QM~4v*B2BFkuO+4E)2aSgU6xJ1j&|fp1H3_|1@Oh?*qb< z_~F*~7?luO9Hu6S`!IxL;WrR4@Nowd799-yoSpKs7bq$$LOA-`M-0=>;wy(-9OKa4 z{E0j#chd{Vs`#oSLydxhOB;OztB=T+8|L;Mu-cWwPG?ibKkwjmH)6EJC3-~+aDxt| zWmZXEE}E&2ASrA|SGn_FvC1i3HBu;Z&;x6h_Z!LV?oS5IUJuf254 zk^S+uQ|d^qDm(ugb0axWdj|Jecsx@htD?V9GK%`fI{9ru6LPO+12_wRIVcApEa9NlzkTHJVfe?md zkLl~Yu=ZN6YyD?aD2H2{FKRnjwv)CthxCq(@>acIYjRX zb?)m6$&0Y;f}F3yiB*oFeR0BU%SYi}57*u_`Qi*`5#2&M6+mH+q|d{D&lD!$zl8?M zl_5u!eo+P1j6nT8y%TefY5tDoK3E4SFacyrOrf8rDXbSSfKL~%C*3gFfnWd3dE6!w zpMD7!f77Pe-PO2+3~UrNc4amhxI-NI`r9XV{BQ!i&OFnN3|Okf^I!7bo4XR9|2hDU zt4~w{bXRMf#5Z_!Ur0L2*@?ehZhoy|IQZ_~wC%^T*Nra;akE}O-GT!Ro#lis=1^B& zs(ZQ69_F-S;Vd~_x1d&RJ(&>xZ-0IqV8G8&tqZQ zCPyUYt)W<1@X@PR-G+UuUqklqycGH%?XYvQ=a4+L2h(9qAd&Hp6#TIT<+9VUm0>hY ze@H*G;ZP7A9C0Nn(^?Ds?;iJV**=hf#q1P8mJPnIhH9V5f`E$iKO$JMrgP{DFdyF@cq6X3wPw~8CxACe1K+o3K^B3dNOl@vCE`GMk39xjGOs#37gq6E*8L8B+s zHp{diAN2UbCTvJ^9|5KesA=wDkp+s=TlMn3sth!L;Dv4(M&EJQ32753tT_36=I<)J zM*g-Z8}9e^g6AKY>MRaUG6x&0;9{_i)&(jJ?!DJ$YSGz1l9}>u!l%}aBfIXmUO7cP zW6ex94RbjL_&2!FURY+Pw7`+)8}n)UA9SE!8I!7@HmHH=j2V3hy-)*t3(KH%cBq&< zxb*2vy>09#GLlJHSknN9|B*Qg>2aIDhKnyTmT6rSmRnb#{ZnD+cYleAmq_Z|t;>5U z-a39uY(VEgO+*i$r~8|F$ij4Kdl?`M02u~%MddU%YTlo%R&9ZBAg}U)3A2|t@r5^e zSz`S_nNi~Y#GQuuSzs7^@#4yvyXcNVI~WqnOnXC{TMh!>ze8H{K(MWi*o_uV+A)D? zG57|~6Ybr`(>VN)bcw&6EekL zyl>OWSzJf9+%h!~{_Br~zmWbOO*e(}RH%uf;gqSGN993{j*&k1D*lSA^7186isIfPea zVjE^d@#Qn3Sk@GZ1)tb6riulM3xcE2TkQOePk<11!aZ=O0BXb5ntdD4JfkRj%6v8+ z2gET%Dc!&G?Yd_oAx4cLFo3{p=7F{s530EU6U7L;llphZi3c4_H=cQ5zjTK1W>AB7 zK&s(}?OwDZS<|Oml^m%AMMVIrx{l>y*~W7ANg;L@UBB1^2IAM+u0ijnmgr2rh#kJ4 zJSmt&SK-^}%T}P@84zj}`0su@RL}WY3NO%5-hiia5xJT=e~oX;tWNpG6ZjN>J>2l` zpN*trpR%WYe?{0wl74-qT#8!>F^ozwI=D{1iT6r^yVRa@0{V`Vsb4^T;l1VLU0+O3 zzwa3@`YGKLXlEVnchy1TMouqyDm?YYx_AxxMfw_CtiXR8%c{r!!e?pr>j$!)Y1!W* zIOjSgzzGBBm-L?lv9v~rht8zs%;=@0i*mFIfjeGjIr73VFZQE;O7V#=Ps>iJ<~zMF z)cOgooUo6ZpB77wLpH)p(+v(v2{He2$bdrXYgs0svVl55=^Nu8Q^+~tN*ZYdRUf2X zZ9ggGPtr(;YXAG_DxrF zV)FM_6WKSC7jDxOak*Q`Jccxlwidlo-n~;wGKqt})&kEvEm18A_%OP zy-P4t==E=LuzW&rZ@2-kLW1@*!XUKK+^f>uE7qNd@x#{u-rcLY-^+T5#SQBM`0lfO^pEgQh0?%RaL=KD;mi96Y1${htE4qG7qjmB#h1ZX2 zbL%XUGr;p3Ac2A91d=Qt$ZfB6c$fJ6OLU>(6Z{ze{lwI;48CbQI#V^41s5AO;Sins zx+gS4Y&+nazL9;5n32sQ3dtv?_)&!AV<_n8mNmuoE=N^AU|%;HncOmIr6HkE;pWgH z)1-%Xl))bSiNb7#ebdksdp^m;h8@ZfY0&rKsBNLVbTS-yXO4}EaQRcp>07<&T-0J2 zO%r2Slp4JB%w*+V_ED)V&|9>by8)D=@wWI0*DaNOIqgPjJL35Z_JuG0^Q&o3R#T3Z z=)qPtCzC#d0KWMnMD_YrNZ0?#Ed1B?#Q2pCiOmjk`@fme&9{i%aocOq{iy3ISTqIv zrQ92w5}V6b`BI@v=Y&!y(=L|rr~^$Y=#ljM(@iO+EsXo^>KS46H(yj%a}2;c_vxtb z^IQ|793Xw;6&3#BP>Wef-q2B__S=JBW0J`bQOwf*q0;lLagWU>SQW4DnLe@j(01iE_-19NV=&-pc@44JaE0q5m@1ul6x4)2DD7l{Mb+Hz!&@Z{0y^ ze9n;`<+;vc?K@&~R|C)OE<1kBC>hv)TV))pGA(bKWZV1IBmIy>+=`itYJr%1SX1!h zwW4w3cpwy=`+z@)`NNG?XFuG4*W=nE4BV4H>+T86o-|)R4H|RR#?m*Tm>6ixyG9Z5 zw6^%0e=^ZyOp>r_-Bop>l~wK2wR+-*An4 zK5I5^;rB3N}uiLhlr@Brk zy~jtqrUNnswU5eecV-ofx_%fPm0101zP2#k0RKoUD;79TCEdmvNxrZYU)MsujNTOC zV&b5Fr5H98`Cj5M#QO~fMg`7;5=0u9S^|{~5YweRhXiXk=qN-2NF{8_EGq z@c+4-%-iTMUzgu=p`k#xhGU);(+VCZ_^@6>*Z!EiNjA`|^p1v9Nl9*&tHl5PDf&=m zjIIadHuJ-Uc#m9^AODPnUaksP*Q_I|IRS}QZ;AO1xEl_7#?J1Ir5`@Ov%oNc__!2W z6+pU@L~AmRW;-_PY>B@rk9WICl==H9hHdFix>Uxf=X4w8KS&?sl^=R2rtwTM<^4{7 z^=qHZHteV8JJzDH(fhR5Tx{KJoeJ%5% zRYCL7QIGO6U%|c0A?B@2^?!L(;Y#&^8|B?`qNTD6%=jnJ0T(2Mq=*8%`*;(miuprEzrABMwctXEP(A-RBN3Xj4wLeFV z+(HZnE^CIXZg>uGss;~txjb6<$5*0$k*wp4o9P)_MXdPqJX>W^B_M(Io3hlJCKYx( zTFjI~cD`5A;B$Ys>NWaZ-;9xC$YQ;b7n0lUI3AmW>?#DFPEceYbNk2Tb-kBWxs(Gg z5{4ee9REE^%&wX;0i9KK7vi#B$J~zzTK4zk2l~DD$;i*!;maHk6QKkm2BLq+;{=Q2 z&f_Y|hwp^+Y4u!d26>~L$0YIP324p17_<^q)ckjE7V|5kBrlEYPRkwp9dPRFMqS4t zFy=}d36uS*j~zNv29&@e^)+&$-`$6T$=B`=auvOmz)r=>t~u6zM-&40avSgw@)3V= zUmde`ug^X=`-gPa_isN%2O*O)9bXd!ik7WRzhv1`=X^fOC=Z5XRjOQTR$}g_pU{6? zWAkDk4!Wfo47~Yz@_=KpAs#)$^e+8Sx`P(~dFGnf!ZVe>;%SL^6P)m3JrlDVh0W8% zxnAe#q(%%J|MfBU^T*N?`xcVdSsKnQ4atCA-qOY(rUYN!X4ux2F0iH`0bcH)gBG7s z|BXaXGgTPx4P#YvV@7U|%Y6L?hVl(KJwn|YePo$YOwkuh?!JuF@&vCUoGVn$W^|w3 zJ%s@aZ+jq#syg`I>I2Vz=svI*Z)oykfVn;7Gw%R#iRs7(yfJ%8Nq#@DeWs$Iw?bN; z`^bMM;!_Um2An9D4}wvbetF%2q|FLLbI$$m*f8veG9bzRtFvRgmpfbY<(b@HJo0Cg ztIXvA3NJcj3QimYM3Hy|S+`}7xEEgfSq}n=5n)^5w0>hDEH3chrgB7|FZxrte4r5Z^|fd=2siO)OC!s6?%K4 zA_$Fz?cH1HNapaE^jU9a1X@?r#UX8oOp6xaBxPwkxF|QjZH^Vj7A}4FeT(sbhsB($FjFw| zk^CL1NH&N&2Ko&fBJ}mMWXTCtGo|~b{c%)XBsgpB{CBRezwp|ERuE$JXV!@uJUoG8 z@G53iMBcUp`kC7t5kI|NKmjTl9zQ68gIHFm4~Iq=b%>axA_I@=tHy(M^X#DuzS&{_ zpJ$kb?-|X6^^-$*bEYYrtx7GPz4iIVGn9PVN4CN`w`6RV=+X|A&MBHQ#qd>e7>w_w zM7b^wc8NScLp>b#{5RZ?FP$F-Er*``HIpropX;^Tg!X`j$5+#k*deR=D|K+iXwJIh zPvv+NSKw|PEA)P3qU!2PTV2aZh6Z&wfKB@0(-fnhLDfFZLuG$b7>bii)MLzX*+bH9 zJ1d?@=sWVcwNm?<4t>M`y2+_3|I$$#YD)=XGSUZbsd#E}Aq*6dZ zS|NX{gAC&$Oo`!C)LvZ2^mKK%qf63uVJV70PzYX0D*Z^H%!;OI|L}kY;(THfvBw6s zX;C(983BPDj5zOh`fe}0TwS*6TFQ$+L11jNe2h6uMl&8J@Mvw33JBS_Za@Ks1at9@ zQGKicnm;7_=;7!m6t%jCmFB_3IwSC6feP-b$jG+Yro+q!5}C)NH!0;w!_s%Ea9>{( zwp&l(LkY)mwxe*KMb)RErMLF0z5-Dk&w!S8lTPzA%uVM_$glzaa1i*Aet1lUwKDa@ zUzbMY%~mT}&;vA|jB=mg&Uec4ue9>RozT-?-2_lcZfj&2!C-@Y#u^V)^0|jHG@QwI*$FJ1TTrDT!&utYo z`r8kE5&+_yLl8rMJMP&q&;RlCChkzZ;s1D2L?M-A9g>u_#g;I#XHA5%j3Pp^FWFA^ zvdf-j%3fl~R>au%jD0O*-8DW7C#49NUcFNhfO$o#PNc^G1z`Pl#JTe7^LY?)0 z5pVH!*&iMSaE`;l9k!&5hkLk%W-EpHud9eto?z2MYo%VF^#lAT_*aZj<1Cdg_)!hd zX1L^|8(FTk8KiCMLp|F4$(#B#lqqy%ihX6@{+uME;{uYdYHAbn6tXp{9Noyd%B?5L z5bFGk*z~2dL>%UXubeAS4)W2;ssrYTo+F-q%o#J%5ddbe!;sOP-; z6P|sx(bs?O^ZfN$;q0AVu_+}MpvBd1cY6YbgFDTxqP{H))q@&riI$Ld*KF|{u9qi@ zcrPc&B_aFVa@U5;p`wIh=YQjf1WoPiO*>&bar{-}5k_&e2g#{r%r8r&6id?x;y$6j z_EcGD>I`m|Qxbz!YlSVFXvEqvxcs9qAO9f~;Y@&$N0vEq=aJ60W{j1$G^y0|p0f4m zb)yRr&hn@K@_agJzJDI^LGlWu%tg2ZOZ{exYkm&)pVOOZb}#sYdkP7j>;AN(p)&HY z@e9tVQrmw)J8iQ3I%4VFdi(cgQUkRX$lXLrpF0;t#MC6DF9(=ZZrHDHq-P&E-A?>c z+&AC9h|rPVm-tz&U$(*}xiYZZugx*;Fyq`$Q^F5$m{jWBiSajh#-dcShBX7vpDb-6 zBC5=Ypakq&keAlY!Y|I9 zR8LxeazHbEC+(Zx^N0K*-ecmcj29M=c+~lVS+BvyA(28Lp5Fe{nVR^>Quah_J^9`zS(UQEOzLu z_FPuh<%-cGD+3w-3nY{Mm*gv!WZLOtGKvS=G}J#lV_YRXPUMdy#Os@pO(?0~#1BnY zTA-SI#D!8Kp!+-e%x2p#0~8f|WD1HM z;$Oj^*&!*LzXZUMM%Tuj3Bl_GmB7)Q=FMv;N~ec_en~fS8OcOm*McU5daoeGK<`mx zt+BS+jtKZ;Yzf3p!0Y&T>kzt>V7C?@LYTnrpF3C2+z;QCBWefmgO~`cI|*+82w1ZI zo_;ICY)bX%b#nNAy=HaIeB=n+GS53KX%%>L+rcd$qNkj5#b)2;Fy_QZ$(bX9nY03_ zM`<53{sad#KaZ66h3w{wc4M`~8CMsP21WBq^`OaUe<|pS4P3bWF9qqtmu!sswPT05 z%QyfT^6ENyXb^wHooag&kE@)Cpxmg*bWyY zHys7wYdV*rN5o_ntX=f;b%RiHua$Vq127G=CwY6_<-J4j@*I!vgH0;^BC}}+G=wn{ zyUsk$tvFGG={>5Do@J+Y7)gxUkej8q{9w3$ zWfA*|$s=a_$qCi?kCnc?xZis}|Akb$>YaanS`pQA=ogw=?C;#H|CjsAvE}*GcOkhO zfo)8ytURQ%!XF$=PGe1A6;pnRf7-u{y9z&Ik=;7y_U4=) ze4)QAa-{^M#XasmaOS)8^i0wqLv3KF_9nu`_@^+(4fSa#ttfBSp&A)XMPnobBqC#R z_evg(t{JH^fVUqEes&;EDBh=YQhI%!4Z34>k;tX1Cg{D8W0%3aufmVGOC>yy#!^6y z$}6Vl?-YU0V*w(@WwOtKcvnqqlcgyZD5&{}OxTk$BB}h?QPHVZQwWnE0A9kZm;bUp zxKp$mdA`((_{VtE`{17@r)+U$&9)tHUql|Z6KY!HGY2(?XpDl1MU3QEjgY*uzMNPd2!veWwKAxr%%;Ct)5 zGUxF&4%s$2DU!7}e(K^xu5xcK=$>E6{+Bg+SQ4 znb**}FQ^}<9$)fffEb28WA;$I2MS7D*ox|C{LA+ZBR!}>@%IjzV#^oaoD(CmjV+uw zL6%V8>?bVGp!SE4@k+OAiMsKCFlpOh6WD*2sy|;}xT`1k%v2>%0GI^0BmkYUoG2d;hO{QZYE`-~^NSOAsm&KnB@|9e_Ym|AD9 zEL^Flrk}%GHl+Do9Vs>M@#1Dql323A>u8tV`PoHm?{3APTK^%PJ2Rd);3AeOF=&4`kba$I+reae0SQ79;Zb7(iwUR8UM5k0cxF%Y2cQi=HK$qpZT89S0TzHv9fXv zc-P#fv|9)UUEVAB87`{{4V6&ctXE}-DnjOLFwX%(>_h+a8@Fd#&$$ep1Nuu@V!|Vu z$Q||vMuTCJ0w;EEx&o9bum2Dr+@Z~3$QypvO|e6hS&1EY^V=N$@dX5nI&T8fF&fxE9cjmW2x{RBr2CP5uoyn%J zM83FTnMgSuJ7bBOn!!vV&;O)r#(B@YbCiYf-B`TfRd*4nyUm(<^_^;6#7s~DQhS=D zDZHp7+HJnr01+g_9A`aPPqrlm?Wn*$pdNB(P^GT%s z^%E}L9;g58zUc!#NM3+yM0QllH&DGJo7fd>6H+?*99<&ZN6=SftF>=qiTNyKtqRLW z)T=yRpzfsT8l7pA4sIIV#lGi~oe7Kb;s~&9oUa>FzXPze?sU2*LTrB<<7iJ*sk;wU791*mLqIW@aH)wh7`EbGM9)+}HZz&aCXlJmHX$1&T&jy9>f-^Zp}-YjS$ z;m6z~2MS}G+|w%;Rz04Qya>lpetJf4)b@A$ zv(nlHB$F9?T;nT4h~v^}3vCiTSWv7>S{6$y>I_z@!WUiEc>8ee@dsvZgV~d|*xl4l z2heB{Gi{NQas2{;=Z3*V300SViD~nW$bkG3QLmV&$5wfd2c5uEM$|ebPAJ|fw2JTy zLr2P!g6u@;nOnM%{|M*-4(B%HDt$a)FDuoBFzz+sizxZ_oc|gmtwT|n@2Ac?PjaCr zLm5g^UDz{!cMDH*GuoHMm97!X1!xEAhv6hWhVOUhY}0Z>uo)mW8SdMa`IWv<3vvBE zC6g--B$&(HmqF?*RfN|S@ps^O`4+jhQ3M7Xz4)!InkZw#Y@Mgm=N^%lK z6}y|voo}yJ9XpHjgnxuPY&3|4Q1Pza_im;Ucy%~#_o`OHV_0;PWo0Jk@0ah+tuhJB z?xEa;^7q;753orVw?>QL)eNQKbo^*?BBwpk^A^YwEg9s%^iBUsUbT-P|{U{cV-M>(gyrq%i8`$F{8VGNxF!_ zV3~mR{AUBK6!jr}GS-nC^*0!g%c94PlRx)C$SZK3lqg}ni=bvUi|3D>k7K2uEJyPn zB7aew&+!Adj#?zl?_YyW|GejZpM$;%44%7)Z92nDkUIw2QA7-Z%ekP&5-$7n0~8@^ zM0QqmRzHVdI9Y*tmjE78#0T+B7U3CM;ZGC{60U~jXMRtC&ffDKoj?8)y=^~%#^&I< z>+pm06(iV;a3ldAPa)peSfn1Z2iS(Qxsrsf?a{ETs~sc)o-|12XzmyZAZge@L87H{ zqExXFJdYU}`EOhiBL5GE_M4ix^g>)W?1OSk|IUfthqkY+cXNe{627&rE?*MoxmpSi z+6O)MJ|S%0$gH`;BpW+M{W11+)8SwR@|WuW90g-5!<9v>z$55ZYAwfEsNOI zKQY`@4s2MoZ2VU$T zG6o9ezc?%1HcuC5@h-#|Rr?DZ(Pkb{$?c81Z6>_TXn2b9DbR}0j{!~iK2vyP1w!$| zBLuVW&G=a0O3?3|`^4|WF?v7*Y*8OzW&Onn?_B6TkAgFwosjE7(#73n&U^XbTr74R zaV3(MlKFhx@=l;qGcA&`fQgIO;>Q0mJEcnLQHrKLZ*BlH^6c>v|2!9Lu?5FZ-126J z-jHyI^gW%{sbk16ukl^>rj-|k``9`XLJZ7(1yo-ItKYzHuh(sK7F=6qgiUHf_D&C| z$SKIw01n3;%$2Wt(_f7i2d)0kJr06I3WyAYJVo%NuiJb5JoSu`9;TX5VDsaHBbjs^HeCG5;(FjABI{@SlYM!zJ z>nLh}E@j6vE#3wb%RXW)86I$4j+}e-jt6qzdmmSQd+cqN^zIAZ104R_-}DpW^SKtE zsi?486$TkNm!88+oHv_^h%JI|%Vs2mX#JMWelL9`V&Zi)@DpS=)>61mpl_gq`VPlp zzyzxSrWYY4{RX)dgBrLQD`3mo7?4)ga5+cte6~X8X&o#(Nq{fF*#s8aIx_*-LEcPI zPEFvkhB}3anZVMa4t_m{`+!Kr^N(5}wh~*Q^U@5fv?Q3&cf5TKxcy>q$0FP9qlF_p zzP`1Om5~da=!@US--PWK0NN$&ot%#{<1Q}^&jrd%U^ke#xEvsvxkH4p^Rst6hxi#p z4*eF)iU>)DFDN^MOco{+QN!5>5)-N* zR@y*F+@)MmS7jf@_VPBR?UV}XCNB(g& zM~AWb4zvu{3%w6K3F7j5j_vL^g>>S54dwbc$H|*Ro`}Tkdg~G|CWjQ@R{CIG`uyNe zd+Wg^sj2)3G3F(^B2fS7Eq*cCml(;nTjTq?yJLer+A;+PxO!u@lWH|;@M$C@bnj9itbJRD4~lezB(=QRe1Mx5+FX1IgZk4HSpx-b2lY zO1qdna~F5ad<~eF^|<=UjxhP+rJiEei2c*fp156!va{xb>JO`qQ`bDh+0(S-TY3Xd zK!YquTAOD#`AzGnT?^(AXyGZO*Lf$wznzDL=ek4EPZ3e}=1bfs;1Ku5pDJSv zJnVPm=2DUBc0vqMRL1&$o6nISG}Z&$7}K~3J7vHc90nuzwE|u>9&409BcI?z@iF*# z49*3=jse;ni*r3~ngxYof!!%T&7p;5Uk($dUZ!Dq+4b7&^FrTP< zXT0x+`}|6Y2xP?lC`OEfAMT z71OhQcBCXsNPH{sJ8&oE*PA)Oip)Y3a0LGBBCcRXJAa(t@m(2(XWaS7h)0mxtB=-S zVd(|@LwJ{d|3+(D^|M7(qnm{5%n$g z>7|)K5w4uTXM1SwIG&4Tz|?JDo?w_JX9Q|uxoPeR)$Ia8(ef95=E*oN-Nmvj0E90; zDTJt$&lNONr|1&4+-dc%y>4CoPn(9_?o4DJ;%J)WoaF3NPfynU(&L3_dl5PCoLxRq zReD7vIw;gt&BtGI+vS?LLJGgX4s?9ck9I;w-~`T28}3~ z;ck0A0vcto|C@JvwFwI-{-bE)Nfq+cC8i-Ts*)mae{b zU7l24Wfp*7Q*if{{F=bo!JC7$e+lzJd>q6PJ7oN*;_)!Ej1RkLxuzlr;N>Ddvy zlRZfK!Xt3#xjo)c%JkbSN6B~o|9-L10Z;RDXMu~hvHHk;rq$R6xo9~)73NGmw8U)NZ(9d?!d*aBe zVpMadiv*t59~4}z)ja`{|!;}RVR;j z{I)ICEFOC)Wl7lCF6FMA&7LG-b7f#zi=csTfb9kAH*A5sA3jl>65VTGb-FSJ`d7?! zWS$ZFen(8IN+wq4T9zh~2W77^sog2PX2q_3DB9 z=44{xnX;rPES7L&XWrQ>zazH3Fj$R06pTv&G4I=4-;c5Y0ws$X7YV&KJ3LcIl3)(| z#}Z#S)SNNbi6rsEPk?~rrm(aFDzVipU1P`W-yXw$*5jyB{7c{_39y%ppwy|JfnLIL z{RXA^$PYIz>klu)4Sfy#TLs_DF?qUA(0&uMTO$NSwMc8w-!tg~{!bf2-o>+)z>gmF zi){KPui?Sf?fZfG5WcVY<>STA7T+Lg$|HyQjNh9 zmYML4hhL4Qx?#Ds3+#<_$YA1G1)7=}iB}HFotd`aQle=(&~@JwxA|2R;0!$H=2Z&Y zfsyPMRt6DwAls{6$Usvu$(VN#&FQokK$E)+C}L~*{M-0(G1JMtSOq2rI0?ATKS>k= znod`qI3*T2*W>&J@59YTKAZWEAdw?Cfo?9jZgP!HUnyb=zP!)(&Z<`V;iH2K>IO_F zYdVn|*Z_z&trmJK0WB{tq3N`mBVGX^$7s`YfsVV*Z8*PQpNJ-2Q+vP^kCwv^>_9gh zUIhEX^pdsyAH_w;T#q3U?JiOr@2PxuXh@uz!Cgu;>ch-=o+q=HK7O=y3jR0OF-&U_ zGHMI9zAx^)IBp)uGH~ub%peObYB)G9;+vq=SD1DD>wzqX zr}iyEurr)uP#m}tyuYL`eg_`=g#Gj7wQR~eW|#o(S0k7FI&Uou7e4q!FE49%PdRVy zs`Qfved(T2542O2tEwyR@|EDzh z9wF=Krj9*DK=sqx6`RDfl&R`h#^XPW-YIx5i>$UIfNQ3!pW!gOKU#JWS|u!1@_uFT z!HCD^J^VT&tOT}bmP?)CWz#vEJ?AFpNDN8WT6z65Aegm zmV0RAoj;2HZX>Qgoz`O|jeV71-1NbZgZ{EOh-y)Gx0N%b?c%k0{G%%F%>~R+)M$9n z#MO9#-t;$kpS_WH2z$DZK&PjM+*09D0@4Q1sE%vns|yYOS||``bWs3WQR-(%Z#FWp zX6u#uBwDtVU?L#jPyS^Hx%cAE#O*89&1J(oI=(ZQ?5e*}AWc)nK|E!)8s*#joa6WA z#T@mIurYXgY@nMS|C-#o)L{23Ivk{WD0Y|qeyLx8v$ufpQcp1xgPZw?pSb5|RNeTs zbmarLY=CgVTO}mSMVd}Nt{3rz-*Q<%Alb~ysROtG!mU)gj5dMn`B$jKZ?{xnpR z3a|j3KkFgCT|_p84K7=i_RqKNTp-V0@FYbbo+l;*tZ^k@A7gdbQ2uEG#XesLD1M6o z@dXR=LeZ|UrJMTb{{p3U5sfNTLMVYMucKeY-hT?0zxisC-26EOe#?Hf`%8aA&!v)k zPi%~{)r~)dxv1UgPBOPl-u_K3!($ZlsYiMeHv;Kozp&~0zCpq7S3v1`6aOZcV?L^_ zV;EW2W3yQ%yzzo3BuVh%Ag4B5THCm)-II8(f)y;JB4E|16F#l73 zp(=5zsO6ws0N$VJPqjXwMSs=m`Q_8>csEl5i$dP)4dx527`1J*=A^jGT`)Za&k6$eP@%ZH7Lngb z`Z6Sp>=j=qWc>rFbW`6zP;@VrSzVJFso?R9lxq1ad>-x}E0a3&C-q&_!e{I$))x@v z%PgMc#{%3$DaZa>0rZoxCa19AZ>ljJU5vg`QDND8l`EY1`V#Tfu_26@(#@NRun0rsc%=6k%%C~Kw(C~MCHER1u1+|A z*G7@b=pL?v0*)VS{$AQ#|Gr$0uQid2YPv_UaF3-6Moe6Zod^Rb<_=r+HwwMxV?FR_ zWQKG}snd{oB7E9}Ct)dDR!jkEOC2o16363-$axI2ZWJ!V$?WZ1yOd?s&j(ZIw>=wM zC6~v)+V5$bRWUj5Nzc!6+e*Y_$%@x+i)iH6U)Jru-d{-58M8Wh^cpf57-m;kcIP|hkw0B`S}JKiGRDOLH@cx2xGh@ zD1)&6E#dEOaXc6&uT%NnPB>H(Zr9~3_9M2W1KvNs{xXKjyjHL8>10-?E*KEzS%fIv z(9&`POo_H>uEvRx;{3Ooi{o_M^*?1Bn`3B5sAtl(U`-PXBGWL)yg(v5DZ6exd7o|f z0fofXo(l+Eh4qMGwEhZkPx3V>#s4zUJ5e$l%vCPV-Xj}0bj7@TZh~ULb->X(sRwaU zhvTj)*!20PGo8Nlt3I2A_^#CzL8iv%7Ohu{{aDmsVO9)?427;yxkIE?X42n+M{SpP)SkFV&MQD z{Z$COKwE)?8{bLRCItia!-Sy(yYdstKod+Lz@PW9a=8+)9PP=iu zwgP@Pf`miqgJxF3@VKjwaP{oG^t=1aAyU7*w;?=h&Saa|_r;-}r@Hd!O^)m8bElLzN0PLnWeVe3e}Hb|%G zv5yfc)_bKs4&AXY0gnjUx11$ObsKG`91oq>8Of6qpq(rQ^L%{QtE)B^SlE!bYx+hE z8pFW#qp;@3aJXxGU&aF#dB0a5K@~q*>hJ!a7GFI?{Yp5L8jTo9>5HpPIIp)5K0wfO zpy#5)8GI2aGlJZ&)PFo2QFLbUKZF%}U7acaBZIZP8%gxed+6R?=!DtQG?RYgm{Z*^ zcOLeb(@(oA?KIeESp#kZlhGcBNFJK`)g>5wjP3Q%6-RUvX!E@hP{F>Ti?ehq_Myd1P*}i93YD{;8g8fiXV*MyTE zrtUX*o-!qdtPxe%$xl61V0Fn-Mv;@q{@e4@zDwT8$~$BQmb_F+QwstUJ)qR*^8=Fj z$*G|8ut(~|+YCCsFSZ*C<$Qt^`4JMi z5p*Rb$9S^X(9kcqfY_~EdVjfTfAB~~RgSP!!+V|>kJ4R+-(U(l#y^M_k@;Fivuw_^IIJ zsW|==a@vVH>T>UJ%;_5KcBb+^>)r76!~8#(GX4Z;A^eb@Mcm%yT+l`yNZ$>cZDLEn zshOjRfd}bS$(?hAvxhjqc5|*~0Z1tGBaRbyNmeqJJB4=x4Om|LkCGpMgZTUcz zAr>e#fw8Qd^iM+7?TUxHT6&+1;RDT3CKagZ)qPN1svA^+`F3%l(p0x$v_KQ`&OvST zWs-~yx7(GQpkE5blOL!Xe>DNHz@HDPc=wN@Y|8A-7!bXyG`8LVu9IM{0l39D_iwbD zDG^2sg|*?6(3Pj)$Hq5{*a$#& z_vqnm>Fmqo7U}Y?@;0S%y^}j{yaML$j~tX?n>O&j{Hk|ez|!E!z@$y=#Xu0}u@a#{ zMntc2CILAnP|f;ATvn?n%n3Cuuw*@H5X@?F#KHOVtQA;`LRc$KielZ`vIGC?LI&Ew z7ZEnsElB8`>I(QD4tv7|j=ISzG3#7LXT7N4voFzD`c`s+ zvDXb(cFq)OM?tp?(o72bjYe-Q|dcdmGMBDeQ^~=la=&4N0r`0#b2D&Gb@h@E% zwzxoq&+K=Pzqrj*ON)bNwFm4e_F>C`_B;0~E`+#bjJ?(^Zm3fXSZ6_Nt!KXo%L$v? z55ok*(XhMbGoJ#YU!Zm^$aD0TEB!)*U+0y3^iaUGoQfI5`{kskhP9wW%G3KK^s#-{ z62boCl$S|Cv{xP4o59Xdn1Ti!>GQ0CH;6=FNCTm(|1T#Q`=kr8PtGMpI;aU6&Z6a=m23BxtcR$Ws}!I3 z{RH02==&YZ+m^*mqr#=@I!qL6=Ze_OkJA+Ph@X0%xI*+p{m#CA;~F9koKksdcULU2 z2Vb5ys8UQd+vr-RQzIBG=@h4o{a#k@e0V)zxPhHPZsM4AhFGkV-Cs9-3r!MVEk^EX z`X0PxN=u)7rY_E5@j1C@uZlW}drB0rH&lu9fK3zjTjhTFicZ_VExoFg4+FQ+3f5EV zrE0JcWi4=(h@LX>*w4p6!vd@6W|l!W=J|L{%CU^jOi16Ks>Os3ZEDu$&(R(BY=yfe z7VXs4Drc@2J%vKw0fz>LgZAiqog$rEl>G|(HrUU=;QkaK61ZQ6-7k9pc`x2i)l?r> zghL>zbQjIGyWEZ7TlL-lELJI_n)_fm z{MH%cfK^xyIg3kAPrKC2N7BkCRqr-YgAHxooOLcaJn}uj`fUJr_*QvElHUnRJB8u0 z;;D!??JBmkI0$4(qMZPQNG5^fO^`3qu|ZA=s#)$tKX|%ffE9!fDrnsy%obZ%f-@^S z`Oo)cp^4irW!A>G*TOCCE)`9ls=E~5=$L*yfgPkdpSdurwc$OLD*7*L+wVf)PgQ2y zGjsuAh$!53h)rW>+7ygZb066sdH^F=Kx1vV@LFCFYcuYbP>V8NcVZCym9OiV+s2dbU+*$?GB$oQ~h7L}e&^vpw>DQJb` z^)f)avt9YdFpP3FRN)hFW>iX!6i34n0_=7tbi(0L0Q)4Od92E=3-I2<*6qY4QMyPw zz#@G;)G<2($Q@v<`32+NZy1xpy5&kg7JLKhA1va%7cxB52^E|=7v`IMW8N|b-rizv zb`#1SxchSYCe>HKlYiG`0th(x7_%C+9dLf)pl)ror^BACuY>rxX*yy}mOt-`xAQD; zf=n4uc=6*o1N*+)hC{g~-?h9clk@Fn1RT;85h6iz;@tQx(&)VLd&=c{B~R&8$JIRR^3K#KYQ3xX$kJn7V3#ceEu$ zQNiou0ByIS5eLao-6`i6wfoE^e~t1fmRW3mc)NQd)h?P>DHnBw=^OT)P$g#+m-otF z{CFL9KOU6$wfa+%!bis!MC0mOwddSz9^}NX?QeqX%Y$R~aq0R;UXq z5SYd4$vb32T!A1uKw9yvaWQxns>kQhbV|GutSJrjePmjW)ab_vPC|a|O>#2#dXUZJ z!K&qH%#(kaj#Kf#!C)G*pw?gSyq6~H@|&pG zk>*VTR_*Yi;u+WCtyJ@AF1MR5Yi^>?Ps0lVRn2B3RYXW9`my2;JFYSrRvSZpM? z<(ri1q2T1j6qO(;)c*X~sgLxS2J9?(zA$>^+nT^2cZuTBXp!F6_fjx?q>a!L+5Tts zl%}E+{u!sH*tteo-oB2=G*|>WgVyoL{W75>g8AT%dFfa^9PlFDiFSI0d*1>V1`tIL z$712#f2*C1)NEa6J~C!X_aV!)-XXpPHKxVtu~OKHVGOY7MhBTqJnt)HtT_lrb6377 zm$&j-LV2=6nf~WolHkWDW=Y5D4SihrE`_Y8CPR-8Vksd=_Gb^mr@Mv)@&{wj1Wp33Q~?h>B_J%wb5k?AW@8!~yZ!bYhE-UAE=d!qwa2g;j^znnU%>g~y+- zdX^n}D_DF*%FGt>s(E4}@IO2#g%@1rzle7TR|>(>hwOACuVJFb8}FJ)nD-SBcI}f& zpgJz6ju>}fUzUZ+WtB+}u-NioGChPTrms!oLw;#h=+dQX=%=N-6>_sR&2kJ1-F8 zN@4MHyz*}rc?VhkB6YpI$E5H+5Dh9;seQVIfopuv*R=KV zB)4aQ2T`kS^fEp@V^1}79{P!8#&3#o$G1Io|z-|L1IYD z$l|-IMe&2jEgO6=W%{0guH~)io#nOYX#qev#Nfg$T9hNN!L!oKB$Q7w-KeMft&ol> z%c*Q$;`*}W=X!D7v3u=>;9;|@kV)4SQ&h==l3+N*n`imKh~1Wt;J=#+y(4@}9$CM7 zIDR_vPOre8kVr!)5KA{NG1w?n8L*8(Q$KZEzwj=!G*d}XsE}h;`s5XOZAb+vDO0cF z74DO2SuOWZ@P6@>>3yo(!g=ssdB-ay#|XO57$3itFNt6jbaZ(6-^v4#V8NcMk1uEL zJ^&?W@#Iave0x8A58`X4QJ&-j7Yd0p9?%SNn-G8hXafd|B_Gb_)tB9xdVlcQJ;2U^ zZ|@J4*PRl6^pNG#%p(Fo=({*LOu3$Cx83U-FJ35-Sv0b47OL%A^y+kC=_hF7 zBuSa+${o^N6HXzcfl{cSe-}P1YmJKm1) zKiJ9$K98Wx22SWctw*m)e$}LPRZF8^SY#=4q1@v%>OhD#*-}50d>MEI{_5yLDCTt0 z9@j0&XGwggdD}9oZvnGga@k3lv1BZ;03pclV~tSWeu}=hj&-G)B+>aN(T{p&u2?Zm zDkFBH1Ae?nEz`i5CvSlxY-}uHfB^36I#D0;EUAPi0tTfw3~9-jrHXoO|0$|8(O)I~ ze6GJSVV$^~_1-eh%ar4c_#OF$3#7h6X33H9-reFPmTtXvhw0|tmcsFf?U6=#65p*~ zT9fn0YG*kEUjfs5DJFvz^%RkA`lnI~>UO#SNu&GMmfp&~=j8MaNF(IW#W%Z3hFKcO zh?(OZM6=_#tiC6O{b^#^6Nt`u59<;I9gelcsd_H@=ay#3go7>8-xyF6#xF)Lc-}Sb z@J>)37Hclu-wHBXe106fXz=ZoZrxx}kp8155h#qVj=+qW4m#TGfwR+lwijtvz?6P-f_(x-;)s9(xV=Z3p!9ZEf^!Z1nbRkQ#wku!JNfOM)1l znH*sRpXhfcLInByWyI-sB6;X2`D04?8TZpdk!#pi~(s{?uRgE?P- z3yX`YfV5iG?2|am?|aFWs1d=L4{9ujkp*ob3$2N(IHRLhvSiuQS7_R4dp{}k zx~nE7YGsnlNH8vgt0Nx~@0rY>d!l-~LhSBabpl0T~{$B>&Ej~?G z-9iV+$IEM0Cm*)Lr6j@KK3cQIR>wu#7+eAjl+i|=<2=|y1Z!>qLGsrPx z@DVGD4Qt7dz^U~=tgOA7Mv80t54n9T5$9M?_^`c?o7wj`6N+3u7B_KMJw0AtkDjqn zy^k;_kYaw!KS?Y|KXU7kdC+}u$OxRhsze)$6rJ3f9!4zFR(Oft=&>5q5VoH~GfLmD zaewgPH@SY(?KKN7)t0L(qMd*-=zRBfuHXLc>}0a6K=lP?QtY7DHSVV9-u5Nhlt*B0 zaAQ^Gm(`E)ydw9P5tn}{w)-9$dugX64=)bFvCO~4m3N5uXxsdeR28fLKG|OMh7;`xt;&C=W}isJrc95 zoEZ3bCuY$%uR#dZb@|-DME|;s*p85@;hxl-8_aphPQWo;hM)*8VD#cegqY!UK6kWQ zx82O5;u{Z!ICv*1Q)&Uv17iAk((OQBnTDGc<@^OMQpamMD0sUnWecsQ<-I?< zv!(4KEpxP={+J!QNlymqst&Q-@<+!e)hj>!oYxON5%h_vXW{y{u(Vam64xEh4;feZ zpxgK$p`d5^F9l$J_VVTmV$JWS)V@5Vh>8LK`axtqRoEznvdIgeV-FxMuOHTg0Hhg| z#;;>yL_gwgEMJjo2YTzN-lzv-@q7w1YS78(Tqn!0Mh~rG%bZzS8^3YsY}$9YyR-AWb-V`f&S&E* zrSR+wsuPN60j^OnIO13hd|8oU-mMVpLWGMt@J%&8w!j{Q41_2Fy@}pL_{Kq8MK1Q$ z3Tk-qiNwLagzz<6i%#f~%v}*5aL|r+UD&cwq3-&OzTx)<=j{imCgsrW1of+CfJ>ix z`7xTr_U`2v;x!j~ptj!bOl$L9CwGFFA~(cC8R-S$X|vBC?IGX(z1*`NOLeWC61zv5 zU)W}ohy925up!Q#-#{mL zYE$|o;rQQMBON!Y9C`afTvQwerbfFUmKa(S{!^$i-w~RV8U)+C@W3JU$+w=jFX$QO zoSYGrRf;^%`g+!ztW#Z3TCiJBjuFsQt1~+UtOP_Tv|1dFN#Q+{A1eFi$d>PFKFd8w@qYN zPOUW~c~I8BU%l{Dau7C0yKObuslGCtiAe}Ji#upHd)9cElqF?tmZMhDq&5jX8gY_fVUo( zi*Sme`hI_60p_d0&V!f!>1=PP*=n3YuU5p+Ug-0e3m)T&kndp0I@g$ED1DZ-c53!S zfqPe5X9XvN1gLN?KJY5#KeNNo&` z2@M&T^tR{Z4=%fj%a5iZV9Ms=)#9h&a7k{g3Iq4<&`LZqf>;CM178^ay1aaJ0c*=0 zeDm)__#<$SQ#&@B+UMLd)0u=kS!L8!Zva2&^DO4-}eNxK;(*^TY$@A=ft>u3K zu}d3oBR7^46Z+)XSjW{|s0*rU&u`pG^GRr$FXiJb#S2G+_^!c=}#iab@}XLCcTbI6ouiT?I3T zW^6%t1C~iR_#&}53vqh_?h>XNO<*M{oqn>6d?qs#LjR*;boCr%Ohfd6zQil>rWbe zf-#)*q7tkpPOPiZ<7ZJ_9Ruijq!5q^dhW$#09nujPi>h^4ocLgB=PQ|4_}3sR&Bod zuUZrt4#R83FujPZJEck2Op!>Zb0T~#v}tUe3BMB5#K;ZyAB?eu0`Wojw7RA;8{2~O z0dY+TczRQ9@c8}77niWIe(4XVyc&Pf z{IRja>?F2b2uAU8<>m@X3#6sBSKiEd92Ng9T~EBuFVb_IdNJ%scxgDiQf+Qx1)2NK z9Jbi`&bjK`i_S@K$reZ>7`k1s;qGJC>x(|SKi3+>C_Byga(;+@q^bSkl&Z(u?rM7U z*Dqwge3yv zMdG-P>Vo)&;0H~V#i@t_S3S;8IkZ1Y3c?kcH3-7_JPppS4jp)ZI?UKG(7>eySkG|x zgePvCZ+|{|MQ+D|dXJ)GIyW-Tf8b=YCVCXC9Oj#qo(Oc! zo4Fv{XfF?L^GG=)iPjOn@Lb6akb?%g3}id5#JTZda$8fTpS9Q3iaPkT z_=)e}pm=B{&*qZvj$EdSJZGP+^sRFgG8sqzgFb(*_qEE zQ((=V)*%0v7^mT|QZN%ya@Upl*41_uGVl-apwODL=WCAJ+XDQL_p^!6Q)N;dGuISc zZWzR#d1U_cll6-}Hs&zr^Mdg&d!ys8nH64suF`8C(xrqT zAt?^N4>o_klF z=Xqb3cXcn-W`*j>f06*XTR4svQWZj{3FhB-K61Y;LQn&%&=3uO6XJ&%S19oE)c~76 zeZ@LsicZ^rdW<5t)dgAprk3^AOM1VaW`|zbmBE9yPG^LG=2JtwW>E4Ark(9G`8&9I zg49s~(b9Gflk|%IF{@|jj)qr651ni|4T(p+msU-WVHDbV84P`VODs3By&4IO=j8!zBA$uNDIH29+qq8m5yv|t+yD!pwIzuUxE0@^e=!<{PK7&c z%3Fq6*%{NQYPj`cSz88fbwy`O8nb|!8G~(t-kI(jMV302g$)}(_o;&}()#&b|1{tp znPT^Wc@!mholRdebXzX^^T=)aWeGPHDL-x~Gu9X_v0=3loDWBz!T-6Sr#`5KDGl;+ zW!Y!P4Eb#7kXWyr4_TjEx*Ol7AfuRsEN?M%G2V246z_{BV>@fbZwfXJrnqgN(sBmB z<1sJc&uu^>R<;lVqNPaSmt>Hz{`|L`;AO1)M5EYIn1lA6F76SMr(}}Bb3%z^ z*$wDL@$o%0Sy%+^E;Pnt)vzHt;coo_eeC(v>KXq;+aAf!1nw1*pJ0G#n|mNsYH@6v zH@2l;0$Fb0BMH`#U37meNXZ&{BZK(ZOngV(kh<9Lizp41^oi3Vx?@+nsrl8`-)iLvGMIAz z≥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Ⓢ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 z≥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Ⓢ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

* ze%+WkuLkE&PL!9E$To@L5Q&Hiz_`io-|}&+h+BWTnKbVUhq1+saxZ znd7ZQ|G(1t#{vLT9{r%fY9vhQc#NiZH9eV?NhJc_@Odt74pUM*OT(@<&pS5!(wzSW zLCSgXBacWQg*{d5cYZn-6clKJ(Fqo+Vq8a#{B#b?AliNbQE|ccx5`2kqsy~ca0+>X zcqyu*|BLNYFkrF&laQ=zqF)^U%o1vJeXCci=2x*|MHkj5Gd@1v1)>ZzzhJ!g@0WDs z$0N9}^B9$1Y2buXi z9%b8Ajd#quFvB3uuK(molOx(fqViNiVt&UC9pu~@929JP^vOriR^(%VIIZp{E>eHy zD8Y6de#(cZG~*B1Nii=M{~G@P+WI$W(BP1V2M-dnX^k2;It48{=wb@Vc$nBvxVWDn zwq#8s!A*5o8~==6<$76HT$L(b?~1~Cr9AiZApUW3zDBBl`B_q)qtw?>#oN*ijMPv-CcLRdiDG`|J)DT$`%0=D&m(!!R&_Y=kM=lOrA3347Ax{-K>eV4EGwSNbjD#xo*muB;yE#dzgv>6Wus!>ay2A z7H{g5DdDZ4HvH6yllh%GchdJ1Uh{8V*z|=~8rlDKhmGXFVOk8BcH&&#E0uEp$@zB; zR9nL|mHYi&A7qaO^Q+`;m7;#V`hN2lED#2_fv}PM-S^*V1_D;WZvQJ;|FExvwgeKA zw`YxmsXgRkzu25U1_mAnd?b*X|F_+LT5Z89Ue@}9_<}gS{;E&G zlhnUj9oR_z_Sbvh{}=vv7Sl93=M&zxV>2;~OB(-3f8!jXX?6@_96GB(gm_EZ8OIBs zIuE9$V?OkA=E;0?dWP{`I}Jm_XTBOf{j}3*7*1F^PlofIY3MX;KKZ9#?j@aKmQoVnV&Nb{hjIYX_uAp7_Q+vJAlqZ zcNU$F{>)E5HGG|yE~AF2^Wl?!bV2yLuG-C2R{ab@vNfo6e1==&7AG}KSho*-GOT*1 z?m_g-gDsdmTwn*smUU5zi>gsMzoqvVO+EAbuI<9jc|Q0J9(_FYhAusW3$n8cS9Wdbbr@iwK;ZKuF_G{sLb7z` z+lD?KQoU1;;DX$o!j)Zc_|OiCq@cj}Z9|_3tqwcO`B|BTtGcxY5!N&#VgI

$nI3 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

&V(?D~S5BU$G4AE!cDmWcEGC8H?> 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

%me?uSs{=hv92;U&SDRjA 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%0D80VAH zfy^K1A=l07xoSEU38gyOa&Vvc%XU{q5pTLz@S<(Y^m7LA0GftNpK63o5WDU)s4_N< zruZ}FZQ+X69DW%LMxvTyp;e6g;ssGY2RZGTeNj#zRFtLa)$(tHhaSwqtvcF=4iJ?b z8Wb^i*s>sDy`OLAgbVGBOMEdqAGQD^xWD?4V8YK=x=aVr@UP|2NpglPV=K&n;Zj5n z^fpyo_C`HB5}2LnH8=3{@NO1qzfQ&>NjKi$C~7UqI5U|nKQl?5o(Riwi`djXJf?Va z>Kj{w;_2mCRnXaV$n2!})T@>ne`$)Mj1(#LXX|~^%bjOj{sh7x2;^y>=C0h@P4!FT zvV28?%GS3e+xhF*NmzWBCSMR6ch_K%_GinxS6GV|XU6`EU(QZ#X}gE2hs3L%CHrvc zhrM38;pCNm?#{Lug^BV5)5Gnblhm_xY#%Z44vlXlT8jn8I$E+2I)TGfWegMQwJ>Jq z&BGuDKAA^$RyH&FoN$kLwnI{+zJZi&q7vkOvo%EzbEn~>waL_SPz^}D#|ydmx3WN4 z9TZ5D#PD>V(lelHfeSWhVY4<1cp6FGry5c8)t9Mt`cE9l*#810bRMdu6GKkTm49rT zm|qapMr2%iKF)cNBGyWF9^D?xEJD!D;lt!B&$1o$y=z+a%N9Ah_SsY3{+i-Pa}Rm@ zhYEr;8Yg@aN%sRUA8=D1FK@@@ue@@sNu|U_eL$-iF9j(cbuR_lRtJ3 z|IFIIqzUTTXk0_)cx~YDxEaQ_si~GJxd!nz?X|>Zcs6n}{xlMbw)oorR^r4ETzh~; z^zHe8cia~5V1tGEn(&!#N`Ia)^zu{u!liUK_HkIW^x;i(1(RPK9*$xILZNI7dpZZa zvQj&V)~i5<)vJ*=3~Qmq4h(ii9pl5%tykBz9wh`xsP+2t2Ltadh_>0iC=ge!o}q)} zE9R;@0NAIKx1jLBHwsS|YnuZskFPOMd(dJs6^L4YuM*A0^7{%rqr(kdyrbM2q%0An<&e4b3XF8@&ZSEu$7f;vMDte+s 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%0A5Z_C;z(=5N)RXJ53Lz2fTv2>`!x5Qr25@APQM|- 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 z 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

! zN%Big0Ks_x$(Sc&y?8(0SDB$uD~(ITYku0;WD{(goD?1^x1` zh}uv=>Js6mLe40Mr+>R0Wg;9kS67Uf*%-|NhzGr;zgw~M!ftC6rH*bMLkrwQcv&Lk z8vrE_ubTE(`TcGuCCu8svwxh4iLJJ?RSYTp%kdT}2Zb?xky6eS%b61vY_abU7qVNP zd0e+yE6Z$A;TOopcS2~@&)684**)xaXnfzMRZ+7i*5ryE^%gAeY4Rgx&ezr@K#d@qM2T8{d*MS(=1v(0htX-bJr;_c_k@JoMB z&YCE%603BQ?+ZFx=Izzl;rn~y8@)LeO3;%Ig3+gqtUEN0*Wm2?ig z@PY5IPtBz^>#4h9+rJXfoqQ3B)4}wVuWaKrmRkbn|)g1ea>*gJ4b~ar1Ss&@EFyu_e=d1v0>a7pg!nWZ`xMn-( zj~NRw@{ypJ2h-R|C)y2Za5cbDL&acs7DDimW<~3Tt;Yf46~Dr>fWp6h6~eA9;Ik>F zN2n{?mJ{!KQWYh=Cu53}SOK^>DHQzl>FW4as;Hr_vkJeZAsXli82gF(jYDF%!89oI z8XOdh>B^xli3X@2!!jY{+Qew{U7*`xwl8>8x-z&~F~&z0I+V_kUwk!-Wj&Y0jQ}#! z^gFJ9p$??{)j{G+$CAz}lAvWJQEfrz5ivb>l7}REDCebVTD4+(#l*51J7LFWp8Y#q z1QdH)Y#zUVq3lY1c%V8*8>28(W09GB)OHjtYRk034+zSPz1&u0^xZA}d<+lSeq91K zk|@RCvO3#t_&v3={_$f^VK#s?ttYQ@49B$YVRS^DyY>;{lj-Qu;G|=sB}IExMDadd zOxElIftobPK%3W{UPSo_J+}qi+`c7szHTW2a`((Fcb9qqjhY%am=Wctan70thu*+` z*?E6QSW6S@J}+|w{*EB!>)HjMU!B%dVt#a z_FuD-37-O@mVX5N<|T>asDOrW9TPv;-mKOrZ37g+F(~xEjk5US{yxk!Na>- z^p2QvCNLipB(g;7$2XdyPtMSmBg�Jc#|IaK;#4&wKX=ZmEI9^b;%PGnM#398?5S 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

;mvHaIf5)o^GeU%A&K)&*L-i7z zWO|GCN6|a$w9idqjUDoI(WC!K2#rGiV2wo!-i6!jou(n$Yy6>-o{kj!^89z%ZxAGN zm+)R1=fmG!(H6B(dW1bt9$OzQ#{F>;UK~$dQTQ@QAqqASrxVXOwE@i<=SzprD$lkM zc0aZdb`*6fy#M0d73(`@>@>XO@<$c02T<`h>Hn-73s^T6FuqFxS?k6=@&B#YeSMGA1uQg^Tfe;%|3PJg+G$v z5(*5sM|K`kq7laHY`?Flb=#`@uu^Ka@%pgwQ}@H}|DX@i=}(Ob{^E$~|G$9W%OCJ0 zbWmZf@O*$VMRo@JW0-s?d{%Sk;$N+AU@mKG9BB58G`@M}6&{tBafJlQ+`zT9j1!Xc z(0<0h;*nSuU$fef$Ui~Z}^$$^4BV-ypomaTz`7*uQ^Q!iG4Yh)pH$nPpRj* zo-29$KA(>MPtS!IFZ*gPe=XrEbH^?sN`V@zRs0j z$>Z0#@OXN{IQ48mNfmoLk|$D?(z&l(f0Y+bpGO4yb5ERyp?tnU{5=m-*PdxQ@A+IX zJ#3#>*Wsi*Jq5@fmh$Ob_&lDTFmFn8JAXK`fG=-OWPJ z>ghjJxCrYYws8C48O5|dCP@Z zZ_~PA`U{6S*B#oVO;{uc?SIavfx+Hf!(%|EZ$@ zMTpy$d%}mt6?KcB7d*qe=bPIBFFuOR&fgK+j!QP0aTTsfP5{Pb=@&n+CqjFCAur^ua z=7JHoMJ5zA{(<9$2Trd_!v=EE&)3(leL(NG>wo>xpQIH*0_}^yq_FbXQrq0}+}}a` zM<#{Yx?aj+WrY(maph`U$cEUQ|2&4+pe0$lrT#AiKolw3w4o(lEd8UElUpAKC@U97 zlePc_3yWVXdgSAiN5l8x}6dRf3ckQnFDXVM$%)E3Hp!2@hzpi#S^5T&jAHcONGM!g`x~^``gYx{~ zu!ZS&WEn5?V`u;#m*pic({XK;1}9Zd%VTfDUM!iO`MQgdlqlf<83@Bq8M7?DaZG{S z$hz2lhlgLT8mHYDSTf(V5CJqb3KF%jE-`_)U*;Z;8vp6?XLnC|=cs%vSqjv6a@YUB zhZpY;EYh;+dGwRuzs7`X z?mPM4&eK_`yk;K(&v6@ z5^>8VaE(SD`}C3;#(x%-N&EwS|7OaP`>d*5SP?}S!Rv>YTL9~gs$Nq^e^KnxB>(Lt zNRA8CG#;JtucPyE?~j#rcYNNp3-{t-1=2kSj5gKO-|&1;S$jDC;-hj;`jCs=y6iSw zc-^)cPYagKWdMKC(46#>J~qCX@x@$PIUrHmeSh0fjW0l=-5FnS|7?}?=p24LlN3(G z;|F8DDFRTP1b&x8ME0KlU?HA{tKrPCXIEvzr@SbyEE_S5yG#@tY%CBU4^4CnEZ>v`(xVG)+}+-L{O^bVEYPb^GDxE{N0$F#bHkbk zwzYJ$#OW`w^toT0toZ6Srap#Z*Pi9I%rK4NR>8ud_8t{iPIlw28ME;Och_y+J>s%I zp!j5pGtub8i-+dSV!p&Y70XP%?;2bZv_>MbibWfqxiGHA%-RMEVX_SL`-g`U6s-7e zsV5`Fje5M8_lS79Qfv&>DYgB{=WnQp&nMtM_1XUJp|JJ-{)g!g zfEwJJ9znoQk>~#V^#ds0+2&(k_|N*LTJ_+M|3M1l&mdOh_4myktmg}e`6p`| zvb}Be1J}@<|AQH26%&gsWDqV-wZWnaS*3MgOf@eL-5v3Rw_f}V7MYIzbH6>UbnuKa zVvbqtOgxb!`Jd0!=gL32&G>mYEW}bx7ODxL@o@+kWU1DG3;PA{UYJm33e!(^>Jd~! zg9hZN z`~dZEfpGZrt30XS{&&npSmAwmY>`;9{MIdv%v){E<)}7B8T}r=;to&4tBc&*O4&eh z|3Vew)YbF6?@lYzJYv^!ENwrt41tX6e+ZI`#-2AM7q_zQ2$K2MC;Oju?H=uKm3Kgo zi2iBUjmV#N12K}Z#JdNpX^;PK`9J=mVJ=2Dt4&3euw&{rrS-T==5#<>o%SR@AnmsN1%Ma76$;D*m_J&NKv?gj?`~Lfz4z$CWAQwJ7akkuX>@x}&iVF~(jn8! zvgIxvFE35u{;zTVia*GDmwlA$8Rz$5Mr;|Z`&xW@g)j)ldEOlZdf4xuEbU827xB`cvPHhMgv8RevS99+{DwhG)0Awia}rCtCF_5Nh|<1$4Q4N&185 z(Zb<*_MO(yt?zUjf+IZ(5=f$vG3Qj}obrhY#Tw^tNsja2NRGdAK6XseI6`pAYag-S zrFdxgr7(093PWq~n)3>CNvlo(TwcDey8YxzRra2LeR*%=u7n^t$kG4!>*){k-xV^h zA2$6kQ~b0-i32w*oS())6qkvIU45wcf1v9>kopGcg+E|`@!zeP#qDV1y#Hn%GL`Q` zpgip9_x#_ps-EvdlK+lA10O=i{#{{4+7-;tVua1x_~f3}7rvX=Ckjy8p%;E@bN?vR z{-OJkv%kS!ByzAtu96~ib{Y^ZR5WcpMy_qYpgxCIGFkUk^k4CZxhH=r) zX9wdob8I{Y>{?pWj#6fu!Yg5DkkbD>{bBr^i(ucV`~iZ2Xsbc+_7t!*8T9plIOMKx;)!lCWTVcUGG#l#^m@y z&OZ5%i)ynh*8C4I2?&JS17|P>+vDlQf9i%Mvzv$CarJY1+Ht*4=3ebT(Dk3@HVVfm z&o{SRNcarf7^HJqbI0RmeGRRurOlb~?$8&0V-r99(eIxtix5`19m;xzJv_qHZB)4gI)xLm?--Rc&l(CNl;l$ged_p2c-9Im zlCLMjcK+A{v?Kv2kPNZbY)XPBHUw}JN8M9i{VD0W%KMFH-Pb*z{I%{WkH7ZMb@cfK zTlhU*f9#n@*B-xz=VAA}_GNY7%P56Uuzm8d1Vgka>7J)ad39e$|EK3V*HQ4i?2uEt zr)NHe;p^OA`{ze=33ycf8J;VZAd*14~jVEb#2+vnv`q7MFC`GsFe`FvU37k<&N=N^`a@AL8~ zQO47uqpy$3dHf!R%J}<&SHRyeERt^xERuCk&s_@EDgKh9J;${~so(Ix1zWu=d@lX< ztP0{bMjMD}`M~=Y@9%2YrlG;IG6G5*CTZrPCC&!I%?pWjY%29he91O-C_M@d%rto0dEfhAp&i^})YFeO zTZXiw-8Hdt*vvNI{PICIxNcJ<5?OiY=7yDbY_&mo#!YN~UprFnbl7Zo+1zkZ&XuJo zn>&1z(bOUZ7Ri2qiW9@FZ0K<%S*z~ZA=i%~SDM7ZAujQiEP(Vakp)8#+b2>!mU{kl zCiQeRr9Y{L`aZh#6X&`TzLji-W4Y=D49XW(JnLES8Cy7P4zbS2YOJIv0;+>6v3g&1 zr){9Cc#pP=L^E)`cfB^c=qmTVYtcR|Cj3W8_&h89u@{V+y@ic)Z7qvr&2=2Jg8qkV z&irGq8Bx&8Ci~sjS>F>J4{R=XqpxteJ-x8<+A9LiP$$h>jOVEIrD3{bY_FD ziMTWmevlpbM$^hmseAdjg4l&Wo>i`jiT~Z2N2u`v)`Z)C)t@#K2Sx1|sN>y2q^^41j zL{@nMQo9i?3*0bXgP=s2p8pQ9;-A@V{VqToWwBj^TSi=8LzHT058TPVHN=nl=n@J0 zxZ&s@==(?e5o-_61dz#p#uqu*Iq3SI(1q|XzhiSF@1ec7F6NasYy@g0H*VZNwK0N%>u4QACOfuk;a5_I9{okP9m8~H zS)3r5xU2=cP~ds&GfNXz06qC{?>nxHJ^!^B_x$hK{*3dAd!+ti^~3{4Ij*KMH$J(y zh0O+8XejY48XY{nIP<)3PcPRhk2qaTOK~}@LOt;x>HBx`Cnl8OMmI+!t6N${g0p}x zNkP8ji)Hcs50|TvtNzHKiWhNxzBw8{WGk;!(nvG3e@$P8c1ovb|(J2VM5H1T=k`ycyCvLaf6tc}X zZYS__?nzSiUhPlT_!vBcobqY8^d!dhUBn6fJ#j*Nynnu|YE1mH;-hAk=)Rxt zLpzq#6itDxara8bU7>v93(nHe!%#&?DfGK*V+fuLW|zymhODGt{GNo=BFDiWJiR1# z?suk}hmckC@SO5HTvYeL|D0mR>oL4XB*olRh=uFsqjUzW;5}m8jYenOJSq=mfkI;J zb+H-cH*WRF+SIviblUKtIIr=6e*e@LF8qm$xvfo(t`2-o!n>#`$fSbL*7-j@3PA-~{Qy5NU1N-K!rz1Dja=|TVLpF5UNFT@<%+T4jJ z0?kDXA-R;C!jPLQln7)kysF0o>c36u#KaOuctQ1^HQ*VcI_ePmow!;UsDNKVwp z(;rk%2hX2)!I0dH88?l}w^*5`cWPC!tm=RI{!TlXV*mg^07*naR4+hT7}xu@R!cC8 z_Rq*l3oN|J^Bx5A&b4(IzQO4azqz)yO)+9;vH_^L?XH0RavqHmvM7&`6MFxMart7O z>pxj_;U-jTnr^K466?RSzKZ)x`q|nCx1+FN{mg?WEJRkuRfJSfvn@ctp!FaRlRWzi z+8;QczYbrI_76Sx`8?gd@L%{-)`mwHX6;@@++xCAg!vzC|Fl>%4VV8F*+ts4-`)Je z_twyVf)v6(^5j9;bD4)|9dQ4L7FT2SEoW*?WS(G!k;4)pxpI7{Tc7^6O^R9b&4|6uvjX$^kRTvNpK_YJ% zdO$vTDOx>$YolL(b6Y8err=uld(iOL;r~DJzdigv|9dmaogmpfP9@*BpnXsOtj76@ zoce8z7(rNUNwqN+$#QLtMRHOhU;ROe*petK{J{xD?!JB@o+ncF$fCHm&M`squGTJ; zp@MhEiudR{p}xfXSIEZx^czPP@c!qZG;ItBP?Axf$HezmoPqCGGnAwU*UB z%0euXCEV`+`{&9g@jHbt(InT_$?zYcd~xcQKkd3vh1y5aI3LE(xxG%Tu?nVNJEEYe zx&y&09;1Tq-&tRCuC0kB+WgAT)~g*vj`4%|_8R_kmgG10Q^Kzl>XSpTGD? zd>_W2SCxx_5up$GK7{5UK^_j4Y_+fN?@-)Nx74<2FS!O!TDI9rjxb)|4k~!q{C6HC zG>5eDT5TSE=UsCu_5FMHTa4GwSGP-P^zz@i&?ob-gb#&JGt2*(?_<0^k@tb!byuM% zUWz&n5^9WnNbN`cb=$uOAC8FrBYFSe>S4FPDiI`D^4F!mr~CoDiT2OPOOIUss}n17 z2gTBN6Eg6z&p8iuiOv!lfABh(ahci~GMzGSikDGA?L~j_h`h{8*<;s3i;?Usixc>% zOP}=P+B)3?$*|^*tFUBlAV|HkhU%`e16}_SOFVzdHOyse+Pm()R&%4&`43*0kkLrd z2>irIZmV~S%RTX@T=zkL@Z7q6Px%ASloIq?2+h+gb85FVbv^L@SN1t-qj815I!c0M zLNs8k7AQHovV6xf6p}_)ci;FT@_?jp-@&%FHvGZ0vPQ>G!?pGD4L5MUg})a5l$0<0 zr*Xtz>)dw>-IJ_LW0vkqj;3?n^J9<3f1h8+@O>@~u8zvrGkKihqsj}u?kVY9YbB3g z=U$#Cd>+5fm3%qn_w~|!UoV~eygFA3Kl6BedEplhU2A{C0B^$?vu)T z{Cci){rS465yJ4ev}Y>k>#w{Xrpo&KIuDokFn!)I44r%YoF?F@yx@2`^i1cztS={+ zXpTpY!Y#n9xCQVFX>Nr(3KKs^F6HbzN^D*>Jc_d964PtWD;CKK#3Iqy^M;$4X=7Ko zR2MrU5RRRXKv;S1G52#}EyhG%vM0_BCoz&UDMwraCUwN1Y{c>l5Q6D5g2PbwFIaT) z)x@)S_tAw1nc3WN1mZ7>*CqcIgfXyUlG##L(ug5>q}>mJ_G+!H@_=9X0@ zM2b#5SvvOSKX>f|Cl}m`+l(u`rk4?T11st+UBz@PH<}my)VpSLTlKlPJH7fg=j!h9 zFRVcDk`RCy0fxN~{1Yx8o;Uk_V~b?za{HCf%fd$aeMRF4KJBBds`Z@oV=+-Ci;36o z+1f1Y;Uv+~XaO-1t|TUcV9mRp4+lae=*@q*GBiOlAaKbfiwUdK;o|qM z8ehP*^+xB~+N#Nq2vD8l6E7Q0#1R#n_-0+f5euVp>|2Q!I%U1%~=Pz5Lv?5kdr+WrV=(+lV?(YV>J3n3jwQwI7=T}LhI}r^p81bNX{uA$C{X0-1os(_tkD{)PhCHmkFN-RqjpyoR7NA`&Pb}ci{pm zD4wK0!M{}ew0rDq#tG&B^GBC3zJy~*IYz54a&0{c*Ven2q6qL=;$9kpRQ`u5N(HU@ zz3^lCSd1FWO{fW zKl6Yz<^w1nF}E^rFA0SE?E z4Z3fALp$+cJ1ky1YCtHhl?Y!?fxa=5`^21%Tn9hJLMLEw7T!E^Z0W)Op7^~*xiZf~ zz|exSa8LeExQzFY`86Ic6lYZP>t5fVSsxl-H0hF|d9_=bJ5ah!tp8+@EK9XF9@yTz z_-AqdjkegwI^ZeR0S=Xi)0_X4R+*kOt15lcZy`h^NUpZnpqelFjEBvCgc?{U zR^>MDN5SAaDGwYzez1YZzWa&!7vYIY_@-vBxz8+;@sbdU%fcn3Rt(~cbn>0%`@dWK=;NUFzT@B7hct| zC;lWWIZLorSq*1!@1OX4w*Nr*pHLWjcsGU$2}ME!#d|ykgr_LN zwN1yfTL~NR+Zz{SksNBMcz#u`xwh8#A4@KU2-EyLs9q$B!cfi}JWtdy&fiD4uES}6 z#`la1et3LoetAp^%aQ%8g?3|sS&t!ymP#7u)gw@@3KVKm*S`v3aGfb&5$}@kW)liS zfeWWq1VE1f9}X>myPQ{Vpp5%=xPztAc8 z1&_a8-yd#s|H#LmX?U_ifL_>$bG`YvwpOJ)iU8nS;(x34pX%%CZ8UQ#8v3XI{QsHB zo++Dc6q5^btrp2mTglT9?t|nwicTZLo|^Ry9jwQ~3eN$2+KP3+1l9raEalb#&CKIe zl|$n{T>6P=k1<1O_8T@{Z$O9@k6$y7%|XWBXTGuOz?K(K{J|pma=ZZw?_JltyoY@N z?a!ysPpGZ5;TWlmI;A3~YI-Sj)0X5|^7}X0S2X4LfPbEkZ(sX^C-MCW8v2Oa-#9wJ z{`dFB-gGb(ckYr!{OYh$%cZ~o))Ama)%eo7eYXrEUpV5^R){U3pF zCb5nYB;(rp>KFF5*QZ+cQa~?ssJv@`ESb|U|24{Fl)LNd=dom#OYGk7|3KG&6E0-Nw5&JL92YDu7k#oO2mGw#)p)N5j`?V?XBya`_QMUhk_YE)d9qZsbrc#NvNE!cw zipIwgBYFL@4cC!x7k?5?YXYS;VDRo55CJk^992}$^rw8<1JpOuAN5>+{yVCCN;-Nt z9)|jj@ad@X{#s>~SNS|%fAseR&*SywbuD=M^XDEvx2z62hGBU8lK*-9ItrhjDTQ&X ztdjBww({s0uD^%r@$lG^hok2@*I&;(mhnh_e1(prOwYWYP~G>H^m+WX&(jytBHk0C z{9yupxiGOlug|CQKKXpQ_W6XHBm7e4wtI(is7hR;2I zLOak26f0=Y=nyPq|^^ryYI!y5(|hZ37#(l1V@VK$-~Ixdg416LHP+ z2)^-g!KU0ii~kF;N_@=TM?bv`7uU6VK~>y};-Wee>nW_&m{=kZZgSe{L2>2l8^2;! zToA;pxaX!tvSfxvO;f0nr!s^`0EZDL^(^9~>hTNzwFZHnS?GCO5j3%*XbxA%dUx{+ zd)ip^vG8^H6{}2>BE=9~MC=qp!J`YlKixKZWG3_2C!p_j=<5f+U|qZ5WQ+NURdd}s zERuzsBwqOBO9!m&oBkkEg8vjIe>9FOJl75gslgEl?zxZaBy-cq#O+b6C~?K@+d+7v zn%rmNzFC$j%W-S!;Puac;U7MyBJ0dA5qFka+{wm7YYhW@i2tRy6}i}AM@aA~Hz5*y zTFuQOc?dBP-h6Bq@hU?a?_}^X+_W$6ERvn;JyrC&`w+zEWJYoC+bH*|0h9E|=nv!P zo{)vJaPIK?`)G!zpY@d~Wtu=7U{UeF2Nz3uLMbTc`0p)HG$SB}8=ACE8#N4^BK`J1 zXOWDB&3~=Nwe?=Ld#I?LM~EkxMLfw;v2Y&liQK|3+5WOpy+kn-xg}R5nt+FZaN0k9 zqbT_<_27%c@A5bXCF_^OA3Tp-jFnR<)=nb9UN-8>e_@X}8B;K;;Cep`ga<$Jnk;2V z30Uz7D4EPg$s~?a2QijweSAhTscuREX|BxmLH}HV`?+PeY*GwwC86~Nj+p+7ekx0Z zf*6VuZCDU{3%)+_8@Ax*j4wKlz;g~oC|8`$d}-P!W;4-zpO z1DHwr0TrscoqH6$@SpkB$tA;QS75cR_(xc(GtwOn{cL^~V?~pL245F(llEz$ACy$_ z!^WS$MxlYef3)A=jGT<njt~g@dIO`mekH^ud|gY0;IpZ^iAPS&fG) z-f#OOh^)xR71_GScGC`PY=a$=q1nI>n10nT#JGO(TkJlx_Jf#JTDYj>TjIBkQEdp| z70bm|PLy#V_{~OH;~jV6N|P|ItM1&~Nc_`ayms$DLe2Ecahs_3@nu|luluwA&Lm*< zNxzE&S)PsJ4%R&{slSjfQ6_=^aOe**r{J0S-m!(pUO7xLk`sdDAfG_`q%si%gM%}& zGNLQ*z}@5@UAy}Xhr&PY`jPq5aq)&br^x)97VhDl5j=xwfVG-00&r*T3_< z@KYv06O9h^{R{Ahs+-_t3STby`K&=$v}W#Ed4PCf=HWo3Ch&*fzt97nru4tLj7uX< zWn4nw%I282PJB!JXMGhR$q9q9adFG|valL|0skL+-vMA(QT6}&+umD9Pd3>Q2#`iX z6;PUVqzWkZu7CUI=O;Ek8#bEgXBU(Xq9~#?LqbAJB_WmcWP9&#ci;c_J2U6Ld7Dk! zgb?sf^7hW1IdjgLGxg4yIpgr>@l5lIxj0dt0~60Z|KR=agXn|h-Hv}`R_oFQx6Uet zb%WTpm!U}hs^B4y>ZGi=$TtU@^k}=_N!+bw@4XioCqrKT(cUZ2?}pYqzJu+Z^By`U zAAI%l;)Ubn3hK*vY%YWn2=h<7*lK{Wy9O2=M#QqhL0(6}v0EbWN0{7A{vl5}y+~ZP z-xcsNIOO;CubcVj1Gux0{W@_JN{u_hyGLB5wBqo zR=oTh@`k?k+pO(>{R6N2RQ{l|SNhk(v^DQ%fGKlWM%YOOxaZvRKa&c+<4ZGE!V<#^ zx5E^rGylvkjt4LQ(@A#WmnVpLQgrD2dzyxC8oDQ6y`@1dL*IQa*cug?FrNU5!)OntxtxKvQvRG5+Cx z@3ircCz3Dw?Fr@l=DPp71=XmhA{3j!2I!R+Pt8SWyXZTELhFI66L@boY)<#&?hFCwx-1&bHW>^7)FHx;rz#jdf>!dz#!C=P0y=KL60+d$ovHglt|2h0Qltc;A1z zVPO?ap1$z2wdVT|`C}n*!vanub0do=N7~G{0nthR?Gq0#FN4AlP5Z<6P&f|r*2ax( zy^nnKMNdgi#_&^z`{s`?DVmTIgJlbxTxS1lrEMX!{c-*bt1-B~YWMShQ$Vwsnq!DhjDuS=TuDSiDW2}Z(QEA30HCD5{(bssvUIBm{4A2e^)e9T0zB83tR*?;z(o)n z&_-edOjSOsmt2|j$Tn__6+BpghiU7Qj5Ytncg~N|&pY*>8-{SVq-?y$h9S&1c#3UEmEK!EE&Nm*0IN zuB5?Q-urO411FuqWLo|s*nq_i`Rpqn{NVGjJkg;rCP#azf3(^{g&yhij^rM114gR- z@p>L?D8)JoXo!hz;e)Jr^5+TgvT22}Eeqy_w&3B`&VX-V7a1Ym@aDn0d z&|;GRV155xc+0HfqN+R@AC$6L84^jM^E9lnoa)!MVV!7~F)29(*ErEUZxXfSsc$c9 z+`6ct$H|bFf0NJQ$zS?w-jV!gY!bVJWgZAz&5b|iL^3!2(1L`yiU7P)5lO3G0NX8n zUR`h|PEqG#<3rQN4ve?77Nb(wwf&Q(bu1e?n@ul`2~9=teYf;2@St+`a19DK7+d>lg z^9mQ7NS5`MyRU@eK=zFbxJTb4PM1G7=EH)Tro)L~Ic0BAr^|mh-+wqEA3Nh4(_};Q zQ2jsee82eThCZ$dz!V3jnkv zM;C+zr6O8TTL1V?>I2foznltODS!>L>|SB{w5AglP+j?3KiEod|IlHTL5KAo;NOHF zzem_+`OVEN(9a*;;HQ>>#_`?#DIV3CsbZJ7sZY~)rK90WlQ8O67z9Ze-${#4I+v~q zNu^c##HDzMoAel`VT@Or#7Dp4h1a9!!VyLtVO^(bT|COS(&3X~o89 zh*Npc!sa{u8V;}c`A+&;AvDj#g*)y%`tS-rq^0>}n9?R5reS*em5v*xex}L7Z!An( z|G}EJ#;ekDNqA!z0|QjFmL7!#57|)(MKWg$;2|IPZTYVuhlGEe+Gc2wf!Ute3=u|=gkpGiEKeb@endWXZ z-Z#Adah!ew7QIizq6SW({^b+$@$O{^CbM&)h{+}3{nx>?wYT6J1fSE3%Wx-Q z0+s|H`rz}`xNFh!CL&P(kmb)vD?wL~0XeDu{>r?*uEfBdm!zEp_VOQrGV9t$U~Um> z>`#8{m4+?P)v|6VN+E9F>EDI^`~Gn{7Sck&XQ8~niDYk)O%pOL?~;4h?{I<$Ep!%{yY;eyb%z9h`fdnaCqc=U;-nWx_{t$?YX`{|mN zwNSbuc#rhWMu@_AKX%tW@WB_bX~9zv5v96)&Oaw{7v4InER1_}hu)NsR<>ULGjhYB zOJQauhI@Z;S5L>YH?5LQGnRoQ>UAM38f3y&WD;h->tULjCzU9nH0=!Fi8GCNzIcRe zJnlG;o%P-6MO1>l^s5amuiVd_tpcgwX*et&!HVMwqd4_n62d8l7hyVnB~1A$LBr0z z(YN?KwuamO&inBUnA}JCb@vTC05fXXq3rfABr|0Bzw<}t?l9avH1OaDq});G_MZRK zzk&Ycgpy1uqW05d7n6%z;G`MNeJXz_l5?ixgbfx( z<<7ss@>lwA|K_w}d>F-H(o}ZTC(U^lDW@4&P&nqgak;o^A&CtfD#8i2WXo^H^*dF8M4@noEe)Uv777wLu=|7PG?fnzQole1$n%u9Vm?nqYrOz$Ct z9}89A{infX zDv$)9y9M*4zwfXc?i50v?n~ed%qPa2RGf)RfYI;1P!H2t+$cwwJ?0;$4nj0b%lnmI zeRM0Vwa7w};4YK;G7~1&1A!${Up84q?5^~M4k%R|3v<}tIj$rKlaDX`azpDYu(-nX zNRiBf$^FY=Qke6l<@aoAUHrQZY4wly`c1@qiP-Pq#=Az(Jg?mdxc}qdJAViZHAm;i z`f$(q1MkPNYP0Yv82}kR)p_zqz~FdWu5Pdgo`%CB+im$<3@)M}>0kdi?oq@<$0(9% z*@MnaX6T!fqP)9SOi{`rpa7!(p@Q#9v1}kGlHG-07m;AbcS`8eU(LaZWM0FPW-^oU zyW~HD^MS@hXCUz8HsqKszZ%mxs|2ZB2OakCpYm4L3-{%Mw!3(pL}{2C@tL_$w}b9v*I=e&N9(R-zDHUb=9#?M0;FJC7G*X{&LaJ)_LE50Od(FF?mWhAAH~Q zP@rIw=|L)g%iLb`pAHA=gXm{qe7NK{*h!63Q|q398ULGBrp5=8SPHcKn1a~3H_a#^ z!Kc5Kwjlr^ZjmR0_znogb8z83!zGGUjA|C#*$K0Xu*{GNrDtN^4_CD$VDX=)A~^4%|8{%V)>=UDv|{o(htf%5PJ2WOae^ka8ur;znxne&xwWB zKZ$YkCU4wSK8SI*^bto~>I6;{6FAkl>d)A8fDIl@4a*i~vAlTr8Qi(K35S+&vN8nA z9HNxE2X`dnJ62^wTpoWGvEZF{#klNQ@1Ky5Z}fpbUh;3TXklS3nDUAA`!)8AkDWBsfMie$0qXV+~+{v*&HX+EAO{LvpL{`{eZb(rH& z)ba=4(S^L~Mm7(A+}Q+y@}Gfz9^VtWESCFWp@!E-Ng`X2IFX!n5-m^QnlARsHjd?} zUOwr(@_+l+jxHE|a#>b84sKxGO|7QUdQ0H6|2`^z>?!40TqAkl1328VLpB3RY9NyK zXRinwK?+ZOV_D-CGj0kEC5jjI@=52>H>PK;X=`&wver2d4hrq?yZ(4W89teVdc_+M zdF`KO?0IDpLzdi$tFW-SnKVcY%G9FKyeh-7aH90hd;(V{p@)Maxeki*)Etx4JwCzz zA#Q)z5D5!d<6z>Sn}A`)c0cLw@An_psJMp{IPkbqi_CCR>5>h-#~kfSn?nq;!MICL*^O(b95m`lm$1hZd&^o5B^BAV6?zk zSUkjOUDz-AFCSH=FkFWZ)YO;r%UGT^f=$Oev^4GL!{4l`@|zv|5L#p_-^Izr3WSedG+7C zrr{SFO4O!%Q_xs+h{Tmj`X70LV1{>(|{6XZIbdoG_}-P78u3Q`ZZp&J<1_n%z( zgsTlWAzO|EVlSr-UI~6$otbp@5n0@n!_Bk2Z+?i3l7%6HhpvCrlMJPQ7;$Vt^tAt( zR>b*d^A>D``^fX$uueY2ogv>3q7O*mniO{vd;sHE4zHV`{O`YJel;w|*mY;&%fkUg zmQMge{xEG_Ved%ZggAafO1>?eyLL{$I+nM>x#0}snk9eKr4df+hVsBT^1z>qN7p(P z4$-39<2!#Y9i~+{mq&&vO;;C4_`&Z8@?_)kqVyO~p4f-eDSzh8{8hdbM*4e1kq7EO zHSbEFsTihC^TFq^oeE;u2y8+!Pexp3R2Ukrh01V-@yReP1eceg(kKnLFcg=DX*$C4 zr}6O0yVB*8@l2J0eDs%dK=;K5KzRz48HgvQ)=W_Qeqcl&h+ai zwqT95Z(v!))uPU#x4}i3Nb5u{e!E8<>;H1kU*O!P1#w!_Y6Q z%8$aFMF|7%$Guw}ILQox1WCbpUWS_BnIC|8%`3*_G81c|6n_4f>)LVWY7+O%#NK|x zF-1@;1z{!|=3y4%LrwO~N&cZ|#YtbBNPY|o+FMq)y7`yg`0wSy4D$Er_70mrFaJW_ z(pS^g3vOA{vJR)4m1hfMUd=Z({3-g(wVQvJKC(hfKb$C-g(sS}{u@kN-y#bo2o@LA zdsH~at%8Yb$K+|C^hn4Pr^-o%3q8-=_(}s#=o$qe!g7zujAr0uPTe|~brpKVl1!cr zCD#a;&>QF-7|-541ttqG8Y>G&cKdz?9PhTVspXY zKMw`RZsd=Ju8J`3O6HF8XTP_yxgS>!a)QYZlTFW5)0`%=CV${hMzX@8Xf!MZbJhJP zdXCU)Hz-cX|Y&6glCORRxoA z52p^j_g#rykzw)f~h5Oy)-=-U~ z{cHWh-DofqHv)IxH22_+WI45FaZ7UUx;`6C=*RoJ zct$K$|6#cxe%_Cjd!Z>?(n2WB12}hb0_T-Oy0=dhuG#m{FyPLZQaKBvB_Lq1^uc;Qi zzc(9qAj1qW`II(Go?z}iIQoRrICkbHTDGD-heAo3TYB4BN1?65fA$0|zkvAsif zVV-!=y3ClI5m}*&elfc&3QLRYoz+9KW9d+5*tfMi`bitI;BQRHN@{~;C9vrg_g!}-Xlz%)Y5)5LK6WhU2 zmygZHJ+!%Qp@wdae1~aqnG+lL6lkeYFkZ$Qt8718y zL+KnyqjZTNt$;8lAl)U+Kw45lKoDepWo^9vZ?)%f%b=|{x z6O7_J{KZsE{<^_~?smD>+ETHszEx*yYa8fan|uo6itytf^2oF9g~zX`?6a@7opZwC z;r;Rle}1CHlNRKv&_{Y08$?2ZXQ2hs?=yWxT@9|E39t^uLKL^Z5!JugqJY=%WARYOvu zUahV%;0Qg2PrDE^LmUKJ>iT3qHFCSNBjq)+YS- z<3w}F-M|&kd<$rb4LpK^9`9xWSY1?ZbxnZRhdwH?CVA6~MLJSLN6t&Mx-4K}d?O-_ zO7wJ#jGXId8nYrL#bN}neUzE{qq7!{+7D=a zp1Xe1x;V(}nW>y35eVY;&Q=i*I!fuXS5BEP#SRU_!>s9tVO>{qVxY$nO;6M> zzoH>wY=rM0nw-7Inmx=vNmf5yVV9?$%-uTuCgxL!A&HTg9wZz zt)UJJ^J_T%;Au#X7Zc%0zbPb{T>$ls{BbStfd}q(`Y`em_^oxC0G5A3aLOl-n8lfw zBPlre9$)(MDCm~!_I@lNu9w_L6Lp)coKZQIT6_`$$YJZ(21CxZ3KUJ)DT^^QX&}xh zeykZCkF78RNX7k}F{8L$@eMj-zEC`B$ySk6~vV-&BHJkSRTm0YR z0SB=@n$qnqVFtMB&E`*f{|I{zTvzCV$LNv^qN>u5$_RxcQ^f0we_nAm{`DiMzu5$r z8Dh0iA7?Q!bkHFdV!FP6yBW&2z7sde!XrZCiI?B5uKP$0Y`m2^J$!X6i+<7*4lvi? zYOeM3zd$6JbUj87do8$l4f0Z0iHLvRS6<*2CbrO4s{#4ZgPtVu(>jl>Efk*020tAn zI^UZIh7zf_)2KwWHkb({xIjYd)ONA=)E<)&JY0zjS2^e=99~=S{#1SS@a>2<{*P+_ zTISf!Hc9D7BP|gbc=e;wan_6vB`t?JH4M4z*=ul6$hc5@sWGKm&RLd7LDx8z^QZB9 zIU_@~{0=eq-0l>!oziz=^9QB#O!&S8S#1omIV!W3yW5b!E6#gr6Od~Q4BrElE(!R! zq1_eLA@s}s`+Y`_7t?OACKqMc`1RgyQ>j%N^-hM4rKNk-3x!J*t)#Z28c#iAo(UlW z&Pt9ivyg1LlllE|o6S~=@aE@i$MKX_MnF3I>_W975xH!~E{Wr6Wb3o32sOJw+Ton2 zd!Dfv@Afr_t0?Sh>%P~r`)`b&35e;F#cmkO#k!R6DZBmh6HCzXr>m`!{S!f~{hvdu zGhFzR>hLT7)j7@~(qDvZ=Y0O1#+Wif0iR8#KOScNB3r?kk~mVPPL0gyP3HgDLsb ze^d~4eFOvuhJIR4ZTUW?hWBbJh$xL9+!&$pfOr(T`CK{CEvIuh)+Zn@Iw-4qX1)@4 z$w$BRlB85wTz_9UEP7fnjPcV(yxzq?5GKdaT~Jhoc~BlLs0@wQLzpXve!t8DJUHp$ zZHnB;)R9xmBiVG5Coq(ktPPl-1i)`g;YtL>x#e~Qg8=rd+5nMPX6@;eg`2zv$Y4oJ zVYaonY+w{T!+pgk$)t!r8l*VG*EQqTe*T~#2D(w!K%eZ}Uwvuj8b4XC)iX#n2#sl% zFmW}FatQFCC6!DUT`w6{6{-DL_@O!O~-xy`fc?} zfsfv~;Va67^dauoR4-L!rQ`*Y8&46ZF${5n06nR=&a5N$VM{*P57Re;e6nfnUA-q) z*k>OSuG@jNRSz=k-f5Wrc7V~xs-E?cpQ)()i}i+m>>`?uPl@+)`pXii>NND~U<;oa z=8RWauSW{lQ4beE+-5WILS8E>7Gh+mimW-t@iI!=z5i@2QJP&xg<6hqfJv4j zQ8Z#MkpqDpH7wg7It$#b8ESD)*>z8&v5^uO!kWxT#398N_fBl;x{coO! z$DBXs4RYu-J{uK3>-Bo4q$nvG<9J$oVjz~R{xzM{E7*cw#TiB;;B)J1n78#a&(W1N zL-Of&0mDKE3jv-;{P2lrb%-l>OTA^t!!A<-ZBHd$ZBI(egCF)rn3I51rLe#BAg)iP`OeGo=r{S$Ar04KV(AR* z`=sUW7D=PISKTDRd;}TOD?472q}By4AJ(5Ugla1WT~@1r17{S)3FCwIKB_Pr_)smy zdJ0g#FVX(C6UyYaXXisUrZc-tQ{eouH?`-pW5&`o-iesaLaeF#r5m_dGG+v)P4Lka zbFLP_8Dnhu;B;(>rsHXj@(q!cZjf%G---JW(%4Q?C*c9!{pra&OifY)y3-m&EBNE* zT!NMhJ62-#MLgxVHsGI?Or~E#eHKYs*rra|Z=xL@rA3z9Ia|<4oJ_#q6n&u&e$)+5 zS2-6Kt!7;^i!2|&SN=iXXRliE@I~^vF%C?8KanSK(e<|O~?>kr}z zbatg91$+z4*~$vAMHtJP7*YDGC@XO4s`F`d4uMyt*Aj39gp+f_ma9##8^mujh|dAG z6%wW3dfJy)Y*4rj>iGs)wHwG#7)#iqK3haznPwQ`kvAOQ4z)xM$!{tn5=_YW<6(4d z*6@%Rrat3<_ERJN6tIKuld;UNzTEwpzym$%n@rIY!j6S-Lou|~ecQXK$r&bOVog@Qt+7rt6e=thQscoS$uFk!8_c8A^s zUbwkH=AAgl(+>L~UWKTB1=2z-C@H$RM=sL!Z~&zuYwY81Ef670BQSaenhTh~Zs>Lj z|C!?Sx|1rK-Cq*V&o;%pY0uJ;Of@OGpTGh56a^bz*X!y15p(0UGemh&^4vW5RENmK zyVRcJwV%q@>!(SHCN=o&WJ}AMagF7Hn`KuvelS>t%%#?Z(3m~27vZKc`QF6CxbO_f7C=#&yGIGB!mlr~KYWf1vf_Hh*dk@)(3198z zlDpJaQl;DlL(FD1J-eGeiZq0;6SUD~^L@w?ZI#F?J?5ObpLN(p z!?|p;W6|raDl2j5ZBG{wv%lsDt&jAiUXZBDdjAu-E_*K*=C&g$c*te#iBtDSOfp3l zX?`M1I|oge8J5#K+RvC^wi@RwDHIeVg-KH})Y$UzkEc`IS!-`&K#T6^l};r$mekaJ zqcx{(_kF&XT7=YIEIqlUNZd|X_aWUK?1dIV@UulBeDsRhsMm&8n7snx!(T?*kQ*0q zR-#AHa*e#FPRU>C$a<6ozkiB%PU$Y78;Em$-drK@2ECfqozs$$L42LOA{PxF$rd?-jL5;g9h6r5-fsByd+?WiU4TFS^ZEi%P7q{te|>@ zYalda-`!^KWr3z!>d%F@6wY)`&q;_U$b8l+$mwqEI;jEkUBNYFG0)@=`zP0r$Lef8 zYkvzmR$;}9uy!qy*}P{jub)&AlS z5&uz!`puJDbG7+ExSKOVv#2u}qE9{)u<5hwd7EyRuc2TKlw8~+4%^nYZ%#eA@Xod2 z2~^qv4i_OQr#&?F%adN zS25M`TxI_y>SpC1{P0t$Pu;H>;Cb0q{rON3UAP9{%R*XWQOr^Fr|s&q*wCq?tnMfh zdo@AB&ct6|tddXey)1Vg{k_Q*D2SBT$yO=^Y;C+YZ@omJo5j?)MRLa0Oclt`9@q$v zoGFM9;Yh}XU0W1|7es4w)nhebq&sR2C2pngv$Jk{)gcrj^20x4Vwd2kXphXzS$2RC z4P%9#+{zlt#8;bon)av}ynudGN{5%Ybw7@ef2nFwyQrKWTc znu$7Lzl0XN`pG9yKhpFGKn@zdheYUmGQr}uD09AXI3K^2+fEt(@YTOt?#D;4l9ciX z#Dn8!+1HEh9Z!sj%Sm~Q5Xl{6p;aiT|7@b8*D4pGS9>2%^8Ri(Rb@d(^0NfW+SVQK zFGb86RO7#Rb~v0AKCa0HxStR0lX_08jUZH$X{?ux`V*v);%shnq zjm($!36r;{L1g5}SB}R4OeskK=0;m5S@Pj4viF;LX_RQSR*WAGSk&PFuEL}QYs!!+ z2R)IU+Q7W-(&3;Syjk;I?0vn^3U@)*G3a*mKq%3z8IZJSK`9?qLrd9x^rQ}SU{FWF zXDR}pNUSD(9!A($q*zn->Uno9?QrPSX9sRtR=c*N_m6V3IgA#7(%`;&ds19aqvf-) z5nlt{?1C$Na{dPToMSS9ne5?({Zl*!_8&>W_WT!eUp90<6F2ZX-W{gC9iXfgcGU`^ z64_3<;o+c`=wljx>|*OwakT>7#|5ep zD9`5yjnRxjnBBt{IC^IXl^S3AxdR?T&Hk%rABF(x5NKC2Vg{PfFKax_JB|2iq=I!! z_LStZ7MVRa;rexz{nt$X6;J=nAuuvkG;~-@oaiSCe_e;e{JzKV&{WauuM*+m{B=B6NPlJwjGq1CMteHQ&3TN zBtLkmUu(Dr*PwhhkenmuuV#KSJ>T5SwmbeP0iB#g=wth9^A-J z>{<4SBV{;jQ$+WL3(ot46r)F#sX*nE;@RC+`IHZ;IC;ZhQi(qCDVO^eNd3v6P3Lyl zzR9*aQ`D?<)}!|9+|VN-CP5CXYCNDR5&iD*Np~Ox`yU^@m9eJGQ3eU1T#t5=v`W{Zlz|RYA=t z%jzM&$%uoY1WIHK;}`x=;rY8KOk@pj`;!*^XwNgDBb=&|UViD6{#nl{$MFzg*Dc$@%v8WBHL{Y-HH}5~+oPg(2aSvpzL%un zb;1ks|JMQ#YBs!UC?zfJuv9Nq)0qm8AB*``7&-8Wa3x{bg3*xVl`Az}zm1Z@Y&}~> z0ywKUjoiK$*umktXs*&;9!d7k`B0_6c|nJDCJ4c(0#r~)0T9cJiE}=GDnfpBc~LJc zz?1JR5AdCW!K~@XNP-F4n;!r^IMd)&tADtvu?}HeyRv3A#5P@+vvmIIAr932>1scCGJ4y+^3beUJGKxSJutvkPiipeGmSH<^kgky=l8-w!ti9(LZb+7F(^v3`=% zwP}pQi9SBJePmdCI#;-FqOCw(1#W#59-^4%8`DfVQlF=LEko-56(l!zr=$w+77xvW5)+9>{X!!(A9RF!hh&K4G!_mm!_k zIgzj3|AOYtvJk2fQ+PYGs=$iobt8CFW~a>cCWRssa#FfudMI+ANic=SgVxu>c09 za-N$|CV_v>AXu$A)w_AQ(zP^e=ZqQ=!cvo#bV#_F=1*R{jFTO3nf>IwSF_@lk0j3H zI%7N<{|t_q)S?=|w{NzUpVW(QO|xSy>#5eanB?~F==YD#BCYwL!S>s=5qLWx((1K7Y z#sZQf<&(7Sm7y-Ldt>2^c%u>=+6oqy7Xl2i_TBnpLJBxBQOr+j_Or@q3tPU0;rvqv zJO}OvJChEB1#pg&l?YhY@U8z(<(`jbFuHkT#-x!Fg*x%8&2QM!;mxS_**8+}COhM@ zFie)NITzDklrL$`llK7P@8&nS?qKPi<8X0|WE^#Ksmg0_F}D1Fuys>Rb$zDUwth?!tk?NIcpu zf*kn3S3$!;QU(G8{+<~VF9irPr_Z+A0W*jiX9R6 zyMS5w9;P|43=^zRynr9`*w3#tYyJd=JmiYQP8Y>ZG{|->S@Me+4SivM$~lvw_f=L4 zV~SHEWSb+^IBfweVLwBX;OCzTK>7L{Kx!+-U!sE9b?I=i6=1H?SYF7$m+F;$t)=Pq z6389+H_OT2MGCM=TZrQ>JTY78*t|d1;O@wtTw}8n=xY0iP1wDz9e-k{o zm?D^oXnhRvOeOvIa(d>+X=TGV$5N}mx4ScweKJbfo7PO%FlpLY3Zl#eMKSNopKL+I z`Hio>8tlnPhBTFz-m|c^SXlnqZb)BqCo~eHuO(1fM zg`ZGgGHdU%oFws30eK3J z4-4~G8sr_(aB)(1*-i<5dn{q$7%BP=CXTmg$rs#&pihj;Mt=(Ab7J3SVZ#o%5?Ej| zCKY(#{gZ}*W##oTK%PSn{d(!!vRS@W+I+L7MnNXD@?V<2(Ax0gLM*HK-`|t|@V;iC z^?b|fo5NeSD0(_w<+*eif@H9FT3_$uaZa_6PE_jPyT~GH z`}X4%GFWUaH|pzpRv`3wFJc(Hqf6ZJjdXZsa1B>s;E{1`|4#jtV*QIcosZF36O&i+ zXCg#^_j}|ynrKw(YcoW=G>5_X6Pm`N1;tSr6&~Uf&YXU}*yub8_3?LbIQd1U>GEbs zaT++Tm_`)2SB#)sM~_rvQkdaB)hm>gIss>=L>o8RxUqqHZ`+!WXYVV^jUa*x!OKO* zzsPuC;Y(7ofHXi)cZ=`n=V-5&N{k);Jmx!Ii;B{>&?qyblJ2kYCKb77Ui?;!gNa+v!(B>;ck=!T*;m}Vt zAdLLGwx)vh10M-1S3Qz+j&C{3Hun)7aFr~Cklt5SzK+Ufd2Q=Hjfm9?w8Tv$o-luE z@&OawiCUNU687{z^b}IgHrJk3S_YTrEVvfJLGI~pSDm2f5JV+a+6=}Ft17MDZ!mAb zx`aGfYqCF9WG7|0@FVU_+S`sV#cO)VC!Zz#&%`PE5L=+D zcPzNE!1h6f6BArp%OOhz9vgGX+;ABenYSk>)SveE4IGU1ghz=F%5v5E5a1379 zY^!3|0}T?YHk2MIhLZC?irRM7CHRs^s|z=4XW=K~4|0g!lXem!R*^A0JJSheF=W~_ zdzt9(u)i2o-XO0Y{xL{#V5m|kHdhY!7-%3&b6eUaBs$RNW1v+OYqDJ|KjtNhKNLV7 zxKB&O-ly}zcc$fPPjFTk+x~tS$&ydH@9D>m(f>dqWBe()Yj5{!*Y8YK;dRugZFFzI zNIsH=TTkbqpwSG#N`xp)MWqE_K9{Y;eeS(AVQYd`Onmq7I%_ue$@Ju}l#lI8ltc@7 z6dp@BeQlna&NN^|hPV?ATqmYbIPZOR!SE1ly4+8fi>duisDR%+{i#A7%H4~K%+ELs zHN_?q7=N6Cav!Xw&L=feN~bt{ao72xiVl|J`XvF?DiiZ3Yak{xhc4WGj+n63+2d^> zUOu%Y(f(Ek0Lh&=pyAZim;30eHsd?&`Q=k8!&IK~x}j%p+AgC;ROTQ}5uqB*@eawf z8S$%>^#&VQuPtDX3TRbJl80NAt`o6lf#g^EAR8BTikVs~L{TxI$^U&9&HF(A^z!9P z(|H23QJ*|iFjAP47A)lM;LAmlaYT|6>KHtIHvDo%C+7u5oQgw$kX;ndHxf^l%m{H< zPIDF{$-@zRwg-1sI3^fRa<>1PMk{1#=tD1{n-SN~8Q!tFdDc!%w!7sX%?|K>vm&Yf zVRepUwE5#E)d`b`rqU*l6-A~DzWm$!qB4J-^)EW8uDtC=A&@2L*27CFAFR=|y6N*; z4QbVCXCz}^g)k%oKRO?^~u9}K|xYSr!xFks<55g1!rn&zq32HMN8pDN4grjDW#w-hbpH z6F#!pI0kWbP&SoUA%hzmjj$gTZo4+QpDQ{eW6n<;7}<=Lx?%bY4z-5q{0r@cvAG&B8$7%{&v8dv=awR zuXMzHNP;CUY;g_VJoqbu$aegjjd6nv0!KTHb_%DAniAqk&|aKKo3J*fj(e1?}vR?fhx%vok;!49%%gmW+NS9%ZRV1Lu0Mb+e!m2u+u|Jx%4SI zj3%vu8z3LD6s0UNUH;$Nh2&ttdhGQls@NtwH0REX96P6Of&_J=igk5YH#;$rVJ1IV zi1i(-{u=B^5+jAvYT5ykYiJK|DZfmkCh<3nHE{PNiw#2$LMBH0ewXU$k(3bx8f`Zq zcDq`gpV^8;qSrhM#bjJBKbZgC%(@`cc%NphWH9LMj_N^A#%`Y| zmOo+LNb(noB?XEt83pn(9tvdrnO3j#a{wnkgUF&bEDii{pq5#Ug>5#LZWfKYZ!B=4} zzxbPe#Yu;ZxkHZPgb8FgIE$wqa$BGB`!nFZ%hei{9 z&0G)3IJ9dO&JX!o`aUV(gnGcy-@VY$3C*Zs1M=Tdl|t$R}nK z$S(Pv87D|R*Gh@r+3q~bTbD{c6d>m%f9t4hS%Q>_?l>jY+M%nAt`19*&ZLCSwVn-2 zhf==Njr8q*8kX5j=1s79rX#<}4~9ulu%pRmeKwtQV3Gyxx1~-672F~SZcziO1|q$l z%}oOB8NK$Wdr+NH2q5vyeuF zJ-$~CC$;Rmor~BoA^37e{O~1tC9mz`qpQQ3GY3=Voku|d!2J4I8J_2DFb zGRha-uQNnD?DVC=Vzq-X-dU-NCM70= z2W)s|l7A8HV$T61V>(gpn*=*MTgR~>4Y1)D25-ERPnC9<+N&@$Xr9DID6PKN8(YO9 z_@}rc=V0>&5)*<2;4{7WmK=k*t>kPJ%r(*u!|vW-F}K;TX)(8MuOkB}Ft;ZuSPW_? zU+wk+2*D(btT*)Bt^unE6y2sOdoZpa9T#Y(4a=%;*X%SoFgKN0bhVKA8(L3p%#9q8 zX#-W1GU|j%SMAGS{>`1o$feG9O?GW3!=K;rP+Qi)0^>ke|C}ASoan=hc;|!R-@3~I zk@RhfJJivJ4l)G}@fnIgN>D7CmTz@qf^rPm&uTD+eVJNOk5rI|(%Ha)($mCJJNVVG zPq~_P@WuCqv!1601pa!frU6=f}(>R@^qiX>!ISI z0Lt=)Tj?jzF`%d{Rbs88*9_FhSiz9bsY&-&fR^R+h2v}$#VF~sYj&~U4p|J9KCmvd zK>8(vd8*DrDAL;+v70hX3NKohG>;CcPgerBPTXxnzihl>Iye5e2)U#QyUXsDG*d!h zP7Ic?CDi56iy*w7}O{fqLXpD3&o%^zOx)U zZ-vfI0DYO7$YZ$8(#8%0svyOVIp4((Zgb4g)e}je!H#5cwcbOVQUMOne$^*z=ql^W_PCXvjCpJ{&}Ekj?c0y1!2hiV1wb9ZmU%N3aC< z(^f@EomF3JX(*?QA60Y45XND)^|eUuE|W|J9)9mL#}JfCl`>*qdkHfCxEpcv2(rUN zg(395>bzZeUHBe(1^E@1K>BMgkcKOAk8%llasvs&ri|<-TO7x*^tD=77KPp2EcGlf z?XPa70I?G6Pohd@&h8-9EI32!G`6CcAL$i`pst4O=7{PZN)B$O;LahxV#T2Pl5xzN z(H7d$^mzuS0}?Fqg6f6wb1HYGOo}p>?+mD`#U23~U(D^{BoKv&0b);g?QCOW&w8N{ zj_-(@%zav6pC^ZJQ?ah7zo(`3dRb+mGsEjil?N-*1-|67fw1a{L@B<5g}u4S%1uW$ z_p|E#W$|tN=^{$wePLTU_6<6@*>r}D{k_G&gOj-iB*>uhGIwG-=`29MQhMKly>!NS zSzoU*m{$Z6ASzn!;24dtprMrN;4{(8xj$aKIU6|W9(`5al4~3-k&zc1^kYP|=TJZ# zChR2?VHKD2$)UcHZZOFN89F1Vf}|Hik5EDT`#9Ox=##_BCrNvKqGBw9W=KnXw={gI zHPQVbCJas~=iCT6g75I^?|Zs;{wSJGh1bmC4_@o&*q+5;gH8XSPwfj1Q^#H`r3J`7 z439J)H4s5O-`!{;0V6dtc_>jE*gjj#pK|7n=5Bva2{8%uots^))D5cX`Rz8e;;}^5 zas&1+vOFxGk(Z?h`_-m8HZlo2K85M!z0GW;-&kU3Si_((R1|;rkM)my@GN`K*C3ML z(eO#g>cj{D7UT!dHvE$qz@}pU05Hk+e zG~W^Ma)s03*3fqEvRXcq;VQYTLD7)04Mv?ZQ)%b>^AJG~?7Lo~L4+%gi!dAW$7QrL z4_4-rbj3R{MQJ~!PR=!XB;4ihPJBq}AwE$ulfk$NFhu4SwamFI)A#C6a`w$lPm0ex zw;U+Hlu4>s>}o&D)4cfN8=nD4&n-%JNUX%IvyjLcEvG{wPw-%w(xRxXMJcgoL9h#` zDmaxoILo+5Vo#A-b;y$JkX-0*igqHSVUWR4aE5*z7)h5PFRXP7M%0K{>Zx+F+q`P74zBGF+W4D#dwFLEL7ffRT^3bI|M|f`wvlzX3)(&VD6ftp&tL#9Gj5SV2x*Ko)qDKM)^RP;mqY>)xy<%pE8An1X4&!#Jr zgPEIl&jE_K@3Maq0C|0oAEu~cQ$(VN9HE7;TpnmO$|o(NJQS1G8Y(4Q?cxaUd+f+q z`ld?^p4mw0mvqoa_zGFVq-+UB zkS1Z7aup^>Tp}`1DJ=sew_tn!J~x1_2=vyvN;e;r#k*ex-S9=d!h!zN7w2IOln5@} z+=ePo=7)5p3#My2uUPb_5cfV>1F?yf+8qt-Ae z3=!DTnsfiAhnh%}UlDUP#A(xyb9AzFiY7{XYOx`VF(eKj<$sp9J|@ZJE7-z?HV7&$ zFVkELg<;%0y|X(4qRxmOHljZURL~`^VRf&5ax&|`3=fiQ^3y$h!I#B%HpKZ0W(N^} zELfL(3#aPeNCD26HA1g?{@VqdknzMw_D6+4thnFlE~jL!pYTT@cIJ!2U!A|p&pxX= z$Lyn;59AB9ZNDF{*as+uNxyl_Og)%{_sRC4t13|jUOEkzc5B!EP+b zeI_m7?3W2@Ti?V|6B}-HUh?H|8|<|D@+z(v9T@L}HK};s{>*s8J*S)2x=%ZU8QzH$ zBp=T_?o+dA5EA>STRLO&I+( zpwsqK0WAEL@nf>$pMOz!P(vT-i9R=cZDVo7|CVyn8)7@Tbp!lY`UCU)z2#A>LD0eY z2}B`ukEzebm`Covzk1EIHT7Vl74X6eg&=wqQ4xuYM;E(27}Of8X4&p3k_>`!Au3U; zO>C%^gJ61(O`_ocMXl^hT%4m#f_X5^D0gAzWEmhBjW|`!f2u}ys53b;yS!XksxKs0b6+hugRaq30T=-IX`4epXkwbm>7)5=&<*D=Z3&yM>c`eMT~70F!xg zGk$NQ^=od4`=DeE?KztJQnrPgZ)dBar=qnLe|7;h>{YC!F{Fv)l0|sMcIIU!Wj^QV`5T-eKMy2WB-Pm=IS4OBQuayF1J@?C%9S*n|UdY?Xb+f9d35TyAP9wj&a1{w@{V0&EB$k zI#J&wf(j$PRT0#|&UFCcmzKpX;!qVnRRxx(<$St=y@+!yg7eq;G$fe!+=7UpUEE1Q zZhs5bFlFCw(J3^MYgi;a1&CQ1j+FzP?Q-HW3@8L~0fJy2XJ}&Y)OyfIg^y=%q&3pUQ+A-ye8s8Y~Qj=c4HEVM&P_3&JSWxvrvem(NBm{Dee`| z{X#oXE)E!QwfT0D+lLHiQRDn-KXMKR-`#9kD#;u6-STlL9x%~YK3J!kl}IFYQbguz z;{IS?(!&|Q4HC5=MLBkdTN5P9r1<7%FVGc~ywn6)zcz4GVHU<$a-p?h7Fb34ih!FE zCT@ELWs$3`lmyoH8}e*&n>ZUnOoP&OZmOB*BA&KXGR@0xP6ru`$_rT|oY|n#v~_rX z`@EK$B$K+&H#Jc;D7@GX&k>$|f zQ&(yLSaGwAm*UaE?2Y=y@Srv^&r?~}e_U>H^y94SnnEQPs^G+t<7!X<$J ztq3kdM_za3`|{hx^a7tDN7A*g?M5e83J~*mU;{!(vlXq25gzYH|Rq{XF7rmeu-mV-zVp-&Q|wL4W_S<1aY~l zl4(0g7o6ZkyWL49#VgDTPUE2`C_%&M*^YJ_wgZ5uVnw-Ad&M-s_jQyplgfT({kgj3 zrcdF_lo3h%bju7%X3es4sPxTYDHQ_jiMiCLN~(o&hOJhn86NIsFfPm>`6N zc(JoUzgAxaB8$5-{R7f@@g z|A-WiLiw4|>`r}m(Kp-Vw!xzc%x=nPva_>R3B+>=7r86V%Uu1w(c%PjD$&H~Fzn$?Pc2au zNi72|Bw#V&5B`O!9Yis|Qm~m1Q>&=Q6)~4BMV`1ok~Z?f50$I@M?0!8 z)6nxug9zc2>kCR1xT%7kykZnUO1+ zwr2;P_MGd!JdpMdwLp4VN7Dcc2c;+=0lFaH^J@95?oA&DnJ2!T?(?AKyCb^&FhIaV z0m|`M*Fi9#U2?+5RX?f>(;LLp5LF&k(vE8*tkYL!sqTxXo*t(-=tAZ9ZYQK8X9X!L z0_ppLvf`g1<0BnH0c>YeG-B|q?&wb6%UOx!M*Y(NBDO9xY*1=KAiWZV>C1cM;X(bH zNI18P%i8BmCn$*lMV$I4$%@zc8Iq}d;@v6^T+ERDY$HxxT`XlWE6m+2?6MG8WDG00 z`8wJ2(ysGMl#&J|GuY_!2lY=uUqaw}kr^XWDZk`#TF)IFmcKk|j`u=Nks7V`G!oA9 zs9uwxZyGrTXPCI)j5P@!sb&EV!|3#I%<-1$czi{F7iX>Kv6oIGr4$LZ_JV#c&)L|G z*^X(ERT_Z{>!EFNLnqMcPS;}+_r7O}0@ptjo7|ApPiY}(wbl9AA|gaLo2#PkP8 zN=mc|C(FMve@*6XY!!ZA@1B0};$zA|W8ymChQgyGqT|FKM+dKUFTKO+zlBWKd03M` zxQ?ifp1j9^Tp4IVS~inEp}_d-iA0j--k(7&H?%;d4r*qDW6QtG3D>L6n|R@Yp@%u2 zo7@R}-%;&xrSI8C;{U+M|2eyMYyHA;;Kz%kCQYG0SuY*x#Sh?~KZV5Hn zJdm}Q)8|lAjOSL&Yt-U(+qJink}Yyx@tR=uHbYKG%CGlvbAoZ(vy{;DsPET>HmGPW z;*nu@6K@|ZG!k?38Cvq=Lpf1Bq~1_=m`O8gSlZU$nkhlvcgC%Y;|Q`qBToN z_WHQ;B;Uu)>E!39-GlE8D>$jbayxkyfaIN8hMyk)ZZR~)5zhNvxCML7z7qEc^85GK zjq1WKR=tdS8P4OE?stM%e0NBdSk$%_<6sW+HE_%v7y#dExMPuPdGu+mt-SP&R%IO^ z8g~O!B`9tYnsm@wwQx7;&yObdVNPYcw(FBcU=R8S^DZ>T53|t*?7==|p8^S753izT z^`#U#N9cN+At{T6@?J%k1B}mNqHtvh&?jMar zdqPZ-YiccjnCidqCKNDuQB#WdDfzwFLC9WJ>3XM-+trK2v(NdB;^x`malr5p02Rdw2c|;UY{TWA1+u>v*WnDyRPk*O+Ov57aW~~8AU-8bj@?%n+CPdCq%5yF zi9J7kl{4eaR>*ohSPh+YP~rg^X|W-BrG%J}E96oIq{bHO)=VFrNl71;}Uzm{n zx{Y{Y`^NU}ck%?fgi3vkm7dC58$-p9{tC!)9z&_Rcwv6k3NW4sAg}X^aQx@y;z3gV z(di7}{v_gdYnfM!rI5GAKbEF0y3Rm;AUg<^kigoh?9w#wacDWkV4~3POrQ+ky21%2 zZvIEL%bj)xOtNnsjF-9`%bKp@xccy1EVqF53HBRYubiEGCFnHr2H2J4TgUm zz_DnC1mg}|41Qp5XVTvX31+mZV{*lIc6@N#Z!y?JjH7UTU&012pDi7XKm3Z4p>~7g z{TeLKT;Onhr4A)Lsls!SImu!5OMe`@pSSZiNH><-p2paAchfGKx6_cX&k@r}f z%h`YOJ=sK2OrtsV^ysU|lVHQUZ0-xl^igv{0{>1wv3JIF%@yD2uOZtiHOTaCGVqaE z@H7s%Z}zO+8L!&N@#*#B(4n4e$d8h@1K|9nIL(MtEw*i{$v9}CwK(EmyoeI!!NVu$ z;aAEco;}z42D@D+^<~d^&BFTjuzEuNyt`{Eou+rVLV9uZN-10B<~3R?M2ziis1D(w z-PL(T(NK4L*|a#bc2Nukz{P~jk%vl>yuKAnARHbRkPljG?{YYV5gzx`5$7*}%WfBq zb~sCJy=VTppjz7lUtk~qReRP`CJFGv)TIJ~T(iKa(FBd6Peb>%tfXJR(<#`tYbHNe z#~z${GrQDNEuymZN0JI5taOkChfrtC*r1#6u-yd#~a%I z@<(NdFZuPHGWHzzTs6PCt4TKQywf_TYf9L&p zW^w6J1>DgD=Fwe}GX127e**)_7-Iep)7CtZd=22X<8BWJ=%@f}lPP|HoVVZCH8Lse5tN4{~#u1+3N)uiWhr%&zSk7f^ zSO}a%ifb^_3Zn5t37;?&JTs~p)&gK0ou<<#;RpK_j>1xesY;r60)%1!uj#GMAZn@i!aV`nuSz#3>HG?3O;`EGr5xnGg(&g9j12#3B5kv8a)v@5HM=N&=8eY{Gh*9|4c!ZGUenUu z+B+~A3bZ*Nn_LjY8sPeW?d*8=hpVV~@nkbPA+4aFn;HXrk;O% zVX-Je-YWGE%d5=!u4VlOlt0=* zykwMgdy;=7BaHrKVh)eeF8=lUw%#t7#D+sA54-mNddvU(n`f1jPRSF6@IW7^MS|F< z(%tvKd!DmbC=6Zx7u|k*X;EcPbkQB_T6VnDNW~~mb+M7)@MRJvt2bv`Kf-h8hWPY@>wtJvvRSP$GNYXu(zc6E(v%unyNd%HblX4>$-e&3; zL)Sl1gMM>8#?iBlF{%=ht>E{{4nF z<^bl`Lr2Ug$~f|(QLynE4)%8RCGWjrel?WJLKCztJK}lE)jueDun~ufc_U<&-GZA| z;Z$xQnOPVMU2)e*6{rU+2W-S?h9X(|PkA?KffA6cdI@<{*dm49u2 z>;As2j*{c>&@8Dl@uDVzP? zxbgRxccb5Z@Ay0lY5kMc9gErT)^+#imS;vvj?9a8!e6rz{VtttbP>$|kGXtYcJ(Xh z=V9%G)1#5IietyUXF@Jc5J&mdci*)Os?pDL+&v)qA4vOyA{iTh@?)Fk*Rj8Dh4MI* zSsV+FoKYN~a?!{fZc^&StuA+8F|USWBb?VaSiaN4Z2lQ%y$bK;QR48&Z~vYwJ=wtX zhPOYbTx`V@_V|ZR%ai_H!~F7xghWJs{YUL^#~-Keu$K7kKh>73IHW=O?LQ?KzyFbT zBGrR`==}cI$bo-%m5D$8poaM459@|M|CFkr{e?Hih-~l&5xc|z$RB@Fa(P|GpDLV4 zUb9pb$=gs2JT$^pLn?S!9{e8UljWt~hJ30*RN)ZhIfhYR#_xG8Q${i!aq~&1`000X z6Gqk>Z8+gHo${f$2&eqPD~@5RG`2zB!>xA=RQ?p7`*hl zI;PjO3{v{~v|#)9AkhPLEHE-o2I#xzRb@{k1A*dTyynUMK+!P9!^x|L;VJ#4d3XN`pzTY|VJef{ z{1uv-*oiP0kk)#VP#A=+efVt^B>T_@7uB?Gr5Qn43?mLjVZhzLsW|$0n9FthOyAIO zQwtG8DMiDjJUH&Kp?@CCW>WdE^v+GKBWD!Fxv1Ax4Mop;pMz;@aUSp1lRWLK(+bC( zQksdA;C+Ao$fCNwF3zru{AYc5QvT7Gj>%5+K%s#XFEm>XNlDVTef6lK@uyT|wAXg_ z(L`rIt*}~m{D&vy9`&v4`z&%$>I@VpfUFbVu0$@QrIJ|rO*wlmL4jcJHu@t@V zR-QORg#?$0&P4L=E1?ML9Y{hR*|Q-}IdzDf*5KqK6d|b-$u{?I=KOnEuze0hkT%&u zyjOPC!#bm3Ho3fN7@or`f7aXCAF0gmX-f>;d(DEHew>VQXnFmQ6LwJP6PYq^5!)c? zYu=Rf&%1e6ac_Gfu=LK2trbvs&V0|r-1eHzz6WU9+H3uiTY1y`UwFsyB}L*U4p2 z%7(W+U)S@**OxaAu}C*;`r7|74<(cGaDsMLsTrw*fnK!td#{{dgZ4gfw6yoieDSGT%_^9bAX zQYNMj0W+|ZKq~(h4dqI}H>~{)hdvd_7r>%}3^Evkdb-TG(~rFZM_)E3i>A(P{;WlZ zrRYE3Jozu4lo!45wpqxZDYBjp)R(JKUwQ@x%=l1=@xhD`HK;F-Nqre!|2G`@8`(L1X7!P^-=Z3>8?mDqNvoIdo_CiDVlV67!f79^_FQ#s>OA_Ap+W(eK$&bAA z=9#6Oiazt5JR*{gkzkTMV z`nuJvqAd3SZ07OU=lrXjEDbm39uB1stls!%NgeX?H#N@7s88P%_M2+_HKixjYj7R& z>tCwp87v#NYQO!tz5E+6{`mcm*Z0!n_rDMV8miy_+PYwChu3#m59^7BxgZ*br-;zJ zyMJBr`u(5Z|NH&FZ9nqx`(M+s98mvTb=)KTuuKIsTYTzcx5;TlHV{4va>t2hX!FfM)i8ONvc3a^AQoVq*WP&ndt z-wC7oJf+Wf#ij9#qvN~EgE$qR^6cVL`h3z6hYPRa45QQhnYUs5B|``5$c!>Zd}NB5 zqR{9VKR6=_$8?NW989OU;N2zMg(ptFv%oZs=EtS40%n}1S2(^i-sO>a=?J5ENJHtl z@C;M>geM+4hG~UR`feT-PWjh&eG-S#R~XV#dW7SNVmn_mw)$K`-C&f)&xFa|7#7p|YFD-PuKvsRj&3MtOwv^Pku!^8 z6HYJB$Qzjz;oWG7uD*emt)2bL@7~l_zrL+cI5c!Dt%BHO&ec?}EZCdk>9o;6zvY(Q1TK#kLVj)EqQ!gBqSqufz#;0q#vWhao zQ!gHs)zjXaeEB!8wKc43OB{z&isMf!&&27MzGrcQ4W}fvk1?`CHK{ndAXatWsI0t^ z8DZW7-P_ThY}?tDXxrA&zv_`~om8anjy`x1K0NN7$+epX?IaA-tRk=ab#1-Hlk;Np zZ(7-i(>XmjxmZ$MnHQ~J+tP~#%~&;0oZ&>BO;6M!3!XBXcFCA*m;#Pw7RN(e#NP38 zQ}@b;wscY{Wt=I0m?O`EX~^hnPgi$kmBhnGUNkZb_ar74|9V4P9q3Pg&&0g(rQEGyPGqMC+0pvnr3GtrBqc0zuo9IXk+%D2g@H3$)hhHlT$c87rlcT*hC;CvFO&-t$l)LSNc`x%gT?+r%8G9QNh1S zEUyQX1IQ$7UnYZnJ;?!>QRRea7y48R9Ch*N9Gu*ZWEIE5==b_|yxiFR3d)_BkY=~} zkL5&yb3Rd(2kQ(}^0qg=)-Hm#Y0~;XD*(mk$)7w~S!f(V)i2KoOq6Q=kGp1U&T*(; z9cXLTbUyhboa-d)!k^79EuNSgeexU28@DX1=ZRzwucgT}d!QW@lk) z{Ku=CSyzC}!#D9A6`7}gVQL|fJ^HDa>g(5HQGXxDKg)~a5}xo!@?f6~gEQq%Me+qW zLCfN4T+8;J8=H62s-_K3RCgh~gzdaxooVkd#f*(3-ihSoJ8{Ad^(D3ziirg`n>wNN z3&%l`^^3WJ_g`OK+OXZ6;wB%~?OOj3p?oS3pC;^e%0KWAE;Gu`b^AphiexeU%tQ@q z+Y&|SPv(7pRTJ;S=E?8k%G@aXdn$ygS2W5AZ@`K$kVJCH4OF;mI5Q9ZC@c>|F%Ri) z#yn)j-J9CcC+o>lDdQt%6hQ7&kaRJoZIn zu>uH%Um~VCV{Vcus?5gtkP&X#(%y&q(TzDsC;BMDc@E=4c4<{^WWzHxJ=qxZrd~8E ztGlgtU@^wc`gQFIoZ8R9UA9>rbzS|>-n6=@qgHl2?Z5nq z(7HXgKb%O8UU&x-$sqqQOk200FGf0+w{^i}#kBl*)%l|`^N+}kW)#Ik7-y2Lm`}8B z>+D0`IG@mu!?gZ4e^gd@>ZPNzG2TYAN@F45?%#&?z3QQ@9ggBvX-WQZ{YwB=7IH^S zD~M&6Wrmw@hx*Q?jXhgmZtS`A|K^sF&wH*L#02J*4;E3lRu4KnR2qAYerl^-~l-D^kURU`IqngoGp{5I{gW>5cS| z-s|hV-Pi8__nWh`ckjzf2l4a2C)u}WPnkJ0r|sQ2GXo~M`J_zZ-Rpny=Ksk1hdmdx zFWG+@*E`b?yz%di|M2>c!J*@WcX#mSzc>HA_0L=X+Y&U(+FuC%=w_-q*ac_-@N);n{$M5EyKGzPWhN>BQvgfDo93> zq$xa>(KyQzKQE>$ex_>~;^#9jg|Bm%X_Wb~9@7|Snzotu*7X&?8y1QQY~myg-W4C~ z6Sn3tok7zTKhp@)-8RL~G)-6hEPqykKtGPahPZ<^kau@bh7hk3NMc&NO#> z6~E$TKH=!4?P59u%QH{w(MNK(KErxEvwhueYNBd8i4$?`>J}}EMy7MGhj1ui>^J(P zRUE2m+WTHX4K!LE4H@RM`ithn8b1JvT#KgZuKClL%%r@yXtNb6aRvcRkiPw+4aG;- zmD&^7;D-=7e(cwJrva!0fzL)!SAmdmgW#de)?gzIYJ$Ue`J=-!^9H8Fza)}P4zl?% z4O$r$lm<(EW}8M61Kewl`f{&i`b@RyXQ~s*_trGN`@p6$2p9FEp+KJe0Q_9yW9ku@ zeNM`ai-N!>ia6OA#SasH6`SVn$Hz^e6O57g`%mkfF!IhGLhFGgMYSJ1yt#s;+Q_8_ z=?^D4?PeZ>v_)CN1Z0p(JE|`hNEK)y-;i6nCc->m3I(L|XNpF$k2@(mI}X2TzDYkB{o-qMWL8``-G9y3002M$NklZ3;8n$HM! zTjkE@)8c;?Oj{eDsXpK8CwEqi{BqCKqwC7*$+v5s8l6*H9Big$P5yyG zJuYsSAb`+m2Zb-2fDb90|EQ1o03X8O3xH`koquKfs~g_Ce{(tJ1J}g}`g=|35I-L4 zMEPN?6Yu8N4!ym5iWG4TftT)B0ZlGrrXKBxpYR>{8Ae$6l{JMG`>G;L87Jn(SvNd0 zK94X~KDn!6+e?QqmkdtUL5RT51kx{zkm&K_zx%~`aT6g>BwbryI#j*-&%3H1(nS@U z{_tdzzGgX1!upbxi;wmOj}9dGp`5X}pstjMXpYB!!My|1yNt_@XTu1PO_oOU324ch z#+s&op0Fe z;Gg=(ky+{8lVd1IhR@&n*7Os;oBwz|A^y={>z&ePN{2)ic=5|3sNbP5l0; zPmIn=ZWnJGzmA-L@but&=f@jMa409Jlk^Y%Z&o{ULJv^}f7A!nptGm0EGQu4xbUhhev!m%`P-1R4LZKC`Nz;-L5* zwz^-E7kB=*`=_(tU;66mqH=Q(MrdZ8q?|ba^nZ-Y<@l$0{A~*l)gpRM8y$4iS3^T=3Zyg;n`5$I@#3GB}EVU5p zJP(vA|Lsc3Le!5Of6_@V`dJ>qI+yt;f@B>05kWEz{s5_if8>{XCiS1*DLGi)*fQtl zWd$L6zi0zL+8`aH>yNaGC1vE83hp$-na4n0IpdEBZv1#c{)zWrmPZggym|QB{{0&s zlFBQ&lXo8fF>uax{uw@c2cn_Ff_dPAMgDS zqr?0^(fhwyN4@ut|10kwE{$XglKD-TzhP7vfZt(xF--%XDZimSO@+fuW8faDao+i? z7h&)_Hv{7ehjKNhD-PaOKEyJ-SVjY%S)TY=j(Nnv;Ks#r44OvSox&v!rW20hR~*dK z_Gn$E>7{KVJgtwY6Ie&#GtR)fmS>)}nXt4hqGuNf;9P?WHkD~^c*h>#%C?he3mCHt*3Y9ai9^0)=~U~&pIr_p!k%*tfTE?8UyRPVG)nw zXPiOH5+8*Wil6D)X2y9DzWw3P>14tuEX7aw3RBxlIQ%$BjpXNAX(Y2Q^Z5sxFyBj@ zPhpa51Vj+-vJ^zcP0h`rL(7Zn;lr{qt9MFlV|`1@`wzlo9YGkX7~Q&@R5~`0Rv0wB;+^UDfysv=j_#gFi7ZA*%h5^jK)og+{>_FG<_*+`dW( z+w6~F6bcpwZNZJUT|UjVAD$7Ll!Xt*(DtMD^Wa;$CbKo95w*S7l>Mr?J_w{cq?DAInJJRuO#tn`=v16%ri)3Hc^JFets# z=&U%=y#d5M@8{R{;B}o6sTEXLQr|N7=4JUxUu*oG$7RJ`bnl=H!Uf)H z_*$)Oi~pt`TN}oYG=>QJ@f^W_c@CG6^3X_58g_fPlqzTt!L&6sk`)HQOaFHnpA~oE zy@N!HWWi^b7g0mE-H^1{=!7Wi$m-G{d~^EX7d4aSWcNV;3IR9;w7xFmbK)-e@xTm1 zS@5})h4?Vt+-^vEbTmHZA6`=yY=KYDDZd?=nS(L2Z&5+r2ajwiZwr6x@#oOlivEiq z9+K8!cqTRNeMi<7*H=Rmw)Yhs63q((1cfgitbw*#RNkOej?vI_Qx_f6{)aij=qZm6 z&m#2{rtVu*R9CvYqA@By+7ENP(a>_T)<3(Kr=5V+=20vBPCD~h>ID4H>Ip#z1qCQD z_m<`P)BZ9#H!9k1?Ojw*+vCE#gpXc4L_EI!*FmrZ)7Ec7BN@$NzxZ$vBWl`T#$>a6 z1+<#hJ-x58s-U(RAD`m~Oz#9*Eel%7RcoHwMU7tR|BD|Sl-^-fb{rq*r@9(G2+0>A z1mhP1+3Iv?uC*JK9@_{R$aB{$;us|fp&t0yKLJ7sKICsH3vQlwpe9(^)ZArkR@{Ia zx+HTD7HlhTc>P;z>DN`qj?mu=IL3XWPpa@AIn7Xng2sMb<&m1Etlp_HFoE9k-UC~( zPMG;eKjt^ho|qe*81QeNf2exxQ@bL@KgTM~us1ihgyzB2Yp}WrUmEPu!3MX&k7uFZ zPG`Q5Y~T4D^2Y?MYvAWHr32RqXgKb!Ze02M9Tk}4jimo%^RL5*jF`mi_yDI2)|bFg ztS_AZG}B&h%!eL_pW{ERb3zo#$@excVkl%mdmEM-U~vI_TK@Z;MZm+XKFq6{LNCaEW_jld7f5ur3_L=L>ZO9C|P69|3x+wi~ssQ6zu z{IKg{u4mGh<(?0UY8OAUxgsGe&Y#vfKB}g$p}F!XPGLZx_;JwBHiUg{hJ5pGSzd6> zUqOBjPeG6P zoCXyy+`OV->R(0*Klgo5P}A+gc8MP?I9O%jKo~SSli(v6f_ZTbKzyV-MBzQ>AB2}R zh1)9|W8gLe))3;lPQYZ2@>?b5J*1fY*ZJRZOm@sg_YKS>1kAk(SWu~DywgaeKVZ@q z|6*$?4$K%$dSW6z_Q)C1Pt)D7SOGyY_J>=S7he14(b<8x0NyDI>Uvz1n*ggQRmijY z;}Ajq2Jr!{g56LO{LEha*Rfgt7@r>phnm*?eP2}#gq2;P?K=ScV6(74;K0mo+v0=e z!~T%bVPs|;@tOSr`{w2CagdG;$G*AXPz|)`0~l{{(A@UTx@OT)fZ=N4>vdU&_;KGf z2mK1SnD?b%Wn*(^-5&s?Xj^&kwQtJ)K=e9BeZ6teXzbVfq!CXG=35J-_=lF2)K?zm z{*V#_t0^t-KCrpmUX()Mfpz2a$ z{%|(@7uw7pXa4Pc<4Cn_5x}7#y?avBHGfdk)*{5zA9JXC{&4*?!=k!mB+516J-J(afl$mumA-V>d*_AlhW)5+YGIB0F|IlD{x*L9 zI(+u{?~OmKx4OwV$vygMqtUPD5{zyIZ$D4oN{KL*IBkcGwgj6{Z<}nLMU3 zXno4i=zfT0crl$aJPj&O)MtgSaNYTYt@&D>(&Pur;-!#vhw9d{dO zR{UC@cc!UOSnDfJ)+1ixAxx$-u%2o)YZ=ACJIg8#M4fu9PtD8r@R2+V_T>xFV#Ucj z1M4#!_lysKA|PTFn*M$7{*5L0V9NpDI%r*{TkvyiHPtn@*bQ{xPx}6V^z%NG6ORvo zzUQub|EL(sZG}H7F5sW}@}xX|D0}IPD+*~E5Wo!#^QNuv+--31Q$zLIr;K^Oc{7&f z*Omq~kBhEAfN4N$`ZHs*<1^x-inhWxElftDOYz4$QiCaem)vof3!5?3T>_FQ92n2s$r$XmDox5m~VXTVP7`+eQ%57pA7i+|>(0 zdCNEZx<&bYq2&!TnIe2Vwy8AuuY1;)Uh>ny=@9Mpt8{Zbq+qUS9Xb;#!!z+8U0)J>>-!r@yH3iDz2FA}GN@4Y+_Vq!o9Zyy z(EkIbcS#)ag&rxv%7*6WZ&(7&$uRvyj^OZv@wV_wsmMP{3sar?*)UZK0lEkZW=~(7 zKkBQ!Q@UT63&9r}g0b}?{4MsrG%tbvqmR+Fb=Y*NZ_@V%rgi&Fc6@DVLlfpfG3Os3 zvn#COU+S4W5L(O}v-59TQHU|lx$m3&AT`c1C@?gc)k~vppY#{@&0+!?;MruQ}iQ(9%D! zO#Ipsr37e%#*O_(?{xB?eqrCcZ*yrrOj45(V2r~L#0&*UoA~X%DcvuDIc%6wrG`AZ zNqK1DAWC*xm!zlz%L?m0cyM!>1LGXVKbw-$F(K;0pA5>NIb_mLhURZ5ZNR~S%7QHw z;>Qr>!tF&I4-w-pwL?Pmw7-spmSl?$e!^)!lxwxN9no<8*7V20S~yLlCg8Bip_PSo z@7{-l7_RcH{268>(>%!!9%OOFfd{Yd5(GDCge}YYVnEG^!nkKW{J; z6=8k$!15v((3b3o^~Y7mO)s0^em;(VVH!(ChR~2(&Py6HlNJxqpSOv{1B?b~SQwt& z|5roHl-j1+AcA5G3vqw}CUq+)T(*;r!%tJi(8$YV{}CK}2pWlEPT!`}!N?ZCO3`9SQ~oAAN4-_DhMCRU0XsOQez66u$lI+v|#X zkmF?dQJBGLKO=zPJR|1JKa<7cu6%incs?WgP4#g7bHz^=8dv>plvuiWe)^Jv(O>PA z)cu0oM5CqO0)DP8>;>x+6eLG#Buh&|5FA_RW4l?xIiY{j_Xec%FbB@Xg`U0g{d@|2 z5M+|zZjJqV?-aN_NNj0phL6*=h1ErMEz_PHlM|N_)X;)Y2FVy#N8V?JG9~OCBOfuEpB2@Jq`J12{Z&)9mrNtR?%y z57w8$Y<2u+piN5rv$1dDz)_3E_ob)DGZ%tn z?ht&(Gz%p#a?M6hzJ3pU*>9=9!KiS1-28X7*=aA*7~IdF>iWyJpfM5eKQfA>nGt`^ zivKnQH@!@9KYRE+{(Iw3=Y+lgMa(?&;LX1^oQ=J3mAq5Iie zf4%kBTYtUv*Q^QN{$oBG+6$%Y=Iy^>W;pu?BOmAf+k05goE__S-2$*ja8aRxznOVa z&PBPD%Fz&YWPOaQU{}8@sw_`G4zd3oCqc%PM|8GY}qGz)R~Z zKE==aHk%w+#KUsDGmmBXta3p8GiY12v$UMz=duXIKI|!dy!y3 z;z>Ss3LYfkZXc)b22;J~Lr_8#FWk1gpr!!Y#`2xQsqTXi+IQ>1N$psB!53B*RvzJ( zV7|*Zv`bWxw#HANve!Y7%;Ixyq@bq(HegW-tpc?$;cbO-p($~>Xr)@dci_Ve+Bp;y zv-u40Wa_h~|9xBzOzZ}Bzf({Pzqb5XDda&|m)>bqR{ZwY4%e*w?T!jJe)zJC;zv#v zoc~#)nTu);{feLT8)zrzKO2LB0C)QI8%ha1lK(?ybWI%kS!g8Zi^gCdrhvj1vzJm{-6LJ#Z`?isS5z;^C=B`P@P>*y!ec5}* zu7cJw>+u5{hr+CD7v)d9yKidO^Rwg2_SK@^%A&UL3%P>Kj>+wK`uRb;BQ&eFy?ms4 zUq()8oHT+Ma`n;Q$7SxsmX$sLg@1k~b=R?>} z{Oh0DU$yO}1J$;9Xf~gLW6c$g$Is3?(fD)oAO3A)AT)!v613wXSfc6MOCA}PNfe@$ zf7ge_qweUD+z*0e3SMo~)`I_*`4jV^;kJ7%G?6#Y*+=bDwomfnQeylwUYG#W&zA4) zdpDFGUM1s~8fVZ*&WhXi%Hf(-f7k_KN65PMpBD&U7CpSB3}#a6(JxU`enY-M3vR~p z0%*@SQ%e@6J<-k(%+7CwPd@{X?FJ4DhBrmfoD6{+wfh$Ta$AL)erP1ekE5Uf{rxZa za6Pt`LW0Qg2hh&^Bc9v=sWF%TYJ}jViC>s(mIEpo-I4=WKVkezzkTn;0lB_V>uXs)gftxF5~PD< zr6G5Zr+@PO12Z~89>uXpA#o5Ey#Yt@vAXZ(1?T6&$FYC?(|am6&N+bggvVbT+%(U4 z;ru)%y>ly60}?&kDQizQF1aL{ET4u>>5KCHv^qdlR{uo!XCeS>5U0S9V?e7oK} zR{P5ItD2%A7)pTREHwE7oPQ96H?8^8&hn${Wo`-Og!`Y;|7^?0 zJ^l14|{f9A3Rm;YK}sUN(*<_{yYQeY;yY=3Q2ZE;;whY?wE)zJ8T<<8Yb z4R9UoUjKB&oGJa8JyLM+fUYDU_?x~YpMH)n{h7T#z-Kb8wv4!=SIPj6mk5n(%XiCy ziFq+e(f$wr4z0)M_wz@U!+)$3*dKTp59YgnvKeb=5f30hkW7u_?6~bOAHu!~_Yzo< zXTCZqF95Ci4}OaMVG;KSxMTS3h-}W@xwkCCzS+=%_oZlR%ySOC4Rhd!;qx_ueh_{= z4k9Jx#s+pl(7sdz?cw=PfAQnK1}ig2dh-V~Ck~exhFSP)#=qTs;XnW6VJ=)|Yx@4{ zyKAvO$N|O>{1r#xFpjLhG);bJO$lj}aHjm19jVp)+W{ZtD}J-xbx^>vFpr~PCLKJ1 zsckW->K1J8V8fC>95fZk~63 z9tIiK`Ayj0<=~dpab!l!#SadFw!G!DdD4I~+7zGr{Zsa)G9ID?(_4*y;y)GtO;h+c za{V>wVWe*SZvNl?`h|IXkCy7J1c7k_{BcL)a1+u6|E@RkYnMG9VMT%^r8lYRe&Kzv z+G83j752P+6z)`ZRYK_gsn5SDj}H@#*l}h--^4d|16OX$bnMBw+P?*QS zvP{=!P1Cx3)koy5eUZgW}aY%ka{=jB8LKwY#p?qaeA1 zXe6)SMGZ^_smnhgQ2A=_I(W9f6X64(_${tFQrASGuKhx2SCY{of?zhP$7E>SAoE4r1hP~x?GgL|5hQ=69lwr=AQ>9T28lqmKblDj zQJ5@q=VK@pnh)2)G%SJ5g`lS%A9_$w%b|?V*YlG02@~$_lSWP8XP_C45h3~bqXbyv zztuOj=cVluX!iPzyJ>P*a;?et!$&fOb+1A@;txAvve4n5FA-)_p^1^pM$Z2{{Nf$0 zv)dktA9aXN6CFC-_ysBp0X_>Wev>XKPCaA`ym0dk|HE~CmiRD*phtWp8;#`S@IwfEcp7jjAn7)shv=-XDYv! zL1=so^^ynN&>5QW_}~xu4nByNK)XaVlEKf0*S`(TDg;B9P$W_Oarl2S`YFt(<}FM^ z*T8osKl)lX&Yh5#0A-x_AKp@WU`atRxkEzW+P{s>VPC+nD7ALE0r=o!(0>(7>n7(w zjTs1G!m|Z_iyI)6tK0iQey}NMG?!0?-){LS`42$|d|-}*c~v7=3gSa5G@V*LJt z%S-AGE-wrYhah<%G!&0*F0Y3mgxa_GkR0Q`8G>RWU^|*>sg(*!%m+y@$qGd$K_ZI0 z5C6QoV#|vMxv4^sJT$$-$c#9cu&!D4r1+r@&6qbaH#Q|Y@WI0nutSiX(gE`Wf>1Kt z2nvGDG9SK;`2eN1e_Z*&QOF$Zc}A#a{82-!$EA6Rh15vHd_XdrC;is@%8m(RzuqgY z@=#sVi_nC&`_ZY3f>MqNcHlFF(_^#g!*tgh$7+}TdK*le`mB+6^c2B*9fYmWL@T5T zOjDV;+Ac|P@BEm%9;L;Nq}zvq^)^sX9Y~3vfq^tXGA~Q(;7dXm4PRuU$B{)idXJ~V2*q^4wFA%n=S#!>Iqqw{Q*#ES$Fg@|ZJ~tg6`IKsHVfs> zN4xnFVfEAIzg<=VoE7~aH-4_4hM(AvAeawUH-um!IVAw0&B5gb^#_*~2S;JO5Q`2Q zOJUl21AJf~KmVi9|LNx?`cu2WbpcEb<3J4FL)wY|^7)^WeVTKaymIKz?3NsL#czgZ z(F8V`41Lki8+U(LQUnv(Hrvmc|Jk5#3N_dP2?r03fj-|D&<6_}*1=^(^%yTftcOW3 zRh=vrEB+VzEy~6w$5=Dw;~){@Y#TH@v1!TqHw+3k%V$O7-HW*&!r$_i1&73HidwAL zy6`Xray#kQ)pz5(i8=AuAKu6QaNNEL|E@gr0*%W@G?L-(*q(p% zS$s9}5+OwA_QdyzW9v&B4#3AW-FUR%^%HFo`lLnp1I^;V%`cpv%T%_r5!&R8nsPkr z17FAq0EfIaPwuXus}7FpK2tj+j=}pGT|PW})%(X#S>f{T!y%^t++oN&kL}h42Jr=l zmSZsnDQ_ndjYRQB8F-+19v0n3#+;RBrMloHY z_@e}zGyiR5r#=4JJ`cage~cSWAaDGIXRAGjWOmqmk?HEpTYLWUX0uNscs~98$1bY? zJpOz9=lEgp#vhr$E%Iah{ZGcqEGB3>Di{nZZ~l4nk3)pPn}1}2H~+l#=TlyPdk^iN zw`2Y8nHY`-aPjawS1EqG;rBg$-{+F9azy6o#WD=cS3$5ljdhsL@|2q~uQe?Fy@@Qr zp|F`w`J>`zI)mmjuJ8zxaW@Xe34`g1-wgxF5}3yN3<_KC#IJDO?bJF-v(ltE`OG-W zu|5OSw4UCXu5sSaIw%2W4FDBY07^nNC_zdL)0J43*Es8FeI-ci@R@OzB{Nu#fy`r^ zc??>fWmuLM)7-F`#z2^gpK+F9XEClp+rwwYspXiaZPB(VewNWR)?+!<9@cgd5AnI{ zxXU0bqCMJH#ZNelGo7ZbJNFvW^Vyvnb{W%qd`${dg0lGiqCa6kBP%l-<{hDt3;_|e zf?tGS6iMV7b(&3S!$a9)P=VDLLi86*lgOPX!f|mlNkAf@vZ4Thw()2A0hb@-SkHk7 zv)F#$%$F``#|FOmg;mfJ3i?r6Ii)p;AT;pi^OA?%4j-n} zNdD}y0#_*qf0yyO@fZBKU%D0Y`(B{wT=1^vW$h9Y;Dc}bYe#D6uUdR0!>=Ly^VPoh z;ARSOLtW0#iM`;51E6^a4X@jm7f?&1_oW>Y;xnTC+h09WOQGNuzaEj5-52$iz#Qen z@T(nerGp=7q}LgLi1Yb4`Y(O}npG6$)0{T$0soC*2rE1NSpp^mhZXv}EFqh)QHy}xSXTxc|bcQE;#PEBnH3aTk604!_9+zGkxq3D0_ zp^wTSD5w)b^3!8;$ccG3FUg0-SqT0nlZM{f1!Fzff{*k0h8(uqrU?nqI8Pdk0|GEL z+WZ0qyf!aUCe#N9PR4w_cY5Vv2$GGUKq_l}r^Q;wrhmw-(13?IWbma0AHMTjFw?J} zH8wjbBR*>L3;U}+{HtgPn^ur`hO-?1WEN@@iup`t!^517y8O{$87b}KqG0kBzRj1m zNx#%YWth$nz?Z2xsB$Cc2+WEb$o$KoEoEHNGP))Ou7H+bRIK0H^1{LD58)HtRSIRy zh=L$8=E~m1^#6?ZThKkebw*b#~GF8T))WBhx&>i$<_$? z#2rW<&^UPT23$lCe|8VJOrQW74@B400H?z;3WPeydBuo?G<5Uq167;m?5_q6*&jNM z%!=CzjpS8-l>NbngGPC=sWG~522(o4`>%UyTrL*~>;)7gw+y=-YyZt%lW7ur?yXA; z+8Y1lGY*qrf2ePIfdXC=geR~7AwH5TAxOslKx-tYwf+pgwOjJgnO&0`svASFE|brL zPB+Y&02d4~fz9wA4d3rFUu`y=G5^DDJo)^~gpcH_arlfq`_i4O3M=-D$}zi5Isk{E z0`fjFE<0YdZIR6P&w8|b>-<9w|50A*7_D!v6J|U%2BBe#3V27xjxSS{Pk?UuHa@?< zYV#auoa52-gLx;#AuDyuAw5q}+?%F7MQv@%H}?iuu0jdUX-jdXX)3^~BWGvD8{{%_{ZomqF*z5ASf_THah_3u@xRR+dCMZ0fu zYat!JBGH+*1VEd(6&G@PLrIjzf2L1i#>4mgH%L%`>Y1YK{ZhyK4Mc@acR&<@;A znL%c*Nc+hKSy3fnx;F+^!50fOi+U7bH1y7~#KL@+xp~2}R z|CQhBbXSHd4z>)=Uw62jBI7IOBr~nh6N3CjBmCEa3m9i{>eLqzZ;F~ze+z7U8y#P_ z4_c5D)TaM!{i>ApDn^-M*lXauWxZ_j@o%*@>&?XE8za@#--in~&Fcc?&bn}-cnCv` z_IN|}XKJy{bssq*`7Zv%E=RYv+;etTXKu^qWM2z=CWE4Gvs;1?E|i?bDMC)a(!P7& z82#&pV7kH4!1WB}*mz{zxdtM5OokC-wz_5-7J7^p8JnIYrFa9KjEgFUWxuo(FHqi5 zravZT%O1fuy=4gx2jZmdG?&1G|~F%IjXF5T6t~^=RxhCI3B>t`~}uk zzwA6t(KMI<5GM6UQ~{qZ0;q#NZb868D5I$lt*N=IZ;n+djVd%<)tYc{S|aWnvTWrF zpBrKnh?<2%faT;k*%Yu#tM${nKtt2|%A!IEt2v&TS67j*nHpsbj%-*^hF6 zqtM)LvJ0O4GL5xydy<;-cgw^C*7CeIAoqHeOU7zg>Ia8NK0&BMGeCiA{8m`-2Rcca zvx&S`K6sfzVkvo;F-@3b4Il0Aaz2DEH(WEVxwskUB{$+x8(&>-{1)^aHnq=%l~M$V zGwV#~BydKfuKQJ$2*!aR7IEsT@0M|a!&4_u2`B+z$crFy&Gi9Vc^Hm)%+s^dd#%-L znI?LzB@`VHXKw5%PY4@B7#7)m?m=R72um0ijB%s4q#~(@s4jfr$*Q;=9^wqos-D{!j~sHchoGzk#G3?QPd7iTVCYU|AwE@P|H~r}^~$hHRLteLqngzgCm=&< zN17LsbrrrHh!OUByKhNHFh` z@ZW!K#;|uv1QREO6R#;bnTT<2GTdy}<51LEx8)XYO@j2|OD}ak_p6wO7~%tUGDH(%El zpg=5m#E45tvh|jB1i<5;4dL?0iXyaCy(>B$m*28rWdNS*rrk?2c}E9qW5(}cQ_EB! z*(KYGnfcKEY%7o(Y4KWle4wtHcj!x{*m2%{GJ^f&Gc)~Dwp;}%4M{F>#<0DfIhkj= z;fTbG+VW@Q@sB)#AY}^z-8r{sZhOi(D4+yNIOjbDlT zNQ}3vk6F}s4X$y|$c2RK_ulE4GdhiQfTa&63o0r6TIHm?Q_pF!aR>Ut%A7nlD_PRi z?>TYE#|jg*kY)`gsq z6l>X>)hel0GL?osZA1Z$TmF_|vRarot6^>Ev3rNUk+}yGlI7d<=9%wOXBfajIZmn-w16eTq=Pzvg)10q-XdV1y@f|FYC0LYQ5nWMLNt zpaEa1=#kL0 zo-^9G65Q>$x(=i6l_k}i5}^3?6HjtuonVB};G1F?eY)XDhT4cx&rMUVbmWEY6IreB z%)fR6Rz~Nh1GWrh4i@F_e^rIr7=Apq@F!)odt_K_{DY==l^X2|jK?cMPn!mG;Q#ET zm~~~>Tow#I*4GfW%MA9wfflrik^N<43P)SuR$Sl29G^HY!a%T!J!4$?o+aLcGo$agV3m^^+;1xeD5J#V7FuG44R+#EEVJc0CM90^|6+f{B zS!$rAh@Vy{@Mke4Cl!j>#7YOsB%%Olmb5DD=0z@kjBptLU2of5M7XW|PG3lY`rQ1T zAqt5w;jy5Ae??<|3Fj6XAX6qyC&{uEG~3hK+xIt9?>N3W(<%KFcv=G$GaulEC5uK( zoRE~i1`-jN|j=dP#2C!fJH#NX3*Q;EP9c?B(?Jf5*u zHU3q99gC%W>vhR4`7^`F@AUMCUnTA_KX1g@(r9|ci2!oiic;Yl$|kR_7VJ57uV{1h zq^^qj5V);GLh$+d$mPp~bS=Vn`}jW?Efi7#e5*skXgg0K>Q;wLCe$?drQW9#+OSe4 zr$iZFst`b#jP8TdX^n-I(IC_2{^&ag+nC^iV)u$q^5SWdavZk7EDzcd;GSaHgpgJ_ z@yVmNDKsuv<`x~xDCFQ%wX!lF3&tRLQRo0&`*Nfk`#~B$e!R+0W{3#j$k~GgC5-x8 zpCAWokgqSQKz2V$bpqj0_CGC{1?dzy{4pga6(jVye){CK{la))r~mbbDUCJ2;*DjH zmGj%TdHrx09&!L!(g93kw zL1%h3`~y;Zd7lu<><&?q1vF;oJ66)oq2{9iB3^W5 ziPizAU068yDEoZcttqHkWh=UOx>?AoacA7UeWz4-U?Rc+@a~(>GNE6}7vpcZXVR{z z+g4{FET3)n5m42&*nn_ZjWg-R;kMOBvYlo|R1_HUyq961G+;qC2gIDLEW-K|2@1JO zLAY^z|3zi7!H7;vF)g@b^J1ESzr>&1$OzMGd`AY=x)Taf@ zZ|RuI_ke=>USY#=$>^2o*r9;INsxB+DupDThJthMMro^~_g$4bJ_;AvOgAC_?J3{Ww~dHafNNSTO~n0E!eR%&tJ--cP>j7V821O{@eSglWt zc05upI(=wkr#F4*lT|+YTz&P;@Nk>16Uovv`L<(kC)rHN#rT_lt(PF*9U3uo?J%{8 zzZ2JYTX{Y}wc~dZ0sY`!U*^D01_<&0lSBe$Lup3`Hy^d%k$2`UFA}|64N^hWWxT0p zF_5-o^+O|t+8z+-YV4cs2HZ1~)NcKH0nn74qbJq{rtf)G+XNVYlu|sA=Cn;l?F~5e zp!^=eWb}4V10I2+$+CVIz>UY`J7n?OXa5+zZ}Vdig zR43})m3AtL0=*Uz!iDxHzY>Q2pscb_g`(#(EVc*KmOOyAKq$i#;g<0EgK1nC6C>cF6 z0x;Z8OkM=N9(@&vL9MAA*d81gPvdknc1CSNa1GhAF5k_}S!Mn>Hq4>V@rQH$-``*+++1u&M~kT&jyORYMakG?0v3bnRRoAoW+H$e%& zy(d>pYGB+z5fSt`J1jJc%^xd}^D*#>??ztGt+mnl~n0yLY}!6r4yMaKUFq-^+W_?X@+&3Ah0Jx6G-zKXQqk|V^* zPq!tQJD4=gN&X@lwKCuug>52SsQFNty5?>zsbK=B{&-(*rniS8A!w}he?%(p5KCvz zK38yCH)mH<$@aXugm+Hi!^Z(k1>f-JViPH>1z_;Yfd^4(6}e$J zm69m#88P__1rc_&s1XK@VC6nCB}@&IQQcjVXqJJiaD28hD}`zJY0@IOath5tv)!HT z?Gw#$ft~1!6?Itsu!D#g#}cZ$_K03M%$kzAIxOWace{1dZv!9B6f6TG>h!_7Hi z7NnH2i1Rt|E0cxG%`=|pv0ujNpPNwUD-}sCzgR&}3~CE7gRfQWDad;RZ@czX?7R9$ zr5?=&-C^wX1g4J$Rto6{?Weyjd!!r9brz>LZA|sgA}JK>Q^#3X^|h|rf9Wp01VTA5 zn;~SI@yVnUf0TNq{z|p!9ASY|M6pTRO0!AX{-CI~+d_#<=gPh&gUT7Sh_%6}aMyon z1anoqdbmop!cPTcsNfK$&t{L}f3P|6u{xbSEB4~Ogbh8PKFnDt&>Vzrk1u5Vo8SFW zsNUa((&aMZdLC1GV$aa8*0EN8ga+K$9bfI=zD@iIhf*3j9Y!7A>eqs3xpvGDo-(i* zo5_c%`{4Zxl~~>bG(dX|L-&tGFb+y}fLlgmnR_l>9tWJ1yvNT9zypjOH#kr9Rx6Cn zWT89^GXcL_0yc#!%-~Ie6n-eX8{n^bcf!`l`^}tSDNw&JOUkWIgKJ2iqVB~sWTXQ- z(VB8A_PZYRyBiNq@PLFOoi`~4=J&q(|M+j>J<%WN`Xq*(`7Q9Wod=SV+Unl`(JR;c z=^qO0*+6Ff@OaW5sqHaz;iAC(Zy*5Q+6`rX-IV-0hcSnZen4(StU4v#H6RkdVlp2E znIWS3d+SH3^piu4_5nIN8;(D%wh*rJ5=E2zGDSi}q6~ATQaISsoBdYmF*>9Wj6otn zW|nEsX$9I+;%JZ9vJ^fY@jpBqLc>`vmE8y%N(jRC+AAD?x<37Sp=}D}s$?=#T6*8$iJw@nNHD()qkxIlw17^|3!5BkF1hy^lX zQ^Yg}4)!j|`)`r{3Lj27EDN@9#EL$aI!Xed>b+8>cZk<@j|LxpI!y2R{EAfJ$GvFm zwaSlnE9j|Uk)(eKGk}~v8hp~~0zGVw9(a)Keh1)82mDw&9IE2^KP`Z3ZMatN{6D(3 zx14l`YXqTEreEoiMCMS{WoL@^CnbHA5bz0NFq9~2$a1}V`zN7)D1EQ%YL#l00kYs? z2@gpACnUJt4RXH#jD}w3CD6$&Pl$xT77GCiliQLOA7~!|LM)21n@W>4s3{wyroR&o z8M0)^33P5RNUo}GQnH>Y+^OyH$0nIpgHZ?iPDg}9XMQvJ zKD|~qYI&Z=RPM9yD#ZYy&$~z4MrTet)Z^;lMGcBRa04cGp|=6QS^$W#oZbADU^^?F z?LqfLJ^Jnu+vgxdwSBvmD_Oem{k33F{xK{(V1e15b2D!8MMV5&Gy`lMd)Juu1(7QQ zOg=h%8Cko#<{i=`hka#aZsV(AmxC8%%Q$}2bZ}L>PnZj%soOBg+HTr0@FVKHXY28ljUHkr@oNPDS(4__!;Y%z?$mUmhnsEM1NPhT2eml7$(sfwv=n2^q(xRv5=L zta=D<13DCTYVYU8H6lWIT6WaTIK-V;t|rS85Xu96X)-u64``gh!^gkRDFKMUd5ss% zKST(?ZZq>S=LEXGLw`J`r3Hl6^k-u5@3o>hNefNP3+9E0RK5mgzs9W|G_jJxG*-J#*=8S9MU>)Mvt)hrxfpo$Hv>B4ZhI zvlQQoKIfLCh;W$26`5OM6M~XV@u>ZiW_+nZ!`XQhZR85npgowKV`<*}?yjlH-8eGe zVnPw7-CYs?k10}bpmgAN@oi=0hbvBAT*NGbmXw|)27cWu)X-!A^VNca=_ zwFe(HHjQ>rE~)pKQ3f23ina2;^4$D-0pJ0w-gO!15N`+Cysa-Sy^1(%e*-)MZ>!4Q z3iJJV+$t|xXDKU9M7BA|vm-^|y5na?~=!xa?5uc5r&gY_0aL@QA(X0Pfw6-3ShVPBJSE~OPFi-it1 zAIY70g;z~%B-NW=l$yQ#pz$7~Y`3aCil9y?*iGjPJ`vH!7cT+X9@1D?KE>`TiF?Ca zZ_9Cj8YY8$A-IWqrPp?vV)>cbG*Ni0%uWybFUJEO`J;JB>VIXu4OS56cp)qFqo*deD%AM7R(4bpzz&@yUTOrzE1C^b+x;jU*xjJ^tXRB zHN>Z?YxPOr<|TT)C8e;m9l!+76~hkO6NQG4i&7#0U`nR!+o4})^x4`#ML~IjOXrwC zmT+>7w6~&=Q3;gCLz#;1YHXE^MAz|ErbtM2Nrd`H#uS6H6#ly{;Vc~$%Obv8f5$oT+pQhd%1 z2;vzWwUt}!LJNAlQLQ z{Li`AS2hzoWl~ zmKQZ5q!F3B1u++pnLfN8nT?VvY~WACMHFA0=OvrHgKvF1eCETP z%HVncp1ONzTcoB5{@}2n*QfO>;YJ%VSCO}rZtpnNiR=9~n0+O!2hGaUK2>-jRT!Iz z`_EX{(7%GrIra=Cw%_~N^vVi)WeHw!=}}Hu^0zWHYt^R5A3c<^MbVJ%fBAItgnn240d`6th5d%7AHm~EHHbNoy-Hnjt# zVl1nM9oKrpP>gt*>r?^9XSdPK1xtWH3eDPwxmu4dR190zg$A| z(5q#!eW1e!xEa^p&_~!V=0W%2xs~@@z~)CXI-DNnv%#+b)*Q@_ctgwx-xBhW#RL$% zMP|2Jf95u>OeQ=Q_Al=+J5de!FNSX8zAv+iUY{nq=A2z^kX#SCbFe z*<FPef1qLcR? z;?QD34wR=W+ncw@7tl@$C-dxhUnem6g#*ohdPS$B3IYA(P%?Qw*`&F{jJg`3h!)#c_3rgThVB?#LrRJpTg~)MlcTuplf4f&+Dt7en2 z-FSbxW1ew01Z_Rx<`eo&?tDgZ;Phr&A3jNle+)W=QtyJVS8Y(|r@{~!-QP*8nwGf= z_cxn^7f^sz9}~)U!T-wK0Kh=C@qjIP^zo^$T?10sA9c3?az*_2fojSMaz#C&0#T>( zIAt|bXE}tDXQQQPo>0)g_|2H>Z|>`~-&BkkK=IG>(KRjrq&2&be>e^dyrP zdRIIkn)1iVhlsix`olJ^;i>lDS25a9vB~c@h96gly`1TGjWgZxd<%AF9)`4;1IyNQ zp=~3|*>TCfHFeGG$7e53M+#Wd-FBO=2n=F(^GWqg)$_`}($^f)4x~L77$xcv2CtS_8)>ExPAUyun<>z)rkz*ak1@689E7#YY1 zSdEuRvU^R{4S^V@foe9cAFVAWj4~O0XozxO%l}%$c-S^Uq4^{!(&3a3ruLETK)f`r zr@!-rpV_=({d@BgdOsJKOP&hGStpsqTM``_N6QPmY{Ce_2Uk!mokiO$wL;91@$BFH z!{?4ym!p#{1@}yyWO_2UIlkG8Dk~BnIqztPA1^yve97FjJ5XfPLr*oEF9$T;jH3Yw z*ak=!YulH$8r0hh8GofDBqFLy&e|~|3#i=$0s>WsYo(GGmNRhn_wey-E_aa&S>%Jw zE!led*|g&M2&qX%Zmv8_(at_th`tYHcRvuul^u#OZKGCrIsFm!uiNAU6-|AKa0H4i zw7z9Vy%Ea`QWRq;`A-sKfpGodq{JtbzT)J?a)fQ%Ww8MJAlSk3rs0bKPoS+td|1{z zE8V{P8Z77joHY{h{MyOx{zsuhQgYF-P*dD2SzuT52)f*CIeZPv9*fgtKgxcINn*?} zWUi;P`3f~wG5T|a?dDJSIW+pSKrt@n!uK#VoY=(f{eL~?X*CsMyFd9nSaYw*UHMk= zLmfVs`=MGu4DmhnxMc_7?HS7~2LO~bS-A zky#GM?KTJwY=(%8$KdhZd#3141jSB&H2>>e0UV|N_b`}OL=un7$)K0RNr+=7CoNi* z2((+^P4Ow}5d=HzELW`J9Xrs92_C8Zs|g&Hi%=|>>~;Q`oyH|6Vb}S@n{eJv z7#K^pIn!DuDV|pM$OP9a8vDGGBTXe*jL;3170vB=eJ@Lmq#KYEAwhk_cDFpQ9B0~xFdn;LXRY5Jj zjBhQS36&@|u@e1$dzWrX$~ih#w49*ESy?huWibM<>Ls=y#0QnaWC2)A>f2Xo=1ziW zthmDHfjeRfTOteTWRDk^KT==w=?&%qPtmR>`jly=)3o=FHG$nre>B8C5*(X$UIf@D zO}%Bgk|#pe|2;f^p514|av8l(|4M{_bfv^dGsV*#oVVsCR_F_E0J%Sp zEDCHE3bM9Wc`Q6`Ff}m`wIOA;XV>gGiU@H%`D*3q*H`UjU^7^?8B*uzMFUot z#)F#HaSFYpvop?^9OX{@R6T<<2EUGMF>4zxiOUb0IrHQpiM9nVA}HB=%``SU!PK-aDX z%h=om)6BIKdA(5|#i^GpjJu>kRz}5|xm#01^xY5S9F~);0R$V*e?SycXL;XkaAz+h zWL&I+V*rk5|JodeYD)97RPn8c$uTVECl7JOuU5hk@??(zeLou4QaL|j6r6l}!W}BymU%u(Phl&) zdwBMMGCcs02iOcYOK|^?3=fo=qowRZ)%M9QC4p9QuGC&m5B!s!9k^a~w?lRk@uA7Q zss&2N9jkpYzrKOA=Fw?+Gl6EYen$s70-m7VkCZ~4-H|UUqD8x!0s~I#mUX-Y6Wdp* zeyxJ?G!3GO?a~+&pAe6FPc&TF2;Tmu>~(M03u;**UeUHr_Eg`zJv z2vxyGSvE#m&=a#c0&VE$AcZDGmv}8KmD71^oiyCW2z&_~o{~iqgZdM5z0sMo-YCk~ z_mQS-N2wJjaxiejzeR`xcWN(L@<`*PS*R*P)QqXp=Gthy`L%eg!Arvp&F>4IR8=-D z%%_gi9)SxULvJu8uBa8}n&%__L8`973nU4(<{gzG$T z^lP8;2ua+JR<8Jd9v#|72hc#WnObxo8};u^ommVj*HZMq!fhIS_ZG1JvFFh_*xFqW zM?_yOx~`2lSd>Q$m(hrwprjJ9NU~oWmPm6m9^6^;Bslm5l!Doq89seWssYNudIf!J zf+47*^%So&NQ=eXR6Si{dlfOebtOHiq1+U_K#iN53IA-e-*97d6K1MLOJ2VCZ6el`rC6Bk6pQ#ydwxr*19Bs8+CuR_~GS8EAd7jVQF`N zYe0TANUw~8nz2^yA_o4J4s?kR4*m2ScI28d@Z>W2`zzx3mKj^kTq#d~B|&&p2ej#- zqV7ihT!Mim1!Huyf_!eUXVy$l3C1QA4SttfP9_`~?4@ddX4d__LwoXVLSv*j9EKLq z;v<;*M)NoFOsYI-{llE0RIscIqvoDZm^kyWa2Fl&Wuab|KN5{&1&fC5G1)2EF!l&< zcDw2l{wb8=EIghA7baV0`*&et^{R6WO|YcUiaqel>*~rrQ&FbpH(#yjA8czaa?T)S zDp=R`ws!u8n7Lbnf$`1{91G}il|qHD;ok8?VV0U7qi?strv>6iWwm3f3pDtf56F=x zzK3D+I^_-D+^u?MWhI`|na3%`GqBM{Z1o?^cIzclJjvXSXMbUB=7-v9p0pC(ZR^75 zfk#@+9d=sYM&!M+AMFW1jm(Dg$DMw?d{R^f#7-2O&ko>#^XQAmeGkF-w9WAdzqo!A zuJ2i$?6Vn5epN>csLE1kZGj)j?8k3$sEbSOg>U|DkKH`U)oMBrUT0Sju}P-{VkwC& zm9T80SfcEPOyRmj{(_q(sLoc{QIv-X)6E*pb(#_Gk3IK^y-(xKMP`JzxEzuB)WSqX(KX}_9o&;hRS?<=gFs6$3FS3Ac zCCiTccJcN6Ifw7wUwpuMS1Vn_ec1cpK(hzqcxt=tEKL?Fg?QrGO))Jmbe=Me${~x* z1BqDu`vdG?GrW(^r@_ynjbruo700HsU$ zcG~9ET<~>gB2rXf@?NNvk5&|yC8P%6M1cup@H`fdw%sEgzISE}z_LJnU6F*@9N1ASK*wxg#O`~GSV9P;1$vuH$) zKODQ%+MsVD1!;PlHla;)zz~5%Q&G4QU|5{t&r^av@oaxLjLF%G2P}UG-gi~CDczB` z9xGn`eW!?>k$C1~+1dUEwJOEJb*n5ruZsqPz1HEX)5OI2Gm|AJDjvUOVD-^C(zde` zg*l+fzuLd0r7ZUcR89U)7sd04JrZA-OxniJ_Sv$_>n*Dn$8B`W5+JyKM!|23x`lhM8mBLZ8=CbBPtWUxy2u{~mjupo|084DT#!R(G#BwMHrg;B zmEQz;u&yz~g93%jMGiOWhnRyKnW(dv_j56%aMl2B?J?t&(v+8abc<4g0bVAEwduDrW z)}5v+Yaw5pz+&{C+&-=~L#i4z+Vi9M)Qx9Ci7K`it#-Wh-29y5Q8xYvj<0R<`&M77 z>xv3GR^v<~(-8IA9D`r@Ij=_t`GswvPJh{Dl=sxXs;(V_!L77NeBr0JTnlZ>PDZHO zJME{XHwkYx0V#3eEKunWJT-lk%A266`x(;(0yPKU#IlS_1FoiwO!F#B#}fv{ z%46=3yJ#VIP}hy>T@kANhEBAa`B%M*GTr&;>+xo|M&Twc!{PAsgNtjO7Atr?YvA3t zZ$v(XxtHQW2k#5fopxzqU(<0mqf0OU?fm}4#gd3^p5TEG(h(CrBHD9n(uB!2)Ivp1 z78_S2Hzew-W$n$Rm=_F|;*uSl#*Of?q!$%c?8~V#pZpr(!_H7t5KF-z{WIrdpC=+- zBhjF-D7RsxkB?In_SKspe!zIRW=hQi4{Mi%NY|aRtW`-icPhbArs&C`81ytmCx?(Y z=RH~Qt5W%)QZG?WcPg^edWGG%(fl&^g+f~gy6jeDwDSsMa@=_0z_N07g_8d#(01c} z><8*6FQQ2MN!3n9o{hpF{d{;iUWHE$Rb5=ZPbQe5#39Pq3t1a4*eSpa0D??B6Ta_% z@iax}YUlcr!^o5*KS~KZcW5+WPhXCoq*7Dm)9>=H>n^`?W(rrkkMPM|e4(GRz~S-! z!ASjESi6d5(B3fTYa?-xfr$otymgz9mDSGq?x?U1N6x;u!77jK_ogqUDubZPUN=X7 z?B*to7G22Zz}@^A>)5;JycKuvUURf`=s+Xjs1HZ@84hM?Mei;7=(+5bGaz4MgAXx0 zkJ?r>a)7r;Zk=40Zg4ZIFzAgE%_|E9bHWJQej@1~3puGF1lj$^IzuLdwtw}B=`ZOMlfG24%m# zc|D8|ml*z(bDQvh+EnTV{O+4a#z*VBA0u

;*k1p7k#4lTyM*+po)YSILc2HCr?V zp9R!&E6Og{@4`CN#X}rEj7SD@s5Xqo`{+wxCF%SA=J8nLfULT4(nJDVp{`O>gP=Gh zkO?_zaq;`#*C%s0&u#~tGc>6uqaXiHT%!KmC%1~`d7x4en8pj&p5|Dd3pY!EbeT%P zm`Q-CBjL|Z01hv*`33SP(Arl!DNa4E;rHzaiP-oUHCXk92sLz}eu@BS>cL6YTO9Ct zxPPTAt0y8{y@E6ZyabOQ?qnbnQyJyN58RJF&8;FIoWc^AU-BX-9o>#z5<`nuiklX{ z!nF+RK2bvh#bP}bFVe3^2SruB-0fkQx_(F1Pws}$`Nza>!;quF*)#GlWY{@I%6aQWw`P;Gpie=dr~>zFYS3-^+yzKyzhv5a!? zC@Qr5=YKT+!KHe;lz^u%JXNU%htF;Xt7&S|y6^F$j?xYw(@B0;7gi4lhpRagR3xR0 z^8UYI$Ow2lqz%QS;CGtbhK#u58mc!$qiM34Zi|)=Rw`q+KcU(-K^7}AQ@5#I0P*Do zr~Uj$t3ky11}!zaguvjOXj%-=njDw0i|6g`#aqP0gd83kA}WkPj7iTKsf@FqY}w^7 z0mmI*poQ?tq}Ll2GhGo0oQLaw)@cWHmYk?;LP=H>uB?%b%uq*$4I1D+SiN&cHLV0X z`P~Z=yr9Gs@E^6oNsej9B|%hqu0{9Tr1-|SvivQVw7}e>o&>J4>&GPP#!kbk2}|BeCu~ z*X@w|7dr@KU$X4Q9bH-U-Q!osh`YyJ;<7sg=G&4xL?}o9BXU0ob=3pNYR`E2uPYJAjuK{D}v6UElk!^vUdf%8X_@wso8znLi+r%>t+4(|k zS_&4n#jy83izjL>k>u2R6Bt07st2~sppZ!q4PCfEmB_b)+GthY(ar(iESrvj_Z`_& z@%7Yn<06nr@q^>ieSZVPmEg$1PA1@Kfj3)yGKW3KIu0*o#FUq4-u{xsaFsinml7X3 zWgYTlyj?WG7mvt@VQGfX?HMaxq-tKm)le6iv;viou;8fdX~&#|_G-0_pBO;M%QVWA1Vw6pbZtyU2ak}vPlH0AotbB32hnC z;)i!xnJsgMdEPjA1M{7qX6(>16>sKX|GTOR^YOob;gt3D0-MoJFS62ixM-?NtT}RU zuQ~s4`wr%s%nPG($XbDreHq#9vbA|EqWa zxCz7LxuwlGCvzuxyH5q??DFlLC!P;j+VfA1>`wr5M%!I635}p*plv*`aQY>_i+pw4e)vra^^0eaQp!AgWr1f!t3^eD1|W7@{_+p@lVSwn$nx_c%!D_$8I8a^XQ(K}+4>CHf0urueC zxxZgKD*7L0FVmpC1ROfGLKay(*P&=K4jr*pFP#f6#IMmil{9sPtofD38(pybz0Fcb7%wM? zWr--kTMo{O>W1EdfheKJ;pqe)i14pWkDvCTG*fNC&4rvGjzIIAHy0D=;mXY|AYjn* z+`R+$%OiL@;tq+auypYTC2;{<0*L+u(u1eIlSh@JtJ|nFE2eRnRYE@#DvEpqh7Ull zqQ#q~%oDpdfwn0Dk6^J8Qsu7y>{TYzAPXqe=teFEOi#}rc~d2j5u{yeh(*ZB`5F67 zislC$#SeWx0NUbpt-J3PV$Q;1TFK7ZsC<`zhQI$ntGQvsShdc?SYc1&NwN3{dW{ZdkiM-^8$J=);H_;6!}it^S*X%cHdRs<@;XzyhCVp--!WV!SDJZ{7tB)rq~x9EO!#*eiOVP?3OTo(%EaNxt3 zDqJP-OU3N_Du#{E@&a1v%!6;eRlcXQp(U;UU5_m9EXLrruu%2><+3V12CEL3Q=9j3 zy0k7`H~&52wU*2)RdTPDOYED4R_jD@zm%DNN3}Hd%vt|@3Tp4X4lUzJnxt0(A~^nk=6wpb`O1H{UY#AQswtn!2cDjk#_Rjo@qQiOSqbKPHNf@0b(^#_x;yomW=+#o zC61`{jixupWA0P?ai=Bif)Ri^cy}Q}lZ*`2DZ9q-966f}nfhSU40GGQ%KD7#hTP1l z`s7PjTA41!6qD2t;N?yqEQoW~Z=T5TL1(M&)q7>>g0 zT#f=K_XyHX+)=5!QFY|=6Y}n;jF;6|0(TYuw8IZnr>@n#dVe5Bsbwl7{v5ZPW89Ge zay_$L>G1dKpi!jk4yYRB@UrQJ`c=Oa4w7;cXrxiK@aj%?2qkU`7fa5gzUM%q))snS zaId&>3V&>vHtks<3*J$`m-X;ArCkZ0vMLR^$ms7^)=Dt=z~75kyGIA;DAASPU#w@B zP594QubM38avTIq(<8d_Q5bmfH?)vJe?Yj`db4@F=ZIkN@Mz z>}y^Y$O$|ZAg;FkohF-&o2VkZ17mBtj_NyU2-U}D+!1+RMlG?bfdg5k)^0f7W*E!7 zECS4>LL{Zkd>w_Rbbc7!HY|C5HsGrv$!NdI@g6-hyx?PHd<!Tg_>YB^GyDkF8_!Wr#enjvBN*fmPr=W`q1_%J*kHn^q+dUgtJBFp=D^^FQDwE$ouh%2g| z_%Zr$IteLZqlyxCSgx{$=vVi)C=-nuN-Tg4LG(-w$RUJw9AzAJ_4AN6PYpo_^!InQ z;%>OfGYmmiD9T4+^8COdq*xCq;llj1^RLGz*mVp-O15(8zm;-c(NdR$XwxJPpl_UG zjr#D^zr65QP%1qaok|ip=vZem@rf}Zgk(q<$bn7n{I}+W&8!H0b&4xUgq{Df@!5L% zKtJ*H0R_4A-Wc(FtRl;38GP}TB|5+t4E24Ij4r%7(_&aZX3ecbJYC0G+i#_S4Yp@f zCKebfT5(!OuV#!21jLsy>!=!jj30k;_fR}mJXZPWHFi2QtlPS+B#hDHmA5xTm}vc6 zat51}xp5Yg)c*);1yZPdyKS)gBZ&@RL-^~LLS5^^i(+LTy&tGFC9{R~fo>C2GT~mgTj*8_bANpj3U%?Y^%8eyGQxg7*TZhmXbnF9LYHG)qK;*D!4iB9b*GHT< zgfETinrs8AxkX>9JR-9lmG}r^B4>Q!kT!(mzctre(+Kcz{OtdRmpw6iXw)tcWux`W zCDr#6LUVTzPI+3Fn6v~MLUP=i^K#W&FZG&VAQso|M}3y3nuNsds#~q9SoS*7IZJVx zZ}~2`XKI8ywSQ1n(m4vP|0AIp%w8T_S3_U^W{Ej?VjBXyV-j^W)hwpm#V zFW<8U{A_fc#@w_1+ToGV$g%zlOGe7?MacUsC(hq&z*4uA9ig%$H!K;YV_l{kEyGeL z&!R2qH~C$9RsD+HILvsxUSA1pDcFf?y)ymObIx?JW>w9;R8|4gkG3)F7v#e4M?%RFpvWAu#!8tWAL2CHh4n|lx1SCBcy_+f-cnlCq+$&pv(9{VG7 z#)Mq@HRnQEu~AO4U_)h3(i+5eutB-baD&DXG> zg^1T@zzLQH)T~>DiYod|meZ!mxqm{jJYJwz10p&a`*91j1{y{ftbzWT@E)iT2HlES zXUUWJSF(efmFrr$%JGHo#cr8peh*c6`0hjkI{a#kpS>^aSN%uAilMMQUD^|B@bUdE z={~$sn~Cv-%yCMPJ=Sq#nM~>TX59niR-vXjM#e0=$sS8X9kX4fiQG|Y(8;Xj-ycGV zEiy)(;EL~GOF2$BWoAf|8s!KbWkLpHrLh#WwBG1fNsjfI$W-YaDqddWB92OuyM1SD322kH1{%x5h0R6O z*Vq$e0CKmKyLCCL|GkR6pYMm4zg!)s6V=7OVnFXz=&eZb%LsCCFf z0&f9~#0{tzL{{d~66k=2^A_BI(&!{GSFl3eJ9eN1KK?)U-uxe`@c$nsBq>5g_BEkQ zsqBm*Ym5j*Ot$P~-;F3cV;Pif?E9Xj5ZSlv`<8tlJ7dh4neWm2{rTbZ_}=#)a6caR zFT=x}GdR~d*Xy~xuFDRe9T~jiR<8ds`Z2?XSoBzsM!#l54=pzt4GAy~>HSP(s*-0< zrn{_u-Tw8mC!sE4?3qhYhZ}h-gGG%6WC(NQVtXT& z{1-xRZjdH(`<#y-`z(HI^chw4!|jzX2^x}@BWpC6^5V%ZC9zV2T_kQY2eWD#@gBEO zZamM{mH9Y0V~xzNK&dsYEKGcn(+I|9HFELeM$MsEGwpRUBgx}q5w|voz~GB`JJmBf zslvd$@<2U<8HR2luVUfyBe|SCy%mFp*I@-$Hl;d651xe0DCD20yJ!XNs_JR!a?f%~ z`yV{rbTb2rMknUTlkNz#1aEK4Wx8`PF>5Tu@Y|vojHMSFhu*y!tw{N_6|wgm!gPhE zW8z6I>n69YlL?Vw8xGITeMAo&Pj{eqz%$NqBp1cN{?hSf8=fy|HpS2#uJ_J_&9{ff$Zm&!fek|Srf{V}xg+=F(dxnP@Wk1#BETPrt=DTwCrBxtl$ss;pT~|5KA#0@yjRTx5_S0Pnl!-i=uSis6 zl+{(Fu)Te0o8J>>A(O^Y$ITU)^{&1KYN9Kpw0 zVYJdd`_5M!bijI3Is%fC9^9UF>Mfv2UQ~^j9mu9Spc8xqm1kC3`gHY}SP`Zl93xYW zis(-sm^iiyXZkHo*H zqcd_6Hl3ZH`vn3QOk3-w$AP3xWV!t(Jwi`v*+HX)2lN*xxq{gB>TzGVS8f|2d|zO_ zjj*lfK?F9uhkQp`_y!xIblgx?fz*(er)AkX1uG@{`|-htfrH)gLzfpw`Mtiq%+c_> zeuK?V=A+=-jU3?OIH{tcSR&-{x~gbOv>HEkc`( z5UVFLP_HnQ(IO|g@=)>$8>J?re;{RwaFoZFU_DpW?)=YC4-bk=ZPh$h8X8Ti)JD>} zucLfQzg8aL$Y?nwfu6=mN*E~#4Q^P)pb}B%zkexH`w}0>4yyw0n0z#srrg+*ro1cq zfqj_N$+)^9^hFHU4(w?BL9NK0SGB1|9)`{qW2L$c2!Eaev)sGyCdFtMI#=?ivpl*v z&mG9}neDpy&~J^ciLVEc?HDy@;WZ>}VhFhVIvr3(LQlXBiiI*ND6k0tpUNg-9fTRN zNJnCZRB3}%;U1{a*Nj=v^Y`fS52A7{TV4DKJxJHa4%Kuq%YkU`kEMj*El^-n;++dr z+d&w)O@TwYBPxh4w3aX#_hwXo&S}{j%dXCyg|YFMcMeT@BH8lIO6+o|ltS74S+iUu zTV$ijlvz97}q; znpBn*>16C1J+Ls*e63Ut#7C~r?2<3mU8481fM!!6Aif6iYT_#iQHgl-1swJY~ zu0D<64$JiB{$u3@c}0zCYi$Fs<}AkKrQlrZNcIiMY{nVZuK4uEaEOb?PzFJ{Y=83p z&i3scjrJLTnbGENf^uJkAbl~1LxOM-H zvZEDAc0`eFke73188eRbxpeSlXZ+y3)@33;qowqg7erH zCm4c2BTR5yJ*a(P6<2$%aQOUt?R1o(Tl7(jsDy}<$4V%{kcrU0x%yRT<4 zgW69n$5xY@M`EZ#0N2yoeb;Vlmq%zb@K}>O-1pFJKSW&hgu!<(ngV(_ z1lg=EoDn_==Xkrak+-4i>Wh#o5Hr4fP(c0g%8;sp=E@hCL>G=jQvhj5VUA`ky2{P*Lm9x{aT?xK<6txg*m>-vOo+|p`J811 z6-2=XEv48=Sov@3@-{*dx&t&vIQnt+U2?~`>x$D(wbw|duiW?X z$1L(eF8?YHWPq2+eA6(bbUCy^#C}oyb!*{So+aWqv2yg8q3?@CxphSYwA$N`8yHyHnw?37I=Y(_3 zRqySK>NtzTDgyKVb0b}welM+DoT6@kwX;QzGV8@d0VQK=x@d#C?-ki)@hPUqWg119pu z{SNH5J%FxIV5TcIDVTSMw8{4>h#&be$G`b2h~=d8xU#D4LwDY(uOTOTivc-LcVWrs zn?M!t4zEgh_*`T%-PrSh`vM-n=ln-EK2tsbKH!PP3LiNVV2KxC>%;twdEzwCG0~SQ zR%Ekj0;@i;4ySFH)|b0q-MWK z2Xk2Ju-v%8-@P<0Q%Xt&!F8zSfoCkyvRgT<)@`tH<}>wIq&T5SkD;UAyBAaFuxpyZa>dmMTV z)!Cc5=peS0pLbjkz>9NGO<(CMh!H?_Xfl|HaheOk!G93{*UQ#;VM(8nT^~btBJ-Aj zl-uO9sEFz~X(m1i5T8?Z$FT0-`z0lzwYT8H{#su5hR8sbRVt%emtsFDq1946viax8 zMkTwKxhT_|Nuv4Td7s5xPE^n_WWTplECcnRR%9FThN=fVLb#21VN7#xu8t7f5}DXN zO{L3xv)sIf2=l!5yI8sYV9HLX%-Ed!&zuBZKMCjrLp5FvzY$l(a(edY-cV<}g8*L4}MmopFX|XRxTGzJw-(!zDJtXQ{&dS++Shl6_p~ItQ#@BCc{i^=a2an&NsoL zw$Tdb55~Vfu{w{V%)oyoSAZP)l>5W$8^&;S46I-VU z*deKIOsIYIEW3R&$_z=X@jzm|2sN~MK|;$?~Q4!De#BL9ennJy(zZa5;^F=-`6pRMpvg?lH`JQL0Y2c&#Dq;Jr{5VX;t?0!2Pd4?Y zdWa3vOfs(*0)`wVuMBe0?5AY2Y94N`G?VTJww^JQSG}k$Jn9NX6t?o*!H}4#@M>?d zwwDbnmqPK{NC`%lVcp@HQBor`U!bo?JO5jG9dVbflytI%L7f^P)^ll?8tngvNh&HO z4yi0kF-&T>{@VV==Ro@f^~K`j6YlC>h{Ycp6)&&~Jp^g5-9o`-^>FIlC&-UKYrp~5 zaBfs_;GTi~rjE;L3n#{WZ5TC%BCGF-n!5#GVQbe|c_^**C%0!f+e&R$!K+wWd841whtByFze)EK#8>z4kzxjO z@}iolgY9WP<`{1JL!>83Al;;qTE5kV%fI958Om(q?LPLbcgxys(z7vhvLPn3%Qm!; zYKHsok@Rv(-5_akx%EW-KuorL@KqN@HhGTJrEGB(60hyh5L$_i;ZGNmFGu5w693My zu_SW1k@cGT;ZoN1Unm|gQjcs(mP)DD(wLOneR6@^I31YYHX7`bf z@yY%*jkShVKdt&iCgb&nYf6B$aOCsl{8AC)@IIXc#?(skS~_$eSzlVg`7J<5Neou} z({wZZiC73vVbPz8oW`Hwn7DuniM#F7C@zVfo)BUMp&c6+Xq(0u#vk@GU5ByH5uM@r z;v3fz#7Pf~eCqwS5kPE5Wu9i1QC9tr%3fa_Kz9UxDt$(ZWV#riR+mjNizJJ0YZ`6y zAx(We@&^i!64Nv5ETg`|FVx`PN6pdYZf!`?wQGKYTz#n*KTB2$T8lFgHdS;TVzuC) zgYgg&Oar)#cc6GoGSu$Zpaw=o%7gn3IQrB?;~rd5HinFq()B6LTHfr3b=nIF$LkC(%YoU|RJ8gj`B56+(O1vitneH;_8+Log{ z1N+w}ngR{ziT{hs@-qVD_nstpyT_;H#>(Jytog68dZa@wlwfPf{kz$A515w`GwhZmGPO#BQAw-ykebNarLB$oPSTBRtbu}-J`A>;6H zvc0s`Q}QX!Z}Y+C#%(qu64{lEW+5D6vQ_pByu~V4K<4Q|zM%;oQe&z6Xb$@w8YSb> zU8=eYUR)(vAhT@EJ7Q#?1^_e%0HEcRMydF8tkh~P#TEEV<1|^=HB=8rKWQoUe_~8# zeRtDrFi-;+o7cg)ep@Ya@-*Kn;S1)}Nw)raP3F);!~)`GLW3J}+ zYPJZm=$5QRuZzXf*3K(8PX7hXo601ptCD!WPp`4ty;Av&{|oehzu;Klt$t>n`-7Wy zSqRd1BDY|=Z)#dEq!#3w<{xlo;*vZKqtU&D!5cD5aEYw2xz{{|4nVmAR|GI+e0|kU z-AZaMb%B9H@WE>e|DpMy5?ZTjWu(4Z(m1@KD+G*&{s*c38`iysCzz#IWwcfg1ZEtG zbf+BuUIgx*C(Xn9-af2%2Kbn8^}{m++sqCpB$t&v^v&u}vHmJHUr0bLD&j=%r}Q+5 z_|RZRuw+IChv#O3j9I>R?Dsg|X%g%Yd)C-QnJFc9uL5eR{a4Qefm}vFRe@SZ;opuR z4_>9WX>jak-|kkjdgcOGS$N|@9JqA~4QwLzG{qDvhyXhMdWTM}@%apnX|R0Ze*5EFSrqx|M8kHqTWVeaTLaHg&~N>yf)$Z~ma#kW zSEJ42=ZmPT-b^z?_aDR6IpuwkvUsJ> zxn%4lb@a`AGY7kzbo5?b@6J=Kl5=HZ~fC`@|d2NS81D#{Q z2RL1*JTsSmN&cy9bvD@*(vLu;FmmmA7O3%l@ajuVDou^o=?uf&{uA9TWs-n7LZuQU z>gwSb6k8w;mwY03zW=+Iv~=`3ja(i|J2*J}g<(2jFhTv`lQwizY${kud}U!|q;-qY ztz54MA+2b=1;+~FHZo|^^b9y$XBz-J1=?T|Ii~%!c%aS0j!bu_xv(#|q7FWshk4NU zdN%WY->E~$ld~&VRVPpG3ahptjwKq0H>6EoW}a!E8-vfwh6*3WU%rO)SG?-lIi(Z< zJ_{4MApTwnlgA-I!9iXRsR|N0({6{rGnqj^?ZL7D>iYv5b@N0z9CY61Cw~Yl6#$w5 zKkLnfBM;0~Y&eIVJZa%Jf)skbf(Se%E_v}aagCo;y$dfjyNl^m4W@AqF@U6onE#y@ zTlUYInS|lBcAHQobt4H6jJg@R;WHJzG*0h&*6B_W4|7WO)D6Z+Q}zW+a=&ukad}3G zkjjqoixOd^Zk(-7@b7nW3ovGjs~wxCa)=X8|<0p7OMb-dDAAX z+bG24)n55>{?8)|!(T2#st{h5IMLgRPSM5Fg1w;lFQ!~es2DmX#rcvuPwm_ynunG& zavtgPp(ZA7aRd>Q@fnV{mO->M5^X(SVPW^GwXXpj@=HueQw0H&c>Mwa1eWJpep79I z!-s|zXFUb2k?F44{%2NI|JtF7OMU}l*RJ<6)(4aO`@S+u& z6COq8Rvi`ApDO}dSi3sKz)carn(U<5&F8uh!p`}oVf}^= zy{Ct9GBFL)mmihYT<#i*ks?FLXO)sWsPNbqmVAEjQ)G*EaID5UN8YLHc^)}s)p!P3 zB}i74ZLk6`izT;)$uxWx;%UkGahWWIOFCUyE0*!MKzy8r8+kNfPTXik){%hSbC#Qf z70AmQyqh;&U3cYDJ99n6jmKP_hDnjaAwbT>KqKp~s#2ayc%mECe%0OR9BSFE$+%SA z)T)f|fxkvIoN1F508#iP!w64oV}Fii4XG~V<@G3+xVj&ZxG zFJ(>KCXnxcNPg=C;8>m2Z8k2n-VNFl{R3*Ts$YzF|D~(=r?QzW;NCa1VOemr$;^OB zj7b;YX0O)Aot7_9*$@>#w2lpFdvi;DKo?2yatg%MpVcs>?Wu{GM;7vlli|n#oSpQV>rr(tov+r))OWBZJghs4Ukl zGZz9>;@(nKOFmk=W0K*#cjh)M>?ej2s?!^{l^G=w*DmKd2QW(K&}@vFLw?H3OVA{x zk3tOXhG+}#-{L^LZ~hayX|{PSb>c;K(>fhj08N|BZ< zhhnyoozRt{Lx%2!bpEc>0&9H%ueZ-j%~SY&t5Xj8smX4I*R?~jyw^6a4JRiVLmRD6 z;O8qePfRdS_OJsBQ|>k7^+2bnh3F9QA7BOxD-e~H_Ni&>=T7Lr@<0XZMEeBP1r+0% z=!F5P3$Ot^jW8(y2^kVa6KhZ_i#N6*#Oka!Y9@GKq3XU{b|4dC3|c>jV_zNB^yInE zw||x0l=yA=ISPC>-kK8Q1~`=e^vw|$<;R&ulD=W1-l5P;{Ar3O+IqWP==Su_;!62Y zGmUa-1e8q4(D;++PZ1;6>uJ(SM&ar#nk~1CR#c^3_DOt7NJ>uR*pp+kH2Pnmfz_dc zWu_)hVpxHRr$`r{DQvXmk1h5p;J{7#2RG!QYNwy&pX8-jQ<`W>Hd zrD#OOYV;&X-j_a)6^bhtzih;+d&z5oGI}*yTjzOR6wQHtwG+4N#>TpTaBR3Hu$$~i zc>$qSD77o3NykXC-C!$S7^houEO1tGLYNkDk+{2W zdn}NC^MGdwzGOwi`5)gg(NGZuzR$aop}F^S_7R#62R^;v^qTLdfT+qD_eDuBrEl=e zx^uxmnqz@4Yvk&eMca( zqgn*hxb%WTkMrwYT3IJE)if>c)(pu8lAL3?yb@L}KCe;5+eTBh)^Wa;UA?6%RwFQ) zG4pv%VR?aHg9|Ux&XFi>6EbEwHn}J=f2Bi&IWb4uZGkeIQqna_mtCHXHD8{Rf9y{Q z14WTWn7rM=HJ4#k#8!3>1LB=$rKHsX7w86u-GQ-o89XS8Row82>e(|!GFg(j!d|1d zVZmCG_j>D4t%1Uu2w&{oJ11(Qz0R$|oM(@8k+K$li;EH;tc{Jcze#<@aj!3ISj~yP zd9bFyib++M-k{lNGa&1?-ujojDi&URam7!lgYeVF|A|9hq`tSp@EU7e2WLs%gjurWm?@UsXV^VHe z)hq9Xc&u%r*R5Y|uH-TGx-`1R!%S@?nf~6+-IsIjQ=pS{7Vp7qmO9%^c-^u7*!I#b zjvSJ|^t=XJubR|6KOUP8`Ul8Uus-9@R%2V?U6D)Wv?B?oN>|Z!b-BX7KAgZdbZ>FY zzr1ip;j$sGjk$rH{7>J_boEsEn!y6u4U>^v;Rc;w8Z0>G8FBvaNToy!|dAbsPfT<@4<7ty~h(lx{}ft+FoS(QfTwP#pFx_s_(94PIg^KCV-Klfm$v2nvQu~@w+ifOB0VNPG3+FTnYLpkA>K78z~ zo|3CO3(NTfkB2Os5nj>HjL^mUQNs(?BsRuf;cVoGYKV+G4R%< zlW-rdbZKs1PGW&`qOZqqDi?M{;AP2!5fVv=Qcr)^ot9+<4H9XY<8?5@q@) zPNR=rbzYyx;NwLleQ%&N-_EUW(yUQ1ql=OhRN>c;yI|%cmgSh>BORUc=X$q@+Ctsp z!9`-XN~M2Q@}Yu>rsq?r^0$mYG6~W){{}Yf1(1~sZDkeLaRGj%C;|bj>riD|q&e># zf6@Stz=38oI`DaLI@&CB%q-pMe9h0WJq}y(Y^In?inFj>D*Aa?`zh=I52Pho=3$+u zL{!C;c_)4Xw17{PiJ1jrETAf(Dj>Pd^DX5oeZK17%KBIRky@Ves!kUB&Z+SOfVI*P z8+Xmlzk#`|Ls5*g!E8_nx35Z@gVJoF)IcxBYkbT}d728>!m1hV59b^O^nVhb3ZP6U zr&JHd2;`{Y6WM!)Wh(f2Yz^h{lfnb%%Y;}(h1K_=&`p|R`a+5&4ZnkVKd zj-4y_^p?IiaT9VJ1EshL^^C)m%ZkesFH1YI7L5<*70%5ynZ5$mec4{Q@i$+RnBY@y z;Fn!aG7S}Z_y8x_0Yy8ajU$?#yz>zjDeiIXUEQU#jw-f=zoSoMN3vBORvJwm9kHi+R1 zO*=iea$D0%&ILVf$0Eg8uipHrlJS)e$Kk9lTirZ2Kh@NQA`B>B9mOBdLOR-Z2V5 z-d7pFc)xjTLj3mY#zlPjv6#PL!V0$R55cBC6wLzUFYi|!>DzU>NgGfIM6rNd|ezK=@bvfSB;Ft3_JUmC!}Yoc$4y+oBmLfCLW7$BhZ9!OOp? z%3>LwYt$7_xADj>_G*cU2h<7sqYyN=qqG=TM?RA?z^bNIMrrs1(T$|XuyLK<`!OjFTZ7u0*(Q#YSBX4bqkoPg$occl zw?WZBW3opRXG=ZC%r57QT2~^qvYA9vGXF@yaV`4qYn(?f?I6E&tDLE$I#|kFtWR zYHOd0o}1zP@=fa$tK1{lrW?-+QgNp{lc41Ijz_6H)4_0-=|)q0>0d*Z)03nn#TQS= z;y%Ec19qHp$Fik9NBNV&CfPd!20C6k2w2I%N0G*?u?) zwS6A^b@nrlQgt%D0?MFG5n6_yIgVq)^~t#s2F&L-j{9(z9IP>ku}^3%IZQ}HxZa(? zMzf57T}3 z{n&D6Tz?aHgBol8{;g^3gWK=L(<^bTV3MDB|B3#K_l;DCPh+I~@#u^lI|hpg+jXpi zpDnHtkNa`W{=|PBY`nI?C2u=gOzd{sHiyn^Sc#T)UbnLKww@r!NcFwms;WyX9Uw&& zL3IhErLf7)Et2=qO+69(j+P_PHQy5ZW>KeP8Rw;pQW!NJb=Sx>=0t3#g5wE~4hjX2KJ7baid zeLW=mkt{DE21p}v93jxtJ6*r!4P1*Pl@l#jD!RU_aJ}+cgA<(YJF)|-qXzqm z=u8Tp;WTi+OgkHv%KS`Iv?FJnLhbj%;_SCKJw2#Z7JK}L;}EH6!rLsPvqTUpvcEdl z$Lmu!-lIreI<|MfuIc1lJr0*4Nc(<%#f5wIY>>`IY+Cr|YDD+rft1;UQChLxGt?dT zQmMf+Q=-^kQQx*NdMQtav^MRChb?<94&^I58Pm1)tfObhFfjNq^WYG?PU*ANUVBpP zYf1g7nA`=t4V=00IPY5hal+$VPLK9*hrLZt%f~+thoOzHJQv%QqA+~}jgte!pn1cp zgXSXk`S`IsFjX{p*fpl6JwrcxezN7>vU+!XPjbEc%#SqD#f?|;jSkD$8d}-PllKGj zqb4u%bP@v_2*$*P4(NZ9@F8IQl3d$7=_y!0y|Srzze3(>`>QssH6G&hh=4ug>VQTx zCE)WSW7eyQ)o(E=r{Ine7vinuGINfbN5G8!2TV<^4s66a8x#CRkusV6_jCpEkysl6 zbYUoFe|?W6gArLTLff~uLqM#uZ-x&=7ET8S+bvJt!2VEO{y`3`PbK9}s4zqy6;nrA zRI{Pkey#T-cy*$lmFoOe_b@$umomLCVA1iEv-WbnhJfK2JVJi^qhrFZ0>r6leiXttkS1MTv>=Pxh(@k1hQh_ZlD2e|k7a@Kx|X;l#ohe> ztF!9W|L&|>GvT48ks)zCKs=esBhLo-yp|s9UXGf_!LvBu%j6yht>K2p+F^=p?9={R zlO%deixg%^djDX+hq8k8IacGJD$$Z_BZ!t!(kVMkhW#A39*{u;^J3=lT@tAeea}u3 zKGqj_4|w}I*{^$eU&5rp%Oc4YBg^-^UH(UDgK(%WwL28pOG^ui!HW7 ziuh6mFMDFsnNXgF)LQFRDCw95wxe(w#Nd zS6k=g&acaqRRbrm1Md$}lBcGf2EYz+d ze{SW?Rn&M7eMoLDgSG{naS)WM_95|EVjTg2^* zy=o>R84#rYhEzFMa=@vXmT?>Q%jdO?)z#}YVyd;V z7Y%U+?<)+3u)4SPf%r5qhnsSbb0pvVbG>LWf$ zNxbM*_}5K4oJw7h@fnK415@~vIS^;F*6qsifdKn?;&ToXt2%jj_ z;l9P}v(k^K1@i1Jo74Wmlz@O&xE&8PcytY^1f%2`ltE9%1SoP+MNTPc?XZ{f5j0cW zdm+A9E*4$a8?;^uBN9WGvmsapG|)VV;%rZvbggtzNc~JYw{TBlg{kPjeQO)4mHO2x zm;VmGEs>;*%>!*H@w={6@ZCsNczDRVKt9@Rtky8hhl`DA=+DVkQ(PBJaye8GIV2I^ z@JDHfG2%A@`T1fQ|1?^k;f3mQI7hVNR@K%Qm>kgRm7izo6Ve`EFM@jFf3fJki5jN2 zAL#(D?n)XQZ#LsjTyHga2M=fpH6$!MOYyTxS#KOVlun(EiOtn_Z_v~@prp`aBSB3k z^N?!(mn?P@jcD99M}4)0J2#Cj(nzj?EkUp3#a_O_H}_2R^v+_|j?48{h5?5LG(zP( zay0Kj%XMpI=VOp4t zllQRs<4)96UD;`twmm9$FW8#+egMfI6Fg%u=(r!@oJ#{+PSp6;W@YGjXlGN;G25{B zet-k_7&;_zzLX3>2J{O-s<$gAi4W7~&p4X)^XVA4lL<0FY?apUAoS{nTBn{>Pr+`L z)%Xo}G`mT?c_7jCjmqOnwDeaJNeTG_L2$@5agr3X{KNxAmqV+{RcaS|d8MZGQNEOo zSfxa4gzyQK-`JSg#~v!xv_`FUId(jPHKoZ3rt8XjIJgkZSce@I1Q~WLan|)ioiaII zhgQl{q&6HY^Ropi8t}j5u4270`0)}6*u{g7(vapJh~5PV*JcNbJ|Rgt?vhn8ol+7D zCh;@8vf`2t-eM6M%+^NdKtx?-7jonwAXBAt#3jSmQ@IF^iY!SCjg&`qHDDzM@EcIL zvFE>p-Qv$SW+rH{%rr*sFh5%P1^?y6%(cBWF(^J~rL}GHeUs%d zn!PArQ!-^ITj0^9mpkK*c>lc|yo~B!1iJ8yQg?T_#Mw( z=nTV%+ZId=Z!jk{zI*66YK=UCjW9yKiLZ;%vP^w9+x`myVRrSuiRqiqW4lA2pm&bv ztApBY0}6epg+t$ygS^W`;8S;G>{g=L=A^vw+i|1ocZv0vS_j1QzAwkJpd=@|p`M3q zGB#VEWqZi+D6t^XX+=nl&EM~xDN_?-%f$t3jPouXW_8Z1Rshm@TjfcVTZf(VjVKv; zv83&&RO4m*q4!g6XK4jU$P{uqn^R-(#=pMA<%vf2Y4Ss88eAjQHb=^fH zMaFAm4rafMZSAcwZrVJLOR`{tO)0uQP$MRyZ5mNCnc+bNYtYF~ZFSkJ#AK;78^Y>= z>+b`O;6CsA zX>+nUz^9(+oRK>PTctW#EVVw7ENI6R?ZO;`KY3;cd<9%1+lSHvd*BOAyaGdaFmd;} zzOj$=n=4jWLL!yUi^&Tcykba`HUuy%elFS@O92+foyXEFp@2sF6E}3fB z;w^up6$!IAR(3E>@Q!6{tFWjUw9=YKp3Ps8?d|Hdk}ZZU9`|-*REvI(4u29 zgx}hJq8tUEu&{4tmHH_&p4UCxcT@)DV1Bn!f`j*UPn_co<1@1Y`D62Dc+UgWpL^?9 zmnT;1KWmJA@X0^PnAr|iwRv8;nDF^Lcxrz4Z-ZB-AHDZus6H!Bb*PTrRH*N=49g3-`TO40CkCZbWAxpTHK17K#%c>%Q8nDrU(e&NxWB%C z@&%kbu5kLJ*#*3tsUP`*527SHJ zwL5c-P40b}>fZMFtl-*GZ?kRLqdd_!D&fcv!-;h9_`~zZB@X>xf+Iaf^dJWl{xCG3 zd#Uf5Qt}lMxm{Q5kA%G+M>*P2;;zFFy-zTuWeu`ttT_3gYB8gO^<(Gh5US27_Gz25 zskxccomxGGy{CoZByzozlRw3|tX2o}?`(((Y z5y>FbbXD2uCQcM}hTa2LdE&$D++?hY2JknxSa^>?jotJ|qF2kr$I_HF%9!%z<-kPu zM$6e~J^UOM1C95=XX94e;+;3O7Q{IBlKJ}MdE}JqqQx4-Qj9?_#j8{QsO(aS%hx)^ zWlSxb3ilM$&Ue`ytx(AqiyR}aoe>*11B7F@i4SoJyCp^LyG>mkC)Zde-lp*<6%nv^ z#&0)Il#uq%Z-_5N1LT^P_&Dksww>dn#sQpgMC%gK^cA*xuY&7U`(qB#DresBCJQIv zM;#bvO7k*4aL0Mk+$Zt(JMf79g<8n6V_Dmt1%6<4)L_FC1*$-3812#Mvz9p7Q~nS4$=SV+qr6$`CfxCM6k z1TdAtR_LMXnrGrY$=6KE!K{ju8Oxemmp<fp^zCaGMY3h4p8 z-g6y)JDi`-%X%F%_W$yp zTb?&arf%_?r^!IT}cM(^H?12*a1FBdb1^csiP7D~AGd1>FnDu%n)Y;44;-E^4OJpG_| zly;{YYxjbHJw-Zlps){#JaY9A?e@=YuYf-*al(6j(c3eH}XT)T*WN=g!+QSnje>sTKzL%A&NKy946X4F^>-3nAo+o4RRVrT}XaKwq1-qyW9}M~Z1rMvIx}i7Ns;4rZs~qGONmUSLxb z{Mhi4v5xZ>`h1fTE)%@fLHCg%Y)$y<+|OgeEo$|1M*yNdCGdfAXD2_Yp3kc?L}^Wg z`oy^CkC94zETKJAiHaq=;b28Q6|2<1N5f77@TOjWdB&eItChb=yK2YP=5mU$%K`1d zn0Tqz&kgQx_*2#$A~UZSz7D43dv_%xSYt?njaPcp?Clo0t8v6TKE)UE@C~4kH8Y-` znXfD~Ay5?;G zpgPqJ?o&l`ICRpXCs=`)O}tGpr7d&w47RNByU?R`Y~%;hva-FEQ`W~`qoYx1DMBsZ zgX>Y%d0`e!H8yRj97dIPoprw^DPv{hd`@GX^P+0?3>>_zI|-DsL`;-oeZgk6v*q!L zD?8YD14Uh@Sg8awQ~s6XehU+oT0aRsl4?g+RsQOEE=_W9xQf9iPd_W3F!qD3lDLAl30y8NtoZr z=@JX-R*z!MXTH#tUy?*#U0CB9$9g3H;^fSR-L~iZ?M5P|tMY-j=-!UZ?nyA*=fM22 z;z$e|%jphrec9fq-lkXfZ2j$y#f~~*kLht0o^~8LPqDK`#4hA=;CoG_`Z3GP9S!I5 zASR_2*H+URG;xHwaisMd9{zyQrJ9yy_{R>6;L$6?0ktBn89JSYNjtWL?n!&yOqQl! zcE`6@mPpm2W{3e|tfEfMuy2cm*=j%N9{>8^+3()HvUP@2u&Lm+D8Dmel9a|ouDb(t z24cVa_vhl!4vtpJv85cn7}>EtfCVmxL)aGfJ3h^`zsfjq_T%(Trvda#hYV2cIzE7j zO*=CdFOvv|-E245o1EuLak4cgo%vR5k#Qif+spOP<>5Dq16E@WyexU}zMgZ(vTbHU zE(j_4bFTlyhLQNbbr|OTA<XNaDWJ?&=HkpI5t>an~`bXk6mWj?EovbdE9rt z8M}9T;K7sN+Ofv}L)&>q!})&iUI|i^B!VQ$NJIn)38I@J5`-XH5J93u?q#L2&4N(8@)&GZS>AC7-Q;re1HG*Tj#}jb=Ep>XH8q{e(w9;``Xw3?3_})dTiIc z7Ksa+iIV8WP`^GoO$~O8p$Sozp*gr$3iTm zZR9M2TO|v`#r*iU&G;U6HyZH$on3t9XXTXw#8<$V{I4TM$d)pRCaBJc1D#6#6g%3d z%56diBvJ8>hKGZs4}rI#Ie#<9&aOo$9hX{cG#Ae)`|4_TVX?0Q3oDasxqLRzXyJsT zPA*r9h+cWx`C~^|R3N>wkS{6#0udgfW;WhQ+U5=a9I#(*ZNPy0l&cRJVqh}f=LbpV zP5g4M8x;+-O2~zOHyJzDp~;{Bbfc|6q>1;b@RiN%L-!xDEUW_Am+tT^+R<7^{1%}v zAHD$c;vT-hbI&VPR$rAPNS?|}OlYW(nvX|a(R)n5XGka5(Kh}TAJ9@zzcbPS=KpWs zzWo2SZ$DYmFXpGmi<=&Dy?<Zxc)kFX)}OC5#56v5x4ekrT3jxi}MyIP>hp z$q0X3@Zo@S42>^49?58UcZv;w%aE$Q>S}gve&bHzr$A`D#t)O|#ZTGR5fG^+klmV+ zKWbB8z~ecZr4|N7mCQG~5Xa*rMJP1|4>r-3xu?-W@NuY#UzL~Yh>Jmip-KAbdkV;V z821iIB31mrR5{f&RO2gb=F0*pdtmhX=Yv+xOD+)0o>7k26MNMQN|C-(GQ{to4r^LUP9(e#ViM*5r>46F$b68L~2qID|6^aq zd8$RJdHmjgwF4Oza(Kr#Ztg*|tfT`FuwEpjkS5#?ZM>#i<1fXO_b|`D*H}tYPKusY zsyc7X{nDKs40J#w3WS)AH%Bm-Zlst^a}9PQbky19k6#5bWPaCCwAanZ;28RZDZanoAv*z^n;*uA*D^NK9 zi=kE|MI_8~BqhUuTjIPG!yV!(wH9`WdQjzuftF;vC~NEZQB+L8CY35D_=svFRD{ry zDzQZ+;gfI$xucvEur-*I{}e-91|uDZFwU)OZ&#aVx=Nz11}2yyZ^_r@E8Gqq<-LGe z(~&K%p9Pq2u6;jq2)lygRT{&r&7NWRWNM3Y1Ntf##|u?hoKEHEfJX}gT z@iQ9-Qft=n$zH=CKgg_D;5&AqE zW8)cF#xKnkq&C)v1!P{s%K)fA5^SXAn5gYDbELCw{stJ?*p>x;0yrY3S=yc+oA>1!DYuf8a;)G{*RtY{l+4JQb?L?`eiT0j+AaS1oS?b&Q z0a9w!3-cq6ncCgSPx^Pr%q!zHtDEPg!%E?Dh9<&<)kzc)z3l*cw)pSS1#*e)wi zOuD=~jE)tAmTbG&ER*X$e`=)G_Bp{NEmj5iyf9eK>wOUFi@XLINlw*q#ipTJNK+1p4^M%57wus8QrW+43}?}591?l))X z-VUUh5npt|WTm8Debo*Fy7f>hD$z)J3S5{x6|JywEU*SD157|S{Mm4PWEElz(EpOGk99}N-k?cZg=bpWkK{}$~3-8BlnJCJ1ph?9Qm!Yd42RSVxa z5YYWCQL{oinT1x=rifq-O%RfleR~J$3r0cuNoGpL_3*@so(qZsqV!Fzw_K4Xv}Rjh z-f)Z!vGCF|2Z_uLj&V$d)0=r`_kv~B6-KRD0-2|Sj&wv<2a5y0ryeFTPZ`XpCG#v= zvEF>Sq>;7-nDV}WgtCBnr7u{+Yd5wu>_CmWEcFZW z3H})*6%6K?@Qy)O*pliy*8kyHJf52QnHg^+1QtpZR*N9-srHwl^m#0i3B*U7N2P>q_Q zL{nkFPX9=>svz;iaem~aM$hHVvioL8AkA~bU#ajwo|LaOhM`Gn)rO%aH2>Hfyr0jU zvjXK*P%zJywE`&j16%8MSyg8z{|e_9r{UkNLzaIFwu+vn@Fy~Txl`agXoYOZZ8-S& zfWv#S9hv1xN(+$l-QKpyxCwhcd>PVu04LmqK($-Jd^wb3(GouLQrh?`)uHG}v27!n zS8Np1(smqo;F8+{&^mX-*I;cBZ&qfz7hl{|-R><7WMg4{59L{C8httLG{uQ-Ai>Ae&2;> zDUuPd)fL6|y8SALXI){Pj6S+U0RvRA%c>IqUK2oQjAY-AIt} zlq$lrnZ-=9`1R&x&_7BaWyS6-vftYLeqZi^evu7y=ca*)L@Oci*j?k!q5Ue`1Y+tmSqfD%WORiZ9~)4` zpNM=HVV2a04Mv;X{u4gITKPAib&+o#m#=sC$~^Rq3%dVkq0lQ25HKd3ew(QPw7Ax24_ghf6e| zM2!c^{W)#!?$y-E+TLOpFYGD9h1%S5wiE5!p%J#9{6a|02 zE}wyA9f9dhKvPMYZpL<70qO3&6+hp5bHK@Or-= z*$v|aK#IR1-7NmtljpyYjT;N;I~QY8CB7u0ZLh0%y`T`5z#R{}~Vl zC~axaQgE}Mk2?#3m!4hZ_X(?-0$Y#@E$mh~i~jxU?nmTqhU|lPSp#FdJUsYEO_eu z{pVWP<|u8F_!ru8^_w>O2E69j=U$tCq;U!Vn*|`O@#$%52L4vMHDw`O8+)KE%qwba zJB%n#ra-G6`TlI88+rDOgL{c;;CT-H@`)c=6jPpx z<@f6lg<@9lW02!-9!dgE{7xF&3)bdhli`N`iI4R|l?(bW$Wk$zTGy>83Gg=T({}B* zttWT@ok%|vWwW<4dgyeeH|XcD^{bnU>edlGJ5*4s8vT1*5Qn3|6KnRQJ=EbO`Mtkrn9pGxd2?u~iq83tagXHA zHT7P$-LDk|Om!P!dId*SCNxO`Q6#BE2f#{RIeDYq+Qw+~#0^(d`{6h0uaPEq9~OnF8oAqFo9(dD?^SmKTl$=S zG&6N1u8`n}OsKah;!iAy&*&$Y802|~Kpb9klIz=u5rx3TzKF5eK1D7K{Ds4$9T-(0 zLtZ0knVcuKJhe#O+oz0Yr`Yz4-}wD`$Mr}1xH`vfnUOGNJ2YV>!(^w>kFb7I+JV8P zYFbKNmR8t<4!oFXWq;9TwF#T_hQ|!(I0j6S10Ycg@?*NsJ&z6EbSHlXbhpQMF}w#q zTwitI^>$Sg4POVeo(J&J<8Yy_*ZkukkKka{#jo~zE9z(6cD658-Yo&ZAHak*4*!UR zbz6qqxOPUdXcuGM7VUqzf1gY5UntMSoPMC+I)I+}V)^2~1fLk3$)|7TF}VLCc(kGg z5}{w?iR?0u)!iB1c&%RUf?mEwZ z&djzEEgJ@wZGXNf@&ARw!}0paHM}YFcDAghZP1nwYxO^W>WK*+K*XUVpWqm=;wNQA zFZ#Zrw)bjxf!6nT5i3k7YFL3pAVIJrHox|JTxM(rRX!;ZMGmnJGC08vg_4?9-ZhGS zG(Kt`C_5(FOcxc4HZDeYPa?%gDq<6Pa1s>harAk@-+lfm*U_;Ctn?rOq0k__Nk1}i z9Vk&@=h+ZxlD@B133?|^lZStRIoYP~(zk-JOro%!yY&Gcu*1>>7aT^Ab(IL%8Ux_c zOD1!5_ZRUUqFM58d)q8E4(UI85q`cChA3YYy~ATI|Mek0bAtBaPEAHJJeBxXd2YZ8 zg`X-#UCWZJb$AN=PRR`LI}`@eQR6MjFyx!~nl;G(qe8+CP`>4pTP{jc@-UMKYUTc#gG^CU2hWf0(;vGl@{ROtx`s z!*On?batv_L87m>Kl#hw2}pBn)?sTn)-!}I6Jrc3)773&XI!JWpSmFy(H6|t#-4d( z1lYcLMr`I|z5*L@-IRKtruwZz>#QUMFpVCmJPJ3?{}0m$vX;KX;BRpmxF=Xf@=+Of zS=MQCXAC3BIL3C?_BX+iTi<2+!MA~g=0WE<<(BCyF#50JxWZ2oAI@HL;<=Hg9r-8v z#@I85UPQH-ZKc5OLWGs=O2c)-p4WKg>-YeWrJN>Sb&a7@(?f5V#hs zLG?bR+Ud%8z-`cV3M~zG1)yXPlD4B9l1!jK5hx54Rvo083O$xNALmm&D4B#Y`o;} z-=l-{dJauiH-S2=5Uk3p95xj|A-;$crck$ayer$)M%zg%y6n4=FtE_D94PxC|9EjZS*N-uL06A>c^n(yE za^uI3)Dz1alSClzkBY#7L?3+=rLeOaw%x$u{QTAMDX5G5k%)p4C*Proi^2t%EKPq> z+sOp_&(?2>k;@uht8_xw+_jx}0XIypA?<^B=CHdEpU=o)JI}xHhbuK`nTin+hnbNm z$-UEAz@}L<;kK*=Sx-WF^!@YztI*UGI}H`QazUO3MAb;Med-3vJ?qhdfJNu+?A`-E zKZxuxy&2mBqz=v3QQ>=B@6I8~3pQD;Ns9%V&1AL$cWz0vI8$-}$HT@}?R4oQ?hhF< zRdd*P!Y+GLr}>wV1FSpF4sE!_T^B1T>leVwTQ4Mck4ePv+Y#-WfUBWoSGrfR3a775IoeMPLvo90xqBYJOy$AY zFIb0MB`tkq;h}cIl_8#rO9l}wDS$B)W!KE<-qip@E}SJT~J7i!18>dfg@T3BJ+x7TwIb{CQTlr&-+1*+w`Et5QW z-S$XFtUNAor@HW9v~rzdodsRC61{dsY7b5K&0V9 z@^_m`ZutaaXo^5$LTG>ZoN7GB(daik!-E5(n7nMgE0?o|A5YpOZWU#zk$(Wsefr+q zm&qK->Gzov#*Ndy4ZzAU$YO0MYe4RSu_k0%ScgBmNNZj*t`T;GO2L@fhlLmc$SfSzckp0pnGo$(OM)n($A5u~f ziBEPv_?#?kEu&`GbI%oG(}f}8u`*uCv9 zJ}c@VnZp84EjeDSSE2IFLhOaWk8OzYJ-=M1FP`}C{aKAOmq|hnQ%4HSR-?1IJET^R ziKK!o(?;)u>0uE8myzD!Ia*<%sL<*v?);+8*_yZQ4n?~Ty{m^XMWTv3M!^g@a@}3Yh{tMxxv%rH7R#yZPfx|R`o8E46;pCE5@HsMv9O~XPvsuv&*mP2R%aUtC;~hV zqG|j>pif|mi}n4(-jE0%T{x@<+(W$j<|=8}nk1DsKfvx`6k-wF!Y%%a6u(fvTHTnU9^0 zg~7+dkp>fa1{=dIXalsdxpL|SWuBY$<=T<**a%8@qqW?oA`cI>tiJYOarh@NsE*Q8>rOFFR(}nVjrgy#LklQ%N!dp;~ z*3QS7x8D6#+XMu{Vb)SH#}@@{xG*q2CT;)6Ct zcla+mq+i2oiY2-JPU>TY)=nFgn&gTm8s@pEaUwFfz=Vy%b@R}EP_Rp{-B1v31$n>6 z{z;gcpEs-hxfr{Keas%c!`<-eLxcF;<~FCrDYOOGPgXx7Ajhz54xY>jv_OepixF4 z0e*PDgwqVeP=?cvOoBm{FN!**f!@II>5Ctk=QP%47?6^ozFU5ye@L`Q*;+K&oM+Bu zH*$QKU-Ls_RyCyZwobA&zs3+zW|H{FC4?wSSd{+?SuEr0iuR`rnt|$1osQdue%al_ z;y}8YTFjmE80<&B9lrtIHAtQRTpZRn$j~eILd+e-IHF6- zY6a&&*3q-#gBm@8c<>C1)(1)v+zHnBuX%!JmDmcMoCL_-eyhB;v36IQ`+CKG2$*p6i{6)A{#<)V!|x#Y*K zy5k}g<`E51XWa6%$}Ze+-;@qq16Y-dS_9F3*l6?|`+w(BC_HT;Stx0}(1 zHRLv?OkXQ3di1;6cRq8XqJmO}99R!Ok-^DX(*Mq=sU~5Z(A5(;ADkfuyZsaiDuOqU zy;i_RW()?>C}^}p8D}Mz`}E{Nv8HxHtY3F)^ruh%dDp;9Se#U~_D-~J03>p=GScNsRq zx^+D|EE3^jZgXFIB0Fahm1FFbXV^>~!m%Ll19 zZ;Sp5)(dV)Ve-^f#I_6j4Gt>HYvA=&b*ZNA&nMTY?%qy5L+d#yss56y5-_=F)_SR= z=>9Q))=Oc64v&J}73diqfdUFse3D>N0p?eB&tOv$O;3R}fY#HOJU<0cr*u}zk}!*R zJd1J_X&2}a<*opwn%7pCb0L0}%8FHPSTKEKi3+fiQcW3LWC^$GzH}{5%bH)67h1Ic z6tl8v%qzB`W4$urIAQ4|(z!Xv0_Lrt8&aoE>a{+9wRQEwqvHF<-)Pu)M-{f1z|6*k zgkTHg17AbN`C??lKYxsDv+66ILg^k;varg<7N$~@fquuH?XUcpf8EYJ*(tBKMoh{T zOX(3%kpV?!Yc27*JL8mB$etYF4V8*c&kiek#~=7vdtG;MS)u&3LkZ>ks>F4a$LD~i zimEkC8lB#1npz?vr{W$sI~iNSyJAa~C?jv>f{E;Y%)d+aObvXF<1U#nMeqf^kX(wLk?fF~{=YVQa_K^GgAf!UGEKNY;WWW6xadVP;7 zcFx0bmHKW{H1*NK?N>IHWEZHjg)e6;#Z$9D+{A57y_#v6c}3?|A|O3rA4N~haJc;G zC_U6OD3zoi4zvveJndJJ0h^lJf;Xy+of0*BRu+|cs03v47m@{bAN{0Oc=a~;V$kr* zk2mu=f($Je4S8;K7bzv?yx=j*$ayQ&&&R@a86v;$9;D$FLOUo(SXo@OO5pej{$j1? zzo5@Criop=!YqS3Ix5`?<=)8`6O2oc9aHs64mgTu7$_>Px$%ea*<8!d7cbx2Y5i;V z>T(s6Vk1Kr2gH&I9En`2DZIbVPUrBB5~L;oQc}9`VUCYOa3tr5&cEc*{^v)L?~zL% z2z#*OSI32u?{IXZdR+_|Bp*r=LM?!JO4Q@wmz4J>A0H3MK7G^bb*KP`wBG+kUivpm zBX`V|kL!EiXrwUt6)#+PAA6qK2GU5;H9r70JS2d!dxiyUsb3(tpkM^@3<9#0{AyM! zj7fi1kN^DM+)70#_F4iDbSfg{*1}Hbi8&_u?3h?3AYeVD)CPkOU84myzz!<%o=n#~ zq;kxl?p3l_Q=B(bC%&N4@;OKn>Qb+N;Za}_-gOnetY+!9ucH#CEYaP~?BjU8sg;i~ zs5e(Gnz^r3@Zvs;EL0KOoWPJ5RXWW9z( zy*VrM+Ci4L+Wz}n5f&RjXD?M3jXhr>Z?V+zM-Cax#%*(lPRZPp>w&Fby2YRHPJOK` zd#Fp*{p+_xL*ad{OIO(A0Wjdnc=SyvxsJ<&OR$096U;V@ zhEB}WbVfCvpw1Qr*`js;oW2yL(%utzBc(FA`2_y%QUVD;12O<>bR4c37f8~Xhm^ai zk#0o-dsU#NM4hKuoAQI;;#ag6Uzk(?w=eM-i%s^vjM8l~DtoFN`W0lh6vTYlNORe* zgaPahyQ*0MuO?f8-o6pG48UOL&@K$)vRsFA^~(qKW;Ot3lOS>_Xn}f2pJP*p zF##J%FY2=+WH6`aR}No#VYN)fpMFsvTzn3C)N?`N{7cL3qJ))2^lL3n0a9U-v>VOA zuV}E3m-`SCi!^mVf0u9&Ltqtc;780Tyxu2AZ|!Aza(F6jd_Z!(GIqrMmw#QS4Dc>Oo3xo^qnYR&+R$(HZVq z|Hito{10r7G9-9(11K0YcbaEBuEjV3Bhq@G6pn`YQ*!?O45jq>lYU-0 ze*h2YPgy*>79VnWW^sspLPM773%kX&fF0I@r`x+1a<;2ZwJRxH3eIiug4&^qnETsp zzEzLiM3@yHNnkGS|BzVIOlB+Pe+5ivtL;ho>!rqQ+&Za;(-SyXfk*h0U9aDI&Noz-&;vmB(o6pYm7xve-HQ zMSyLi50O4F@>Ve2*R=uorcMi--K{$a8RtsHe*uB#&j5h~JMSZ|N0$Wn5yfj22d-Jc zj5w~#E^5jWZzbHcBz|;;h^=D}6qn)`vir1$WWGhsQl^|c<@FFVZiZ)ZQTv2uafqk&ePsQT12c2hMpZzqA1vu zQ*7zXR%QRW=>Ivhw3ct1IAF%wPC%5~1Qvq)_FKQ((BRC4DevEFPiK_+qP}Ql7r>fz zUb*VqZQKhB2L-XDS$r5~V0vln_BfgEG5HCt6(Ft1FWXL zjLF+i!ly65r_YJ{=yDHsYrrkS!!AnO()a{b#$Fi-LFv1(w1u2!)3Ge%N}hPG-|Bi( z-jtKkjLFdcXNERZ_wgHOX3!`Yf4*<{;2Lj=neG_1>52iOlF_`!q5b7ux;z#_&`$0p zg~;v-68J{i*(R6@YIj{P+di93~6T)m~BZuYlpDPX)Z+eM68xOA0*HWYtFkG z^9nD~iZXuuV>`icYF_)4@yU&IW^9050NEDay1E6jyZ9GC^Q63*eQpJxcAZHC{-mnKY$sr^^xbf) z0!##Gh=hngCE@QCx7GV-QH!Y)^F~VK$;CQsoG0kw-xE0I<#pvo$`Ppm4XJ?M>SLS! zJe~h-O}~|ZuOrWX>&vG+-A4bM+Z`L%)`qlCA4YOtykjDnVWlMzzT~jNW`2%g@Y(0n zj{PyjJ$2n%>aEGUzVQSA=?Zset zV$pG1#?rR7XBYyx#<0yi&M#*8<%H|wTgcQafa`Fk&@hDXYr(Nk^U)AbaiKlg7OD#x zC3nBP{0ttEUz&gzGql(=l1qDVc)h)gjb!`&^W3e0{uCWE4>92lg3*hCln_%OexR&kQG9?%GICcNGNpxnBloIpB!l7oW9CV{&?u+| zHKy(4eA-nFz29-yZZO;CwT)8gZe9T=^OgJ%E8lMss8bJBh6h)7-9q4B3akQXK&YuM z_b-SWWJ;jj?504a#k?eDKbw>$YtgHMtIU1ja^Fd{#3QesSOfrEQOx&LM%Mc z9om)rB>iKxnQzqsf1_0G%#%>QqkF9`U-1%%YUb_IoE}B~@}ADrHkHI2CrzQ7>JOqE zFZh*Qiam!ks~h|}R&j?CwM6(4qX3$32OiR5$?Y?Q4YMcF7H=sUS;x(^(KQiiAFEhlg{hlG=Fv(JDR zUsYq`e7uDgYb<&%a1d8)@jce#k=7a-8hD#xxUL;t+sQAz3UAHMOa&Qr9i zGk%QsCiR=H=s&3)RTL6t`1SD%^-bQOyT+?Sx86*21arh(GxItRY!iCZa}m}i);@!R z++Xtb0D_?GpyZaOF}G&p6C6|Kk(ae*;i}cw+U{iSo&oBb zu!M%`=}7w`{ZNSqO|)NjJ9oL{sU5!UbBKO>SyTQb?NfQ4;t#23>mFZyu7Z<35ODYL z9quV^6dUGooJd|>9#{v#VF9Evy4xlawWe~P z?pM%ZtxT_|s*TXd2O%IsERB>ylBng!M^{xst^LW}Tvu!Oy2*E>3%5b5-rsEw)n!+4 z$A&w`r(7`{0pyr~?saqE`+y+4a{}dPa27fsC2qY=bIx0ewDV)Q#gubjFn(89*Rx+F z>(jtW04bp^{dGCjjeX62EVJy{9vgas>*JZ4E_`@9zR^GrUrHYFxw z`w9pnn=QQdv))mc{+=bgnmVssyZ(`rFqYbtrYfYebFfNR!61+I%PW4UW+e|e}B}V)aZ2YnCpf}ldP=-o($#T%MNm$J-F@n&1uYgyAxKERKYwa$fJm;F} z=IdG)pqf9NS!^wX(|EOHUYmcC06tBghgXFH61oGBY23EsN~!DDFG32!Uf( z7=hwNGCzwbuROH7K%#g31k|3sNW%$zny+W4=u$?Qu_rLkeRuEf+uUZ?^1A}#)nAK% zD${K|Eh^d8GZwRTu%mWSEv3#~ZM|6{e{WM?NLVO|CezW#7{@fEo@`LXmRvQKU;X$& zXsox^7-}NWaT`@iTI)%h_iAS0#+tn2(C5Y$FgQIZ5=Wj8i6+HE!f=P1%s$*=bXKPaNywu z?m{WWbmhzn`H1N}{VKz6*NhOPD-BAo-(QlcfuHt}(4>J5R%OBHXNjH}bWbFE^Kj9~ zLn5sh?MfSqP%nXK3GfYpFtp&|LvtJvGhJA|@ z2l-N>=J=zZ)f!9>Y*@}yzN_jY7uZ0sts6dkYnCN`z_+lD%few5GGUF0#}N6?TXPB8|(_E_=AKlAygCrCqoM3^uwmVgQj%P)6(| z1}A~7sP^sSYyr_^?#|10sb|k$pH@Dx&&beD%euarFr=gquh+2h;-Ke-5T8JJ;=e$| z6v5YhY>;7Z8Xme!pTi1W9HyKgbra@hs^p1d$9;Mb*>s;_kl4g>CB9zLKZ zP9tICzhr2?p;%V>uJ2p<&cVu0>F=};+&df_Ez7=>Op(uBc#VvVM~Yl$W0Jx~k9JKC zh{aOH{!7!sr$%^_a+I`%=P{uK=f>LMOzJ8-G;9PLa#J463^?jI5bxBfH!DL&upr;& zRVL-mJ!84$Jydbv(ePoax^aA92$s`SGtF0hMvnhG)z=FM|_cd^+;G1urUPcl(0;9qM(HMMA-L8S$Aq&#t-D9*yK_YbS5h^bcPrpSK{)VJbF&=s=7=W<87B4~}hU55h4Iy9@N@ z#>d|DF!xWOU<=0|M*mq<{sDfxY$cakv162;sb~M<&6D1IYvsW&`qJ&oYBCEGrvh3( z#G1#iT|-labK&#&VjA-OH+Fw9$l&y#!t}g*;qsoqxE`uJL$73cL3f(1b9wGPNl(H- zGMkr8-Bf!f`Nk4b_#IZVLZY#6l)tnY+vVyqbcJoWizF_b&!7PWh1QkxG8fahlp=rs z3vpD^fObcT5QY;1JB{#aL;12Ml2p4ZRBak&UdbX;97sp6u?S{`spzb03!$;jRNTX= zum2A{Cyn;;i`3F@U#menB8hw#GE*+mX%6IE?pFD075(he^?zQ(I(BjXG2#lGB>15T zg&y=R(wmjb>4u-)?weGgBzz0DT1Dzg5~QBKz;8qxrXnSanE2@RLs3#ypfoOMp~1u1 zBy1cK7k;eVv12B;+*tPt;=WjO{w>*bH@&Jqef_T^Y-LgPcz#{aobjVo$y({F@;!xv zXx4PYzHi(ey4wAeH4JhZw($(&c)hmQNR9<*PU?DwdTpN^9dIjSR0}HnNy=-naMDuJ zm7J~;R|qB&CM1^@o`Vz$fqJ;{`266s<{l-zjzlpeq2zH=yRhb&#qdXwhjWxQcQmX_ z`xEM`^~3P~X3^G567k3B@-ClhB*_VCj6Rf0d*^u$$Q*K}!wOF*-*-p@o$xcQq~lN1 zS#Gy18JtXQ{%-{UYZ^1iW-)L+^q-t;kL!XU@osv)RyrWH{$6+Wcc!^H5K-m3 zP@Nj}U>F~PV9gKK5~O4MR3C+Sv}|;D=!!M@lP`cT@Bq~}@6c20GaasOoXa`OF^NP>p3V_ZY^)B z?ALPU%Ix69<7iJi8@ zi59%(m6_3x=v2GNxC%QL`9iDai4>Z|f-n0{cV}JoUG`lL)%^xaBwSLG5o9cW(vAGx zu-*$d{^Hi0N%uq25k=$wINbC-HF&v?rn^ksFEMQ?^Oe_4&kgpf%0kYdFAw$Y9t zl^Q@yChWNkk}b-<8_g9NCQQ6$nTJknDK~mNr)3w&aw8H~JU983B^BBV!D0s$9Cj@|+_S zR3u4yw0yer)yv8I%LBXN;_u0$>&RfZQsXAkGIK~vnHh?b*fGhX%uwWL1>*l`Tz`#@;d6MsPwko>4=~&zTlJVW zj=3Fk517kgc9gJArJurcpv)&)tGizwQe5I*7%=q_c=v-D55=J$!Ja?M=L}vXce2ND zh+22^F=UC!ORHS*?p>qO{AlcRzKLe|0(ZPw&r*W34_!|ygQ@S&xE+mD-J^tX)!O7A z*g8zX>L`y-&*ZCs!M`ItOChS51;3d`j-z{g&Xp|505PFjq^JCf*k_`f#nUt{Uaieb z*20tKIIr&!qSyPKFVaJOpu-;Zbiq^QbFe)Qb|iL^&mkC#8SuqMjn^jzWOAhZ$h;r# zs2yqHxumL{hFq#L-sQA}Ah@dhlCZ35kL&C+pIVX_9klOAF_sCuvzd4JxN>Rtxluj; zUj1cB>sJ@k^?zk5*$~4@$xpWY!Pe|6)y7m z$STTT=c5+-op5#4G@Ru2DNqZc9CV9d#-g0jm$bG)$ww&d6)Hd2BKDNax^5Z(Ue66<1#Te!Kyf5v! zVwj~0$Dr%?KSOa==Kc#*J)==#VjJ{UxkWss7yyovgwwnS+_bL_W~*vcx>(^bv*S# zD_AmAFEcMh3^QmAmq%1r1IGJF*6u~l?pKU)uygq-syy-0$;w_Bhz{%2cfW1A%K+k1 z_UK%*R^bKi{dO0|*+tXv(c-TVgws+uL;`8`5&Y<;i!-t$r)_Zc9B`b#V8X0`#&kSMFuV`vGIM&s+1zNydDzUlRXu+aG=D6|h}bH{dGs!Y z?p`Wr_-C&WZrV_9z4*jG>4`J)mm#`kG6^#Lp|qjIcR_MSf9z<}TuC9dUcSL;s#ko1 zbo|5ox1)KTB<>S7oa!z@zp>NIDPXAPRK=cYj3r5|@Py#6sCs1XIt z8wouut=ZL+!*49(C3mFDYrUI-BH29FtN;3~6+VtL|Ipr3Jyvw^tknAX9?ZdTw;v?k zh~9ekmpkr_fAjF1mVExeIDvc8ZxGvBwCgqEbXXuifj=5Rn3UNEitj!RpXGG95WL9< zB``e@5>s@BeWpu9`E?txtKBWNM^tAKgc3+!AWWkvzkDYQqNR`a%}kKX+4H2Do39KE zQAShawLdJ|9S~IzSZ|E5SuKSHPaFIe78jQ_hOis`Y9HK8TQk+@+m?eaaxks>b+i(P zcrA(E>@+!%AzY#j+x?)3Na2r~0qm?3srP*jZkXBe?8E`M29|m24}N0A{xJj?zn^wx zIqs*!^#%_oCsS0*_f(t82CI)`!KA>3+9HZw)Nw^mLoxjEZn=XdT8SyS_dT-QdA>rs zrk}j5?7%ETAu#>p^1b279Qmyh;-yrfMb3{B!**tZh02(bqvA6#6P0zwsJ;=9a ze+yfL1y*5J8J-Y+qTU}M1#^V0FKb!Hb(jZs$5g{o_`5_1e4130irnAc zHoWmpfk3LB{Dq0XRARd!XQgI+`RUgezcc1^V!l1M$$0y5#ZZRhV{y45A~FPtpZjRC zcUo;$_P8u1k^lVZU`=Cf-sx$Ju983?gq2P|6`WRX@VwQ<&N>@|-?C(1!LIX4bm&GJUWEUkKPo{~9^8;s zTV~f+^7v(;@qXwjD!7}wcfHTq<@%%An>rhp3bdRWmXmBIg@VWEbMN< zwhkuQI7BkNJMWNvf^OTND~os)c_()vGOa zd%p#8JfWU)dR8h}N0sUVsH>?M+jo{FK`Fs!lKyM>Mj&Ov?oZCT=aVl4-8-lFWdd?A z`N;=hVk7}DVIUBYgO)_E)Ut%&vnt$c`2O((J)LFi|03$G1DbsQH(n57Dy1SIITdwu zC|v_lKoO>dfC!TkknS7fJq;z*TlG}jQdH8&P=bS%*ZLmGu&wanI z_jSGAf7GZj6!U-UydxbazT7E| z`dg`nu3Y6+A{kNZttv$kXAy}Ib@hPv$DB86Rv&L%(Uuoz$;|O9p(!fhw&qFvOH;NS z6NAuQww^1c{%Poy@Rg6el<^&emFXN-zhiz;!Ta&bE!&@aca9IXE_U{knDpkBdu^If1vENrFdx=SgH zgJ|tkP!p3Z08p@6$tHZv2W#~0;wvJLEN6SwkG+gy3HqPd~~txk;g0LIoUGZ zxeGCokFuk`Mi0~(F%&Quo0$Kg*|Vv0y~AX^V|ngQdkcJeXnYTLSuoX2{C%&I;fO}})w$7(Ko@2hOBgNlx(0YBo z%>CNVw(Dg3>8@XMDB)I>?P>g|jT7;tYt%qU9=O%NMoVab=aLvlyH>}hE~+F=PBx2j z8&n`p4Y;wHT;KgBSn}2pE9w4*hppS+AB9hX9BS1JTJ{!3iiBQx5V3zy#ZRZ8MT z`_x^^@g}QK@>=E2UfRBAW?|%S+z6EH+#ND^>g;doLUm4acXu!sH+w;OQN{A~#!eQLL>*UAwr#8kE%1uikbe!~R{nz~coE>4ThA#}J^cKS> z0}+c?4$I_OnQNExPqTqjYS!IDl)vB3=A&?hO6cBee^!ONfZ2|;WI$6jS5jksoXhF| zx!$E^U^j3kjY*?Ua`s)n+P2~|Ta&8dqh{y83X9qMu;MMK!&H8KFR_oDAXQ)3#uK3D zA55DyHB6=fuBmD|>f3Y*gknY79xLz>oH#W$ZOKi2yRI>gIv!xz4qG;y%DuFPQs;Fi z6={z)oP#|RE60r-?dVPa`+*;Jte;b@NML1c8_{B`pscoL79xCQGH+5_AuWmE_xB0k zI9pXsCPye4%RUdMmCeLmD9*%VJXxbXYzgX-A^tCb_)RQ;43yMS4C)^;nkl_7T;KS0uMgN-K2?jiN7Oe?DF~I=cGfyss5O;YIU=H zIolwg$8tXkbO3u_=g&%D7_Q)(+!|eWrjZZvYB&S1?g(?>gkkEBIEeP)3x*rq*th`o z$>a0Z$(K?T1#f-P;iQf%<%}5ecp$=M8~XvsXME-kO^HeSS>Ce#@VY&fEtOwwS>Hug zUecaG+s922-h@Y6FU2OD39Ujv^$w8(hJtX`^&1mI0v>~rEo}InnIAF^Ze%zW7ORKezyJ=t;u=@yV>u_D7^gHx=%}&n}yKu5n zvb)}<)Q^UP5X`Z*&l8W0?)#%N``@C)9N=YltDv}LX8a5(J{oJIaeORgDD1yKn*253 z+%{oD3=8%he~!5DOgZqcb+=i0(5?3}_7rn=_=LDm&+qTw*n~+#3G8Cf<7s+2#u>*~ zBE0?^P5vfip9PtuaT!ENWUjFM@-Hp4o$aJu(&Xq$x4aW!{5|cy-OBvhVgpJ!hw^D( zQk-$y1Fh|fnReqFClO_*LuA}&;-K0bd2?}$e87KYs`}V!mZNm|)KxL8HBWT3s zc-BiGBw_Ki2sc^9{>Die_iMF6D6vIPetWS1m>;%P*aN;W%*6dn@pO{wV?TvW$Jc4c z6h$6iTnI(}z&F?+&2KPPuM9K)g)338UZ?PYTfPoHw@%1tq}_l$GVrHV*~>{>P>6s1 zVfS3V#+y@TNKwFcSGbR0b-#1Bxq${{-7rLGdukAO|K!>M|rG<{q2SWtU;fsb1+lXXI!Fz$G01n&~(x+d9@9T>pCza*0=p_k3uC?h<$SU zOz|Wa`K4bS_vfR8zFe?UU8UT+C8@5jmNa$O>T;9jAO&z;pqR`<@lY;K({`lv;&n+C z-`^ja;%@~IAF+4B%+oGHn?Xq@L^YYNF=ThQhBCQ_MVTxa=%DPoM8eOq#uCBqNR=$*ErWe2@l-cf^S_3B%zotV8{dgpAH|6zxV)NP)pk1 z0#7fELCx=M44+Z8{_SmH#7&4(I~esHCjj-UM0#jX;szjho|hKX8*YC3@ZtEGy1tpj zJ>rYm%tvNzW1r;Cwf_AC31UYta(*62H*`y6EK$&P*=s#y!P1NI#M2J8tF$W%NYo7n zem&0sYJ`zAo3@@A<07xw&gaqJdmC;|6B#d`$Fp~CJO{B(r%T9-(wzAO7nr^fgEh)4 zOwn2y5J>5|a1oUH@%am0n=eVc-5=?~L$7J33X+Tc2JQq-gvzXFL_5T`H+6V;Dg!f^ zX&-_hTtA0R4)PESZ7`0SZ7p@2Uf_O*a^7|(pK?qc;S-m`WoZ)*oS-34ThL9lP77hckKVQ%qe+yb~Dco#ZIDg3xUAch*F{?T0G(II1}zla?UwA+hPuqg1qL8g`F#Ix6n)2a@E4gW68{ zj#n^vC^X&e^9{TA@s?I+V68pnwE_kA(2b@xDJ%yii#*}>e<1S<^nqX8$CBU@5is}M zlaNAc3zl53qMXE>gxlya`vH3*-RXEYex`nNA-tiYt~9$+cA=6Gdh2l9dd@_8r+Dgx zbIID&TP7v3z$%}?Z;-!m+@{bGK9)9CENY)WsMx{zbQS%X59(I(M3 z8&vGI*#Mu|b~`&~#qXu2-5pYtSfJ+(VP+#}GHJZUeh4>JP-maZ@*7aj&6`Tc7Qw^rzHq_7X_(^_X9 z)(1VJ!$yp2901;2Fwbq1$N*BOdL(gwmCzS)e;4K}H)ItS4JcR2l=!vlZYMtbCxAK* zN0!gNcYV$);JiTAXqat{utHF_ww%W|{&U04%pm`+GGZv#=m4{6r+kJ~>obb-7!*K$ zUk1wDywP>T?HhCtdLB0!?ifE-3+T|L4hYh1llW9{1$Nmi(17DRuBn5+0c3WA5MRbB zvabJ4a)dtmNU%6msZ;QgPCzW6S)lyVK{wi72!=XziJ9(whVMw}=lE&r$j`%k7v}f@ zUG#ys{PJtTuhP#d8=GiMQ`PF4TM88Otm2!+6zk3n2)MuF?{=N%cc%g*Fo>RyODVHx zf+`A7%?-?md#`B%b%XQ+`bXqCa(q_wz%;D4%2;!q=2CDBNG=5u*aeZi5 z-<4ntuG}44MIyuU2mO0%f0}o@5{5-na1Snwaz=ed+aR~!4-s6SMQ-^bO6rxzTMth^ zKrF@T?*BLx|oMDvqw7W zRl;ugPTSdF;k6!*34bAVC@9^9@1^h&=@+U~vt!ykt6)J9g!OJEv1*fLZ)o2O3bI!KNd7Q$Y{ANDc#M#7jtY3d%tU*K3 zDrv@kz^{D*Tmj|xkszuz9cvXkUAF+vd9J%W1>ov+h4Tya5YoS<^aKN`wsuhkNr`&UPkonaVY2nR;}^j@F!E{UY@2;)OQ$XY6wRxrM84;LZmPGa{%W%G?NB+0 zAD?|$CsXN|BlD!I)kvdbWl?^CbN+U1TOw;n`}P~yEA}Epj@U25LcUO^@8=&XBubo5 zJ>TK_5r|#H{5}7azfvqoRgCAZt-w(2E;3J~YL|>Bv#TdYW9I1yXJQkai*ds3L2u~_ zNy8VhkA-mE8!-6R(na3K$~b5q6kn^kCfdFB(*4^m(gMD2B=K;AIuf!Gd!kNiF)Q*pf!~Fd*wjI-f9b0$hql5XrJw30Gj-E`f z>UL`mOQtr}YwKxj8JnTjE-7=tKo`m!zNAAvqY&|yo~6vd1U4G}0q$L> zoU84>qsF0>p~WT-+lhU^w=&i2_U!Fke{hsAePr zqIQNVy*%3^HR>UXQjVTwrmA({CM5ly{xzSgqC!oetk5cz&SR6A16j?psAC7pfCleS zPQ9o0#z($6C9w);5&GKC2=ZYWNrQJkyVO{d_ z)EEcTtP3pth(h@&Ya`xLQsD~7`O00{U*0~`??$a~<}anU5-O*l%I2yL8vQJt6JpZ9 zwz`Rbd4pr~=YdRYo=-p9&qdfTOq-McaD>7k=5$|sYwxIRU{NmSVTsGyM9!g=Jlc_; z*K1!2r@t>MHMCprj?H98*a(c2L1L@QA#p&$j6PAPcFT+Y_O3qS*cw{uZoof{bEUs+ zQa^y3rAOOd2b8w9-}U!WA+cfJYddpa;)&*?}c@>2RBZ3C@0l{nNf<_ z&L)7uoH-W)-dD~Kj;;5rJKfVlU##>wKp3-WMlC-uUmsU`i&I>}oXWf;WN@zyaVJjP zsetUV3#UkXn);C=FRD}RcIB1`B@f*SB@L>V#TbgZSV1{N9(nqc83lZ+!1XI+F>m=Z zi=V^0{%coOfxi)x_+j#yt1=k$pHl(=`UzIEbL zc+6GirDp-!h%o!->)iAFd_u|t=>krgX0EE8pZhd})lGj0h=vMVx2;-1NBHW;Ax@!8 z>mAfjI<>@PJM#kjztEx%nuO{T866W4K5fy$ZtE;FrNKIve){ocgD|p=daCldioR0s zx@g>faNY_`SWu<=;;^Z|@m|Laq_}>$L)lsm=DXj_$02u_m#ThmKvk34r-_~)utu;( zUgJF04?QT=xWu0jsM{HPZtthZ1f*iOgRPQF$_Z#vD@%ny+*VqBx`(^iD({ugNS1T> zp(v*o6vtUtm0ip$#7U_kZ;ef)MAC7kFnV`pe`d)a&pB*lEIhbv>(tpTRz=z<-4#uB zo|EpC;&R=k9P7`eMkyE1eYe(92y{Pq{+GuQ_t&z;+Xh(`r?Xqt{{H@H!qZ)BD8}AN zBed;OaEAkRgM?HllJb4;CqL{q`WF?r%L}@4)KHrmppG0bh91n1O_`KIp2qZu8ZyhS zO$SebkJ4%k=vOOd+`1&_=XYjge=m-2K_;tw=s!TvwH6bH6!$Wcr5XgWmPy|=vmt6w67Oi0s<Hz;N+2CclbVprQ26OsUEL#c~xxmbs z?}xuD&rAOO`X8Lvq}JhIO6BIPC+m5yJP`WIm{4y!{B6TBfC&0m3W>#N->8;dz=1+v z4C}LlNn~0r8zLE(_$S6Pp9w>pysNYJ^Zwb{y@VZrx5Ga6{c?7OzMY$uw()vPp+3|0 zm_R%)t1?col_pSP`kv#SDeP1eE;5$*SiLZ&G~S+~g8BiC(`%*HgIqM$}b%Iys? zDcDeTf;v7O$7tO!p-q7+x~p%cw1Z9TmF>_wLsh@m+M%pK`wbFom8Lnm6Wcqh3oT{) z`iAqILnGxI|G#+dlU`2umuomKy+U6brw!FeK&c*LJ`tmLb?qr=lc>90uNg$^Rr zm1E_1Uyx46=$=-3<4J}o)_-q$&|`r88iJCt==($;d8TB)ow=ZAv(45(=}_GBuBAx0 zMK6Txn0H)!gJ)InxgKd0{_c4S*TKZWo9eHIzYNN^vyt<6oYWc4b68kQcYJ@XzUv+40FE;uhc~acy!NqK=`aoVy`c4uT&6)<#v2Jb4%za$ z01Q_l!C2J0Ev>kIcww_lBr!;K+xrrKLdt<4~v%t`6TqZiK?Bk34KTi=({AbX)eX!WmM?N%Jnr7tJ{g3j%?WboSf}Pnar)*>1bY?^)!xV1;0h|#V_UMB= z-3rVrP+9Qlm%4=$*bXyCnf=IdINI(~@W>F%!A!!YQYpH4Go#LdvSWkDMk!HGv!7Q#6*8m z?_cyJ7}C=LESKxSR$Gx(slEsAvdZ9Z0B-fs10T| z*{!VRslLSxJTtb99cW>b2frbYQ%Mpk4wN4YeEHG8aQm7-(xFntHsOl?oqdUCDF;AvO7Uz_xOJ8|1=M6K`vpR@ zj(^SHItmUuc9!`?kRp?O14-=u@8Fa~_Sa|M&@SFUP-14L_6YD5xn{sr3nG%|FpVV4 zKrJ&^er03t?Uu2Zj&FrjGW8VO``6+E`@fD|UPXij^GRzwiC`d0DubeE(<0%l1DOBrFf88oR}3Y3$2&l>*9cXSSr;+G&T{5|tH=+|gj*#=E0)493=Q@w`Vbmr9ZruMo>yyJZ`b9EOASt6ur4}wD<|nJK&G$BVvNHbdwP# z_~TWBL$fNw=Qj6l22M_p8+W`5-FFEf7z znEVB?KUY`EY!;#)P>QMwP8&UCjDD0o`${-QjZG60`UG!qPgczYgYfcu-E+k`Jbg2M zLtPMby~PK>W{4Mc9=E7c+F>2}&`h(IR_24VWDaG%ZxT~Ef%V7ltUVsT$<~Qpg2?1NzQ$qmi(cGzsLwQQr4} z%bA=5#e=P6(RS_i7Vm;FVN)yEZSdn89JBv!jIeBcL-0NP=0tRk$a_^7Isq=#3#gF# zWU>=xMNq%zNtaRll^L^JKmYkO-Lie8*rclRsDN*dA_0*T!Z5) z&*c$}!y<0DhpK8|hkEWnTNz=EIX0q4@@)eq`m7LwqRY$yxY#$Om>%|OfE7UM}mamFSZn zp^qLGCIH!@v$}Qs2ncmgeuu=uN`s}^nPxZhea=fr1eN3{TE>L9tx0e!*>zk6^Cg~F zYK<4Bg%Kly3N1Y6=hKA)@=Z$n+vs^3m3#$EhM5okS7_bZwz@C|M5wpByFca zLS`$7_ePuXCGsVWORv>R<2wsP2Ss?-&$$HobcDk^HJCx3x_e2bo9fCVY8=l55yLz@ zrH{H|x>&9c6%=753yz+lF1Us~o^@I-@s1Zu47vGmDATUg1SWx;%_#aJ{UInV} z_Szj&F{UPp>q2uJzjw$Wtolm40;JdvFrja^^xA8+;AYV{KG_QYu~0=i4F z@88(AO`5ikJR15uUTx7_LL$#*8k|h+4q#|A^5X8@;(tc9*(xr-0$X!8&9K0b&)r%R z>eXkvM1e_y@H`JqC(a_pV!;%yfC(IL03BtRm+|`MuB1C7d>=cAn>#hc)p=t9rEA!% z&vDnvs5;{)ryEn{F$xAd2uy4xY;AH0(e21))C`&>6E|D%MLU}m( zBOZ+0z9zlJYQsZsam#Phl=1NQd)>^J3s?@fmhNS$_x52+LzcXDi;0E$RG|ajD%YuqKkx z2-kg}M{^#<##Fof)<1t7c+DyRJD!K&o6y;NKd1B>nEUh|K;K8tX%_p=Swlb1wUfs? z=@X}9V(pL&>(PwJSHHa4N^$MzYKxO@<~dCEK*JPbPo}{HK7~|yq@j@~xnIsKVl<%` z?aG@kPL3_$3f-==Ux&e7`LC3+I}`qHHiU$}Xjr0$bM#xGC$cHjEWQ<<0Ord!vtDq@ zEG96w0&V28xi%(T1xX*1jGWDSGqwcVxbHHxr5$gpe{g9g1)2}Hb- zIRh5wcO4k3*0_DQmL{A;-<@eVxrwhLKxO&xp#e*0=4#JN*l>rz3z;9lH*$;v5h;Dh z)%5v{01~6w;R)2^*2yiQT(K3&?&H&>h?4cMz(;=r6$1yaE&b=qHg~X6Q(d~lbcbKs zskGS-09X^_dL#y53rS!VWj>5@@0kh(n5->Z)==WtB;l=j=lhP&+Q6RYwytks8MkgX zkP}IZV{_@K_j#72dLUXjitmIrk?rFF%rkc5vS#34on66E8in6guvejSswLvIs*kiz zI_$~MekINqQgMO;)>$wX8qJ+_))SQuy<)!Wt;_oC2j^T`4{|jwt%pSGtC)c#H}253 z7My+t)onfi0F&mZ>lTKDk6k-0AWh8RrT2$t8{wPzaUp5{eTGZoN349}&|H7EMV{TT z4q&YgG(Aq+N5Dzj8FJB-$FR?X>pJ1}9G^IaXWXV|r9jBT=F`uDyss+wD^2yU2?;yc zxEh&3gbNm?D$o;E_U89`1J$bXZ(W$Npa1d1M`3b|^|Qe$+hWy)iSDmp4DPeFm`Y=Rcy5eOuWgGlaGx|}?(o%S_lP?d z6=lULHJQxhfJH>gi_MHrMVSffSh|p{p6_(gjY&TTC@^MVQlD` z4lk`suqK#JIbTz2^Rnjn`Cf>Dx6B@E4g?Taki^r*YIr&1H|6);B?e*(ZU%#|#gOY& z@6=e@{z%upP|f=HaPpLK;$57s571Oi)F}&6s^D~n-JZf{+h@CU)w#eIUnN$I&dvR48*enXevi=@cqLNP1BTmN(GydCC>r}&&wnS3zL?nOT85L} zUw0Dr48|!y7hE*eue~+#?*hg4)@06AuV*&X*S_RYSU6uLuMleyiu2??Lh_kY_>2tk zpH*U8Lsu+*jP7jT1lSu3pZWg%*pZ1Z_w6W|SdG4f${K+Z0OhP7 z9FaMD_R?W=AGA|)>rkw>e=$b(E=r+{pFi*P}D zIX9VA^gt}AqsJgzKYe4|Bna&l1mfR%9|o88v{pBlFSFL~R#bi zKhMQgiuoG|8m(J8gy*6E4YiA&kEj?no0sb7n;~{5fRIb?{L~Vh1 zs^ht8insjfxUxT`JqJ{n0!9Cw#87?b@g?X{xbErS&1^|(_S@jq;6IaiZDZW+E)Zt zuJkoH+``#hu!aK$wmi>TZP`p@LIrcEXQ91N50d6W>2ynztioO9 z@2g9gx?A>~EVFv_>J|!>^ORjSWF6VPPRt4j<|DWgj`y5pDV}mRDWTV<|D&5JlWS@R zI95M8kYD$%%O?Ruq*l4x+4BqmqsvRT zn@CfIP~h$eF$#f~S!VGZhxkz0J98QV;!d!RL&Q3h-Dv$eUhaJkm)7BaTK>D5yx%Q6 z27~MMleRNy>Nd}(DTZ2!aBb2v1-69(IHLJoLG(SzshG3l;w>}_6^1kWG#$ik&D6Cg)c@Hmcs-U@ zEG0$fo1)(@be%)4@*p)>F+*>4KFoacCSWxd(RHDcw?dtM1|xzdMY!^liC3$;a0Z5E zj`c0;t}RH3l{}8~UNNA1CY1$c8Ui9-qZh$=zXxG5KRX`u3tbmbo4+}A4sH7nGg6r# zwASkcv=(2Q#7kZ>fmHT8znSAzbK;iD&&M}@eDdy#y-t;& z=BnR5tL2pjhsj}sf4S)L7u`afnwv=Y6zr_nnqTKF}J+ zwcj`0HtDY(3^4eBx@c4-Y}Vs@{@p_u3A{2l-LU=I$vur?Mnm^PI)YPgqQuG3m3-J& zQHd_AGV&fG|8>L+raf>jHFPyJ`r-}zr1GV>vipZSGZScjHZG0rS0nb%5N+?)P-azL zkJfGe5dV;Om3}p3m@nrF`t$gilj-{^E76S38|wT=l%Cwwy5T5LG@7@$RFB}Gz2J|vZUONhbDUiR4wNJ6<^@9ULa78{bqeFWZ{iR-n-Pf zT1QzqLvxMh5Xq=HN<y{qa(?_lfw4sg;9~+qj zh(WpwpE?B^IeTBfpo>;s&}6Mr1s%-GQn~bptpUhXnq1y%9W>2ZURGLO1K<8Id`K$X zj%)5#6~3(8X)H~3ZxA)AO6>m<{E>J6Wu;BfJ8fE8>AYu#nmk2+x>Uy#?|;!Vj(i6; z^SA)XdCmsKQF|<0m%AVzY$ktOF`inENf`j9JT}uwLUcX|g|38rbezax;30TOPG~SC z_um#H#XnMGz89aaMxzh!LTt~6Epyc<#zZ*S7LdkYg#UKAkopev;}LIn+ZbJV{6ad2 z5y$n|g1?*2;2DkJV)ygG8;(#Q2>_&WK87*IW81$lUIrs4w&VLC6U1w8E~Aj8W@UkM zoum($zpE`$lqvc5Kg?P}{|}>~4e+(B?&s|ymtF>gg#pN?2#2|hv8{=eH(*+|vKZXp`b4!KGww3!2t7xHgCRyC#kAS}MmxF8{x$2*~g5 zv$j#Q%fQ!x*BL!32mi0MMGBooMvPmwHx1qGlO4$}Oxl@$EYWr$EH$eHU94)-MiUku z1EGz-s>VlVUscmG))=@M#7vrBxT5U?%#6~(mO4;%eI8OBlP`)NPX+D@0r@l>%hqto zi6ruH1Cd(C1Ng#AvvyKO{~y=>WAK3zUA&{>=cUN-^^!xZR6nIX z66vz;&f>b>xlH_4S-y>%q0CYwvjd0{{&s;K5OBAxC^e*}4>}+L=)M1`g2*|FmHW@t zo&#dz_O~9?a^(6JI^cgmI!b@QmAm2F8txY#4In7iz2fc5A)VY?u3}()n$JWes4giXw zi%lSuSJy!4T6bJs$$8VkBA+{@rO{3k5N7nUfEHcKvgT0DO=c!SYz~78&9a)V?IH_r z8gEDh76_1bb*`(RIG-9b#q)Fp>2^NIX_7q`B+4OYz?fKOt<|f>^h!{RH_)mxJX;@^ z-re94L~|R!-el?FVzjIiLUqi3C<@e2?dt--r-g+W(-VHh7{#~v1sNT}R>a92|8URT zw_o}dgN>Y$y>5Rwye)0<@cP|alSZ7VioRXeukkfB{#UFk$Ef6lQ27jif0mEHL+PS@ zgST1(j=wyYvpBTx^oU3TrA9+h$YIL>vbAQ(p!kab(#6?E=KteqovA}raDa}Hw1Xy{ zwxBV;2M@Ny+}{<;R0mM$N8Q1Yho$^}*L~L6-*TQgIwUX$QdIA&U%wGZ+BqXBw94J@f5(CO>~u%y?Vi52XI%CC@m757lxjJrfU=FVn;a4G*hNAYD5Bc6~Ov z5m0i_pnj6a!>CANLQ~|mt=1@}sPd9{JC#kvg!Euw)xo-(mu{zg5C(|Pk3xX3IE2IJ zOB^C=UUnXov{`9Em3n(a_YyFGCpL*U%PuDfZoTm=-%mw@?V0Hjsj%R)2N!44=2%hOwYyi7Av)ZcDQm-0NLCtZ2k~^ z(sXu@0q|LQH+txWQ44e)9Y(?N0G;f+K!#cX#XRtrPI}eZvVtz;otOPPB3Cs5b59@n} z4j@a&9Fw6DOekc_?+ay5l%1{gE`}`tz|Ym^cbVrXi|+&Sn(k1qt2B_mGB*cxzKX$e z(S1Q_ zcD8g!OVX*D+Y$Y1ozR?6}5c_SDHytJ#Lm6H6VnRb- zOZZZm<}+JQd=XvGr-$8kR&c{#8H4?g%4zrV`#aGosulkq0sAteg}t^c80~#I@1LQm zaRVdDuB!*?{ae02su78urAa+X)fyo=EzGm-l%-49(k~UWOC(sPL0TBk-P3$U-4!{y z>}cr8=i&cL(w|61&;ys5Vo7srsB5<(RXLIe$-ITeE;n>v9*@Qs#^)NiXiV3(4*!L&hvRC9Ed6XoG!EIGruw=e2D)4 z;hn+?qW~Wy{HtN1>e}nKW6n%mCb`Lb!z^;N#sf4#h7nQse3{xde`v9BtkiaG7)<4J z2@uz>UY^rSdFGei$$M`(Mr+4JqLt1X?)sop)v)%Vp3*!}M8+}HoFAtBzFFw@Qe)pq zU$BMi&M;#c0PY;TU~tcq4JZ5KqCT58(Ud3H$@V9AKefxHKiQId=N%K8qZxgy;L?n& zw)x>YqIo`dAYAJopcTwe50{QCT+`#xQq{z3+$w^EJZ`^6HApmL6sJNZPks9ySI*P4 zE9W}@{0w&dNfm2g42)lRYOO1M%Sc82_4U6Z!Mzri4Adh3zH(+-PX{U*9-s)AGN>CS zcj$t79v&K*TdK#fv=q$&*#iH6lEBmO?;;iP{{avhDBE>&2P7LCq^-@$7<4u4S3#`C zUfi4EYioqQUrYCr-g99CNm`hTNq05@#@Cdg3nIMuPzT1#A$_4NhQ{CKISDC zTT8vD(To8_t6eB}x-g%mQ#v*hn9o;1gP~HqVOol2i9qc0e}JF%(=xk_gTzS7OiM&g?(`aXed3N)*LD=G~mLIU#`$HC~Aye0aEZK{G3^aLZE@MldClWbh(FZ_KDNnOH z3f%N7Yr8D<6eW#(r2vyHP3ZlfS^|o)pRc7@Jq*o$U2Gk~xS#j*d)l-0Al&hF^72f(3xTUi#6d(ot0^8Md@g<$h4kJR(pJs_5oDAyE4bC7ZE+xg~Xd=(Tw8*W26{ z4k1mmK-*)@xoE$Tv|T^f;w6DYHu|l7T~chn&upo5ID@vgh#0C|rzrsQR=I!-ny;Gv zwPKD5pkPPkkekrHQ(IEF6}cQskF9&jjFR&_3lNFy(X!G`(?|_o{~Y`Q1=WFqq-ex1}KMVmBuBYF#<{)8{bM_|n1X9H+|3`dq83 zAzY56aCf7eN}kHiOqZ_!xqj?@RgP(W@+a+)Gm1@ay(@ptx+xexau{~X-iiE8epFf$ zV*G+w6hATND5ODe%Uox>6<)5Se1Y$mgxi!TFSJfdXbFf|&8wXL4O9afgsKXAw|$)G#K2LAr04 z;!DX3`!(8@a^-0_Z5p~P`IHaao+8wKvY^PplKV9e)6+lxMh}@qenP6ieJC+B`jkc1 zB*g%aGTdRT5Q{iic&1SP@)mYY>?!GFc?g?Rgdt923j44pes!9n9@AWd2j=co8r@5z zTarP(jj3Rde=Ee@>)oOMBp&$xoXX*0Dd?OsRHv8?T111urx3Q?!%IBmFVwcR+Na}{ zA|62pU6aiZ8wl;}4e9p-ccCK#%F@0+w)z@M+iDbFFPjB5iQfqEa=EJyrxWJ!#h%^~ z4pU|0{h?eW=|S3S)D{hJ9Q^+Kfy}z}@DLPChwBdk&5wahU96763;ovDDY@`M>Orh( zIC9$#q`G~*Kz8Sty%TFgP5wm|rb13~B7%N57GT-kr2`0$Qtld+su(N(I={1bc}R}IGe`B*A@#4mVz_4H z&l9tY9Hst_N6Tq^4jnqpp8+>JCTrthlu7%aXR zPqLZvc*@=_w1svPm;Rm@E@eG?O6bek0)`Ebh$-PGK9i=fb^6SB6ElVocL<%Vy6Zo3 zT{*2`bRvLYVMBNj_<$)OS8A1xzR=X{KAsSZj*NNXzaBi4UqHF#=z-{W+s#oHIXD&b zphDPn0F>T;*G6O#|6#^Wg!dxX_(P_%8iPc$JTBk8(e$2&(3Qd^8RC6o9Z#Lsl8~UW zCEI&vmig1y#(i&xiY%lRaLUcu0xR^}QCt3C4UJ-8Zw)Hpp8BWZzb;V%{2!2dkpPEi z3GRdICfaS4lq9Y*@uxo>+IvutTmAfJ+j}^ST_8Z5`N-tYhn*~Tib-YX6ICtS1Ne#2 zP|;xQNfNLg+G$G?)u%)&>m>=hozmYAL*1>LCUunFRLb$e=}0Ni+vacXuEBcehB0}R zL-NwadsTmi!GtT%tFL!1Xmo3BM*F^xLiMI4poYOyN5+revOutgD^}WHpJ>ejk4NE= z?5!_39c#yNgDFrsM^sL(d)P{7QrFavR;lH|3j zZ&%nH*u^6zhai=0JURQFnXD0+_;e1w-(EG!k`~qXUeDL4+`90H%uik=PTlQ1 zNCVEzHF^J}|A;R-QRCZ#s-FuX^sgMeC>>j1Zr)025=)MxRg-Tc)_7gr=0OH<`Q;pZ zgI}#v?WC0rSq`vCTGghN?1{yK3!si9)EKJrPZMWOw)&Jp2bEUwVk$i6#{Jw65%Bx3 zp4fQaN&Lt!a+$)%s3bDQ>lF1eEtb-QDS5LxojanZISMcOQt|G^{TfT_k!VNN9Sbff zp|3+1HkBy)=>d-NEi45oM=_>%ceJA1xgv)gegAbRJ+;rhZ(MrVRCulLsrDx2TWAXA z(7QjbgU7P@%Q=j~Xkei=8m=_>VkCRL3g#$Q0xg zt{VLNj!igRL*b5_MYqwfPMUR8!#?AmQ)*KV&C~YL0Vw_xm16MtuYva4yUj&SW=0Fr z@6J1yUTdnPZnnI9w`)E<=DamM&kvE~yUec?$|vucZ}w}jB`b;A?)_|n3{Qh43R ze2(`t$koH-U_LXH8EmV9hk=!G9Pp$zc4;b7%NR&8+!WbTGI{!_L2GRa-^O8_Nd7eGtdG*JHH=T68d&SXJ_UAS`-9u4ex;5=kZ50dYM z3tOkl>}@fNc7=kT&1hymqT3@geD|=T_WTi2aDT0(&in8xr|&Y=ORL}BTll#C>d^ZQ z530U?3GEBv{eg5$heWcOAOikmAx}CiSd=A6*W_Jn_X57)2iQ*M`(rY9aOtKT;$C8n zHwZz$wCAZjpe`V4(-bx?MJfcS$kBFuAe%k^>3Paj^QqV%E;t>8A&f=4mCryCM3tc& zvK=+?zWUvBvL2S_Wd1#v!>TBCn9~Q@{A;52>0i%8Gq(Rkyj-4z_gTV7OYM|-Aqv5s zEE8Li#~^Zphsce#og##mhD$#U%9IZj_79Qh+*MEDTh~h#;X9*4nlQLcNXZM|9I=x^$~T$87?QJtXcz%fc^#TvIg{i@+?*`K}G==ba03@O&* zV-v5fNHK|y=$lZgY6-)mtPs>v%-kK+iAL08h$-W%pY+RYEx>QP8@AJY(IZSp2FJm7|C$MVjgyMUzhi%V7gvASB1-;$sQS*RrqZbEV8o1r5=Rt7N>o&IXo5&50U1R_L1hGy z5)}}TUPB8PM9espfQTraK}3fpNRt*2Av8&l5_*x6P(w)wq<%N!`@U;^e^`rnFW`Od zbIv|{?{l7{D7=c#%pNK~=`O>T2I2iHhR7-1&+DV$9sglE+(K%uXzXd?($J{RUI#JF zU^#`|Zfl0eU^o1DiR;8Z)Z0AO(6&o{5cWv#9+ld5=#=43TfTg8ZKv`1M>F@I7{PKr z`1gown4eiwRU0?B50f$2mQoAoGs(VMV6k#`l)2qEm>s_HMiGeyB&S;Q^Xfg5Uheb zoCO{H^iAT*3(2*(K(UqZ5K9ekUuNr?wSD9Ie(Aod5#iyixXd%OLmxhJ=@GCX$@B37ZZ@pV*=z+XTQp^sW zUsnsCGed{@x~0;c+h#BaPY0I&Rr;~lH|%I;hy1GXZ@$oiYK9TaVR=3E#GVIf(Tzo4 z31~!|T|!ZJ|4G3c;DSV(Q#(7|{UJAlHe_z}N#G>-wsRiyiw01e=_K}fCg#R7_5HU2Qmgvo4`l{b7rva7&g{=VuQ)^fqk8-#(`Av=pZx(fEE(B9 z`GLT(doQ6m3B2R?aEL>4F6%E@rS-tKyp4k_lm$PJ?R^s1`3%_nO`^@GU?nb`%mhY+4+!Gn_WN!{-b&tIR!o+(suyg0GB zOEv-_p}D-JZx#@e6ISq^aAJSh$RE#OAX8DQLc5qscYIQ+s>8P4lW8|>boQXE(b~}Y zyRM8}69rc`va|1t$z|IZui78&e<5r=*v1QD(mphEN!Rv^+N$>;X=THUo34Gql`+Vm zwY(yOh4w2;8sxHqlE%93-%Ou@5N;@$WWdLf1}|;={`eyleixK4c?Zuh;?bGs1>+y` z>j*|(8!bO7KK60{efN5u4n!Q^LHG-?w6}-OFfebWzZK(2?*=zO!D*=CzaPKF|HBrY zH#hm6s&=?LE4d%B5|+`A04H>My#*_jTegqJql@yisPrpDJ^$MP2)w^(FkyiMPkGB% zcq!~YblHOYNhW5IUJuB!I?BT4Ig|Ck98Za!T`7In(qWso`N1V?d(FC$F-A{W1p|Bp@BPF0ZMrc9% zni2G)h+I}<>5n+{PQ3#j4*W1S7YwbVbqW>n^*%}5GR5qOANVEIpALc(pS9FY|BMs0B&pd^y`MMT zzFn7x&SXo;D;mtT84adtm;fECUO!MflaIR6BzpwiC^V}5>s=J*%P_|V7zWA(^IW&E zma06zn^dk`>czLX)I*O`MDtQNF&094_HpIM>4*?PCr2tJV1m%o2n?W}g;(&^PXZ(C z7_f|--}Q>4y4u{H1;^4DJWA{Ny5zQo%<>BR2_)UH^N=3IP$WyLiH$2r;P?JUd6a5e zz$w7*cV389fDI9~SmB1M+q5viH6cfacuQVhOO%lkbJ{}CY5(s)d;UxDFZ=#gB>kat zH~9OJ-A384td561k$a!w_Osg`li(NYPRAf~GV=@!0zzhUXPkYjO|G{yho&T8M((mh zU&OISqqLyU&334l#-@VraUVFi0>I-5p&*M7`XpDknPE_Md5cW8&;QN>a4g~f;=(zM zJ(M%B*f_WA^GWQjrkd?U*VG#NmWeAj4 zI@j9SNi6)E0~1}!g)DILXNX`e9;+fd|6Jm&&*#L*MYz`@-Gs;MKTiN}Bz@XYdqKEG zGGqEo&Ye2T0%pr6Np~<~Viy%Zvj zk($LBKM_$V&zI>KdoHJTKUR~rw%e)3Vv}^w1ZNTdF!LWd?%#dCI`p5wci$=<-9_2M z-u{tbE}$(D$PeHlt9(fC)cCU+eiHO${)!O-l>igOHFGSM_qIio65OG>zQp3y{Cja| zsrqB54*0+lJdA1+AG62hT3xgdH^9Tk&{C47r7&+6v zO3hLBWv|?%#+MHg;=3T2j-G2i40~?$r`{xMeCe^aIxBASD-k7pjG|!viH*j=FGVuR z1rbhs&!saBn|6b)lhP182;HtWd`7KMJfAI}$wf(t^`Gmj{(2)}6 zhmF5(@IIR-3X`(SVf6$sJJZSR&9#E!hAWRAGt7D;Y}`Me$_~@?p?8o)Yd%Hq`73Xf z`T3JcHct177(zC^0>W=V$v$OADMuQVk1VpciI*w#@YO?gKyYN)U#zZ&Zf!Vmtu^?5 zBQ$E{pTlo+^BU{Ts>j#zQ&M+5_ghP>=xDnBPqc#D$=%Y3z$6^LD75{xa>%8lwcqiG zk{~8t1?%TFin{3}`orf$j^ng3f;{I4e%OW%V?bHP)B4dgi+j2)wO z`NGNh_h8-~!-z?B_M9vDW?b46zi#@ircp*3mGrsSL1KDUt+(%p*0VvcB8g`$&1rs$ zRhYvWUxAJ69qXkjr+6pc9lggcyUPEAIy0#?y1?+6D3H~FJ6>i8B(ElY>+S687}lux z`vqH#>GCZ`$R<88(-~H{4OoFIl8|?TsT~W3D|XhyLY3P<{G57qPd~ch*yQ{#(*K6| z`BlXg<@2xeGU?gG+IALU=A`b=TPHp+smT@;!WI68Kfw~#TD`c_t8;D(F*YtT786Bc z2M`++qLGiRDk0@-kX7z$A4Y4+9a5MU{nsQ|O&ydhYAWx5Hz69Bh&yGd)&mhF%)`=4r-j)R zYdf^H|A2NZ__`}PLyMU&HYsn^sqI6iuhnz`a5U2Xb;oZG91!3^Y=a0E7fAl0=0ZaVzOqSk-$!0o&srCY8CkPoN-8tRp zK*BFgXLX5Lv-aIn^A?kX>^G8Md-2k6PZ~oNX7Tx=#p+ItKa>%pT!X=ER2%M_-n9}Y zcrTB2PRYXqbkREVRFLSUbrJW#XYwvRvua%LR2zJr5#Slj`fDr&VnT`W*ShXuVU;R@ zv-kpW4*PLEQIm6W*N%d#wVsB->AOfx&o9uLjKfn3g>fq33l5Tfl#&|X6Vb);Y8qt7 z_BbIZCswJ@lRX5W4YP~DN52Dd3u=|8cfqs-_uRL}7DeOw9fH(H98t--iVsCN>P8Wn3f(a`U$ zZqv}JPS?`SrfKNV?0Nz`Eyu!f(*a)VyJTTwyR49h@ce!vPhNwK32%>7fC}t9E;Y&q z%%t`iq_l|}>;7_2?W*To-d^DsKfX^Em3xDy{(DJ3`UA=mpz;*x=)x=Q z9P0HyCJ386lSZI}h2F%TokR_Y=>GaBh!`&DIQzLgk&f8pIW_{_Ec_=A1K!RioA1ku zoh4amPQJ$hNn>i(&7TP~{8%vRb0+q$(nT!WI8~HuuQ(TG6W3Q0B&QOmw>2p)Z%?zg266Y3z5-EhODQH8fec<|Y>~eD-ivKc-Ui0ht!xW2H)d&wcm!xNM z_lyKX^%@73LGZuZTVuccsG)kN5e70v7LjPmY3dd2Z)xNw>W-YV;h9KMUa=RCo>$RI z(*8gTXvDgWD3^(Bl@;$_>FB%6!k23$xzrm>?FtXT$}4lVv$)+e*}zsTnp4twDgBhm z@liynyP8d6YC%$8KCDp`;?TsR98sFM55Kp!_-Jv+nA3011xf8m&jUphx%%#}HO(u! z3D|Kbo@d{~?nHI7pBW%|QyYvRrGdXMr}Vp3);=CMp2Egh*;IOf;r`%jIQZ(H>biUU z)5mMPO!g@DJRMPaZod4k;x{dAVQ>KjB&*hl7g;5etlz#0KS=941tyKBV8R8VP?=Z! ze2Kndf(%D^oynjZ8@kwx9Pxa8qJij z=q~eSHJYDqoR@0l@#~1su{~p)zc6|Rdv=}kS<91iJt@gvZ;5pI@=^3yS8HKJPSjGt zsI`=|?`*{Y_9BI#5iwM;D~O@CKSaJsa%^2jDM$}(=<&ocb^WXf;BXSPxxnrlL}SY? z*ET9kqva2CoRrJg>#%j2^uKQH_NTosNmcY5=?On^?B(~PUrtL1l$fVq?mi_*iDIVv zfINe7+vwokNB>)It=AkWxD?pdt4Ct2c*x<3UDQ?%=p|(mIY0LIW}s4@rCfZG0cv^{ zJ?N?z{fNqgKOc1pJNCO#I}4$B!FiF?hyKGat>|Rt?C(sBoT8)3=bR1xt<6((#10=6 zfCt^J|Jx#R2Y4KMK~@A;0ll-~Z+8-fCMkilV{WTRH9=So+%7w#EKKxRlCg=TZjX$s zfobBZ{n5}L?T^J|ZQ0Zaaly#5f-F5o1N^Hh{9F&=xpywPP z`=bU}(S4|Te$+$CTVqysbRLB#lgdEunawd%3ZQ)lj|L7G+4hxPW8w|?`e>Qm7exum9CX~Cznaned5GM$h?#avTmZ^+8obk}sy5Z79nmzjVRj*Q8^8D6& zo0R}V*Gk|&_(Q#D)74S3^eCzNU1{FcZgv;n^3y+j6!rSnMsAO9Wyh|EPH6#anGRTLrhMtBJc9@7cJ#!txa zsb;rXGgO-;6I*|QC;R4WJ<#Aefm*V#-Bf!46d;GZ2R0uYI!yUdTV3e9`?;fb(~Ta3 zhi)n!gUf~ZY{&*Z>S%kdyO~HXC zsjn4WkNAqqv1gN+lQUmR{3=GG#M|@m6Dhf{AZG=$TecO3v^@JKr**~m$R<83kt+D^ zcJ*Sa2<};ZK=@|jA+>n1@$hDSDx!8PG`1uM7*$nFP~LjpVdm)8_73SshS)kfa)(}; z$I9pMO=36&#c0_Kd-?IbODy!imZz>ukJHyaevnnxvqd}fQdrKH&c61WQA9xko4oT| z0cY2@XLd@5lXj|$Q_KFkt0`&&q&!_lRrkcFog4;6rO!)!+wOoLqmsIzDDQ7qdnSEp ziRmf7QoAy)oyQCVO7LNzy1^-3CdNtN8Mb`A8@#xQxjRBhg=4XmT`!2MOxko&7G=eL zPDzyRnP-FFjha=D9eS}@kg0xNUHErUCANzzGEk1aN$JZdg~L6mx+$+O2>Fh|lkGd7 zR`N$j&YYxL=sP}o*k%y{Syh~>{_e+*yOBCJw#p4D=U>|Rgq8=f#>+AM;pSfRdeFKto2kvhi((P3ZrEs0kwEoE{_)U(ItFb ztISd2Bh!nl4w_@p^<)w9M`Kx2vbZl~T=3Rzx}dEjr}o2fHD&)Dm;)_wwd zY!XJlKdparw!ihAMg?Covhici&WK}ydXJpcR-#w&3zA8C&3CVc*A{&&OGv@lY} zH3_xQu8ApSE%)GkLg?32e$fR#%3cgr0v}X=D8gp z#43;^ZWnrwlFGcSLQ;9!9PceO>BvaZemK5us3#?67QARF<8Gf5`1^&11tF|0=(*!- zC$oG^$U#*(YEjiX*4A8~4-fWSybX-y@`E=P6c0`{5)a)j(8}6`Ux)^IutpNJsL_TucP<%;Y#72G{kV8dD1h3^0Dz|ZS%R68HuC! z#~9CV5vn=^WTx8Qiu;j27O3(W&h_n(ag>Jjo(wxF*#klQ(u^5TCEo6RJ5c(Z{LJ(D zK56z)v%JL8}+*SUtau} zwQa#C9ZqxfD%xpz+QGFIb1zO$N{*>(%sK4D`?lcMmC?aJulN`06Iexb{HF)d7doaw z9)D|&IIHSSUL=m0xQG=Wqk4lHYL|-te84MRj1U0mW=gNBuj+dI{$pcLafFlL!&s3) zV)Bz^f>2r=yr{D(T~HSnX4(TvMFrOyq?|v8ly#GGInx8xMZ#IwBop#(pZhoYL zAC}L1z%RC!e+1AJJ?=Vq7}SaBVT?jv?%9r)X>U@up*8CP>GC zhPN?2(EX7XllpqDBT?^wH7{FW(UEjyK<#_vs^Ewkn_Pi^!ZtkZaZIU{lbR4WqsrKb z>|?p>y(*e#L2obl{CASD7T!LTYd#?y{H>ZA-hby` z`<1qD{OlPy#%Ide+Bs2qNDIpN+%K)Kf!7{!#OVC@E%%;(3f$Ibn3$x4!k!CXPVf>l zI5~E1-fG%G{oa+I{Hm^DfIr_W@X{iFXLqWZ7)HU_x5g1McKr4s;G!HJ!i5!{aVNvPe_ zt}*=jO#-B1?AyAJ;>nc_iELlpo(=>w6qr~TWx;4F z!FVYITZ)q4dsM2HJex;s!Jb%ekw}~~eq{xrum1zxuWveh!d`sevfsUe@4H=$3NmzW zqFk}R=`O)&j`Pg3aRTL#i1pIe%97<0!dGf+(2RQt8_5dk6# z6?U5E`FU{9`^iTtsoSzB>~=epQOWd~Mo`fwQLMRAEbEc6P1&_J`OC)#vqAH?f|f|| z)D;R{_QNjsUN>9}Tes3{K< zy0Y`dS#D-sTX7iiuIjA&+pdhyuW2nmH-@)L^1UOqaO@m zZ|B1iH>GMf78U5xYTJ=4JUPx-z!)%n)o8!~2_|wPMO+0LkFX=eh&K_m228}sk4W@c zVa_N8bH;(cnt#)Y&Mox}>Fn)1pVXe?a=R%hmySF8O;Ud`{l2Q#v?CmOU%694p(LzT`Af3HVbMQvm`=bFS~VJ)97;Mjfk`nX4#$Y(2jc* z+thUAX65$_NByswMr@!vhUUdx!SZ`@yCl5mH%fPvL)*2-OSsCHJVg$@3MUNu$(t0O zpJ!^GuUftWifMYvaa3PO-Cg^Su~2job$RO27UXbfKaJNvnNqN_@9Ka5P{3&!Q<=A5 zy-4OcdTMkQ{EvYRTq<-Edx_7X6V}rOYufS=Td^cw;m9n(9z?!A)K+Q-R*D5o)E(9f zu2>dqxQeW{l1&h_;8Ym3vAgcl>_V6+Ogum^v}@K4F1Jhu3xi8XHxfiqLw`u7@sq5d z4VsRQT!PC~wC%At%6dBV!+6g*N&g{UOEU6lDci)wdcYJPbwqiKeeAk;K(ZyRDffez zxdsio80APp)^vQAO08yVpIw`El&IzBMngxQlma_sh;wCBgFK$!Yx3-_Yh^Ut$5>CL z-b-w>^Knbrf|T4;ZYXkNfgtz*u!^Y!UbA%sBRTD*^W(cLL(g_MlJCBUdnGe5Z&Z4s z{7yibp1Cv)o48xcUckgZp{MTjm;VV|3?t8=c3d`es$XAw12{cU?s?vwZJW>*XH((X z>&)}~(9Um}eN%evf_1qd!6OkTl$tI7X9@H{y6A_M05LFYWqaG|9Y3p;8D5sDn;+@Hn|R1Uug%d@*m5 zvzX1_Ar#-9X$_6AgJXOlhkvQTJf0eh?ZEXk9KkMyt=%eD4kehH$m`PkD`M(XYd0#R zl;PNW0sRGY$e!R|$DJxo!XZ4qQJ)nHE~hJkV5C%Dkmt(4HHm22JDC0Ccem&J?LCd_ z4uaOH$oLmEAs7H>xG6_MvhhaKciLzy+n!|JSCuY{xiF@uF{dnXO{Cdx;?BgKB zdM32wys{odZy_)}o|AUF)0PRVFH_>52)%3ik4??DlQuD@9w@*5&!V>H1v_>;@ZusU z>;F`lEdk5xMKcHE^uE0Enhp`51OJ#)U{ceL^+@>bB4ajm03DZ1qYtR|&ZnS)it9%> z2F`M_%T(Kf%2#AA7`8=}dm|hX512)jGgeTyrbL9*>wE4>|3++Of9@{_T~+pGtrs+{ zh$K%z$gDMTZ350+R1hrfpg3*7`zBDov;2X?hp7oFOId$i8d*IwS2o+=^68SeemmI@ z^KSo0<&Awub#l=6_*Pqx7jS;}DHd)#ou^L;l{6UvM&#WU`H z6c`yIxU^D$Q9X$j)bW|<2woj{q)I$xr}$Q`(-N2Qi%QrTH7#1)wVjb`T5h_Q4?4a6 zO+OvIK|24y*}>A?duT{m+^lb`1Xcb|I9E~7GYDeiKew`#k6Qn#lkwABHLm1(7RS1C z+a0VgdIV_)W=8+*M{Vj%&%UM-w--XM{-@?q!fiLMU**kBbYxANm#rXDvicD{hew2t zgRMI+K;p4laZ%^$yziH-H*EK=Crco&vS?u)>#}Hfj=MYK>{PTBNK(F565fE?x^ug0 zrkKa0U|Ex_5~o0Apc-CIW#fBpF4a)Z zV6H~LMI0i0fW1-_fHFh)9JkLPQZmG8H%Pt)IMvjdm>E7P zCm9L}iG0+(<@W7XZYpfwgxIret~UmHg3M zG7N&{HwaT2q5l|ur**N5dtSi?xS&uj=vFw(@$Si9?{W|ZxQ{BK_j;<%#JuGnb(s%} ze8)HVhI@XMcj4NNKJ}6Q?A0@2_dpRuiAf1Q)x`lC1ykip!Zk<`wTK;-%m+oK0;Uy6 z#Dw3qdCM=l9%nfam#Ap{XF)#ysG@oPNhWc$h#x!&n-ENu@<(tE!Rs+}9w!wYx}e0A zCfMPnD(znTky;JY%%WxqOZ$3id4nz3x|v~KPglrMg0RWQ4TlaFR$#?{LHS#%W5LSn~{wo9=jOvGQ3s981=~c za&|IK&PZk(21{K3{<^Vzs`Ea)w(QAfK`Dx{Zh>V~dyQdcCb`V&Mgh+njb$>wPw9y_ z%-Qzy2Vb=}t!q>U0W|TuBYDHhhYNaBXCH&!0}|K&!=FmE#rmw>lHGPLLLO{h?bbP) z$YsKLcu7{-UsWl8*2komo-#ZlEIjn?{CoHtzfLVZ>CoWy9z=N}=x_4wnY3N{UZ&Z0 zT3xHxQ_(R0)03cf4jP1J2-TFwmq7XN^aBl7P|0!veNe(rKcMFMHS}0VcTlvIaLkaA zm-p`)+qj6q^=EtUus3sAjnqc;&NdFoXv2H+iG=NW4Br+Tj4Gm5hSndO%Zi2NFwNt{ ztk!I_yCsoWd7pQCHHKcm_RFrlkd!?N-}uoPgdhj^uNYvZ!iJ0zIC{&v@+(qqb#{BS z9})i`aA3GS1hBH$vnCoIBw&cFM7vwmFPYS7POUjWf`Wf(AH2W+wgU^c5bM;K*`v?Y;oSEaXQEAt>|M7HBaOed``}+r^7~$2^o(D(87@ zl$UElz|T!%#xaw5c-g_)MqO$Nq&lC1abLFVy(ma=U zZdPniO;S86SFs`3RxJ_T36pf*!c_#tUWdl0we;q+G0=0>7K zs4z>N{$mSm^<`Ud7r|7ZlCHp#^Kwo(opeoCPd5BRsGEP=v8|S?1Z(p+&l8}Ei`eA1 z{4EroKn$VCdAK6J!*@J{cY4SLW(y+T^5qwfP)!%3PU{BT+>Zk0neMTE@qIS~sMjq77#==Z!tftH5g=o<`~DX*vcpn2Hf zbG>LiebaAHQW}Dc%)$hHr?KLX=;2xJ?12KXGl1H@q;X1%djhD~4^IORf68KoWR~uq ztr1%;>snILu|Pm;SbxQMl|?~2e|H4@)OIAO6wzJ2A9tHPOrj0?t)@-NV!ta8d;@$v;X#kNC6mP)h6Z{3=WCYAsZ?ICOpvk;PJM3GAW6~Qn7KinG*al-Ey}KsV zE<$UpXL{gz7~d)K?5L!hQFRL+mc2zoJaDdjpgfdX065j8&XD}WP&Twjhz&& zY7@M;Xe*$d5ZpI}r_k~coY_3VvLQWeEt|hxnayoT1=bb|OB?PDSpZvYGAQg!e7g4J z5dZk?4tSn(4j(_9o|TjL>66r_r#@EQWnGe0d0j?jQSS)6caMAb$P0>_(9f@d(%0i* zCtmUX{1wD#<2Sm;Bf*<=_bs&fn+%lu=WeHdiv*XP;_M89l8QU$z2`|P9c(B`J0sL6 z`>T@Jj-Ky51=o4gA>~>(tw8C~d>HI<_;biTA?Y={tnqhYUytLz_k5$$pB4 z9)Y?HQAUE}#aDZG;Z3n>vAy*5C}{haJkbjG?{f?2#`3LolBhalf*E%sdjsc_oL?GO z7Nk$6`R8)^>|#6-x!r8aZ;pl=t}Sp7HFWKXz{xt))~XCWRE^%KJ^4O+peX%~j5f8b z`^b{nps%&%naDrl8+uqWbk&`+&A(jp3YhN@w0&C~KQjO5-)o+6vQl#&3|?LlMeF@X z3pxMi^X*b^ZU&iZ*(xx8dN0C%EfoDg`2Dy46E{Ny-5eIz0pxjRIjP}-Kl5*4saEux z;h$g8!KT<5?qHzY!5w~zH7;C`L7(&&toeg`^b2oJ+kvpNqV2#L&K7JBP_lUZN&cDz zdZ$^5MA?PSm*;0(XliR6mx9+(GS?n@OMSI!tr&^)&K``l@m)6C{Jx!GF`L`BRnt%H z*IFJ4`@-ia*4r88 zsbHJ#@#$_4joK$Sx@`)Rg}^FYl-bb$nSoW_{KQUNmI;4s%6 zUAIlHDkE<|+RrMOcjvX0cW0wS%m#yo3@bQRKX*MqK+D?1BOXGh#K1F*?VHw#LQ@Q;mj4M(=^l zF3W9x1?x(-kD;{llAe7O#EiC;E0HVZwpQt;Jo3b%h>;{hhs5L73r!IE+bjGPsgN#R zoqzz>(tSs2q?(TX@)j2D34NLn_q?3`$5Q#Js^KV$jj5%U)?AelevAl~QDH;-SkS26 zOF`){#J~P!&r=X1e`&#M%^6d3y}M()G=mq(K^%q%$n_Pi&9cfa`g7aG+7Ccgwu0kq z^()BiKZ;iq^G{hZ<`l$SiR&0a0%Fu)TeSPR9%K5!?Ss*+44N$Oz zTJoL*)IJHE1-gcy#PdjCXblL-C83gl3%o4MQ9NE>ND_-sF91ml|43#M9X0i5b zpKcc}sL7TN5%h3aARAj;=b;;|1{x5M<8C~41PLp^BN+7nsDeqZab0AyfI(c_Q{{?P z#8G%?q*j@tcqTGZMb$W}hxklg0ugzG#wMzP%5)sYPZ4bs{vfq+3w-??&FU79X8T?# zICVOZrq90!lS`+y^qJ?5Zs&>&L0scWBvV2Hq3erDmZ@OmWy$2k!!GVcQ^}mx#>T0I z7M&?~FSy@ zIsH)JEyns|BX`%@PE#Db4#YtGd>KW(?YDT+Dq?tb@^#{c)r&abVK1TarO6(Lg0AR2 zJ<-^EO~6WbO;fI;35}09^ACSo0)wco#cX)%W=ju@$Qa{NLS%mSH_-SnaRhbWj zVdI}>5ODLgb8u7z7e)LeDoSV%K~NikfGqMm(0|sEC2|gN8z5YmKy6>&Rvw#l+X?R( z5JV7u)UHmVZYg%svp;Qd*r2m+hYT9NF#91v4N|>Gz6e)=w37$0hyJ*%3v#0nYyh)V zZdv~{UC%-3=;z3ZnZnf?{}#z`uKufw-s`1m55J@Q$n^Q_yNT*>S{^Y=3^WK^6e8Td zs^+vn+bKwu+U;GTd?p-W$cQ*YcCjx9&u{eet@w<8Q$?QxQuJO4gsria&74VvY4M9!0GUa9f!H_M8bEfw9 zo*ioz4J}hKB0?dkgpSnw1qhXLaZiUzqG3z#4}5**tA3KFp zEtb_BdN{WaM{-u!fOyiEi0cZao(%mVQ*cC32HW8MDV1x!oXC(zSuZgFv%+f z-Y$XWsLDJKd@d)o#EW7{A-%afr8K%(DsLda2~Wt1XzG>7fiAk4rfq;qJM4(mjCzTe zsoi*PzyRV%oz&FZ$A`b!=0gHHoV(qwI=e}kZ{jy zEmC?zecriHTmqc8RJZhdp?$=rk$$^EVb;2vrF}q8RD_%8vYRDpE$)u(Hkq(7PSEto ziB_(Gc&R3dR#1c2M9!EYP2vr)sl2W8WrIW1#=B-8TgS6V~S!JJoa>8({fB0cc3f4tbXd zV+nqm(-Vpx7CN)vd|`vR>%xJf!mP;n{6ZK{>2V(j^I0RTE>IOA1Q%HREb;t-ZVu== z+2CKGJgKbkY!qbDU!&+Oi^n=hi5!YQbpqJwPBgR@_=N-;2(T`{55A+I0C!QIg6Tep zfpf=iAo~Ee&Lwo2ZGU}W{@hY-RxUZf<6+DCp;{4xxiac@&Q;SRSdS%&`mNb^mT;wezKnfYkubRn)DnIlukuZ*hKn}->?weR#il|vB!i1l0; z&q7X3OVtfM>4D15ab8aqiY4$m%^GI5jo zkP4tIhs+Eyp8jAxo?lW?#VEQ8Rsb{Gd|`Y4f4s;lv|l1aX7FH^T*EvqcoA=CJ+J(; ziW36S>$gc^^!|LUW5E@@>W0k{2D z0j{be&X%*b)(x1-BlUS6mC`UB?M#b3D4mlLbnJuzZ|DmV4>r|kjY*JA_W0~$-?Sd> zd>@@bb_V-hKq}Tuuoxhi`r7PYMg4+wdGXVj!Zznzm3w*ijC=|>ujZ1nHm;tt${l|Ij%uJZ2^DroqKYzJ0#^ra8D~uH8 z1~zPFpw7c}fqA=+{Otl>>?JslEpXCs(ce_YkPs2A-o6 zR~v~l!ChY=p1o0~2tlW`5|%g_7|J(uifeu~w3`tRZa`rt2(c;~$W`20gCC1lF-j*V zka_3Dos*JrB&F!fB_274Zd5&QJ6#if!I)foJCJ)dcK1HX^wayKePCX<6R^v> z$SJ*qswrQaSRj0168@3+EWr_Kn%b!T*jAtRyMZ@26}TCRjZ+31kTP9bjbuqLdoYiYnB@!01>a;Lk~8 zhj~&B`g4e|k=02;R34QVy;Q@&y+dk27?1!FXIfa*$QNrgQbmtV$H8XbMR3S z1<~%4;Zx9?=0Llfn5y;1$({cFz|To??sbu zMn?{8$sV}Q$)q+h;|(1(^Tm?B<`DAdaVom##^t&M@CdeOP_ThG=VES3VSP5e z6LR-(Wps02JBf8gL3Hh*cfgM&r;@1(vYbJ$$7?V92;O?^U z2lcd4uu2n}<-wTvFMU$Ddv@kNF)#m=)GXZ1DSKQzh2M0;jxkw91fEyGqq!fG0$YHA zvGZhHfZafppdM#s0jT6WWh^8la3Oj|P{0fpL>fYDmfZ+5WEyw`@KBD(qA_l8p&i;j zMTx!XR?*1{uDmLCEU(0G@wlVich`KW&_Mt%g`Lw+*hgN8(pO!RhhvTOYRZ`FW|k93 zPhy?t5B){~%~X$H@u6f(RZs8|wJI3tLpG}JKSEH|xw}jKipN8lqs7rQ{@Zn9$i6GK zj5!l1z4Zikr()YU`|bB#wDsdm(RXUhY5(8eBf0Ya#H7~7T6VrD7`@o0u#D{iwE%K| zF1~aXA;)tUL)L8d7Qiz=Ym_-DhMj=MdNxya+1h*s1eSPlbY*FBU7@g%zwTHx1u1hC z+i~QQXQgTvOrWzfh_M|gJdp%qQwv^K!Q2ABux_En5`i8ED7sVx{}QhdkBS^zCkl2* zU=Jb-MJ2s9aOXSy2NH)_bo~`U3Fx`-hY1NrZ6>j(MHtT>s=VcAZ$?Ty**q?6=hScb z&;9)q@G~tZ2wno7;{=NJsh@p9xWRII0tCV57rm(?mj<&jl8drS=HIav3 z-{xJ*g;G#hBP_90ZTbCV;MeKE2v(`e&d?#UBGNf$Ml5FlrNV~PI9j2>fd<_#FGOsQ zz^oD6BM3i(?Jo&auNT6GOMo^J!HF5`Dm>z7V>hhEabf*~qw*TWGpi8jce&nvworvR z*Y^(;A$v}hnUXoyfxFyI`&UtLTgALYY`3@H$NU?+{HG#nPR2j|-DEVmEhq5~ym4=$ z_1j!}(~YMAp6Pel+h0%fGjGOt`9?az8zpu%tfD89N`Qr`p=cbM=kHbw%>Av&J)pL+ z*le1LEH+s9y4T$9iNU>e@4`!L-0zZIZx z-AG9Sk=ti#F0a0B1Y@AWl3^u))B4req8;!}V0bq&a0U?z(O|Ec1bF1var_`@B?DOA zwbpM)MMQv_z|Rb}WjKjVG6W~CL_AA``$55BrBv-5oh*SaKsTu0Phj*zG-9{+r31L09@ngvVPh6yB~dC3e-K1c41rm zUug-^NH&Jos=G%=t(i0c&he=(1RRtmKJ&86bcyRn1@BHxn&;rXYuAdNwB>6@VU z_@H7AKw9*IA;JEg)Ea(nmr_7ob(1(o72*iNy(AG zP_Xf6-CMc6sgIz-FpD-T@i zZKr5EU@yYxGer5RyG=}>Ze1Zyg^@%|T|X3huplT=l!DqAnqCm=e65F&CeG-@ONa0j zU}r4c?WPv56o|(CW+xy|acC5)%sfF}y&t*xTj`9_cP;SrayD^KV}fs+FvST+>A0-o zhXEIP9W?`>*`J>n6JizoinYlIE|Dhz0d?U$0^I_kCFkdiDAPrF&l4f?e+@GNS9;Z) zXGq;$xofk9SUWmctH)$z5(JtSv+BZCtPbPN@$ZLa?vTs_s(CPEW2m9Rw+jXPDTtuD zaKf5D%0$vIXVj8(ULwTRKu(t6x7IBhoJ##-O84l4O8AWX z%IzXN=;B7FvH$HrWH7$>HNzs-lM^EzV!ObmuRoOHjQDUnuhIFHW}|`3Xl3|)v4k75 znKwJnLWQayg!Y8*DiW~nj=tv&vZ-$Y*EUGPejX-FjsiM#x56J5L~oEknjjEVkBc*# zFj;>@`i@~08y6w|c8P#Tgg7qq;0M+AG2BCIO5Jeih7-wL!U zqO)dDon4kz_B2QYgvnS6eres-s1n4;-KP?%($*29vN5ixqsfz-X+qVKlc0>fs^bP* z>q}zNygYvfym)jK8xUXC*E-M#kfbygzfUY|YFn)gYj2qoOODA2!1_3x*Mh@%Hcd4^ zmJb|)uC2fLZiVE_o(U#2MJHq+Ue=O#tP3mFg166qtBB+`Crult!uRSbI^;shEpQ)( z1)ATB+F1Ko3WQ?>19IU%2EZ1d}pVva%I{r`CS?zpDT|9g}wwJ52zipYqws0dV0Hi_0ME=bWTDneAyU|F(9##K>~ zG9n_PG9sd)B1E>VLo#{D?Y2Dz%*a>wic_+Ns&1aPB3n^uTaNDL-6y zPXGm}!NCox>~ny%Y4gX+P2~22GZ^1{%d&t4vH;!OB3HP=0=J6joen=BUbr!nyu?NSj_hInWso@rSMZ%Jr zvZ(jMpm;jl=1W}IK}zA4!i5w9R2e; z-qy(R>vPB_-~2U5AP6jCigX4P4biYy8TC^C0R(g8#FlJ z*4!Dg3Z75|2c<(Pj<7wiBsR#)u_F|=rv8VQ;L)w9bLy68Djp2Ev-l*B)BBP;gHSD1 zNasE&u(aydPZ{x+`zYS~Hpe-uw`jjgtVL8jPpt2D$;~tl*ja!g_}U*3vO`qewtAkk zgBvV~m#d-8h$){F9>{@xnDaR{$;LhdO)uH{Ji54Ztr0pDrRZ25*(k|h#rXh-Re_yx zcl0`D3k3b+o&TJqOhwXL59cHNd=`s@-A^@>4Sw|-jgJeq3{B5JjkE4=*NLC>-Mzc@ zkc@ss z#CK60(~p6$RjK-6onq}ANu_{Jgg(QktSy&G3m#Wp)Q1HlMKJB85z}3iVU zW?=!T``6iPWe&Vx`^?pv=!OcPE|FdPlEm8#8UxZB=KGaI)mX|A$eBCVe*=ScRyZvd zZz=59t#@vpL&!#*>(ckBH}c7UxOlfMBSg9^HbOr;i20mUff!R zT*}uD{~*k@?mQly8@C*x2-*BclZh6R=y!8*>VSv0L$%EIs!YOMvao`@5T za;SByH7;wX1ndZzjppU?Zt70`qvJJRzR3$3MueuYi`QPA>N3Snt(f^m-|nfU+DPpP&NYQx%I~fz z0#j$<%o$lPoz#(b=-7ER_?rAt)wNXN@>1E9ay@CjOCDf^O|{T- zewXNVCWjAK$urv-@At=7! z0=1*BmT4*aYu^HrF=#=I0i{)+RjsN_jf!VU8}fgIoZHeh#Gb2wUT45QaSRMaa^PQK z=Ux{2D_b)Rq?jO=AJVw;dsEvJzEa-)t2R!Fg}EBUq`9VF^bU*4ig^H=hcxCC%4@p7 zRow>ubbeAbn{j9A9Pchg2_n%svpG=nS>#3S^N%gqv+2$6p>JYt=&yfC?{-HK27Ck` z(B@io%0_gp1r_jQkXN1ayGghTC&z_E)=U|z&9v2bw;=46H=$o!Kg`jc8m9X=rXcMl z4>m1snUgKB*?^I?!&v{?sG%|vC``sUpYxlF$dYM=bv6BNFV2sA&_@r1uRJU&)-}so zz30NxAAY>sw+*w*d37qPHVSb&~{dgHQe;NtUDaAMHe|$d_d>j4f78o z>H5*Ar-DatZ)42)b25_Sf`FV9I(>A?3!={{69-b+fdaQ&?XRcSd5zya={%dOm9k6Z zcMN5|FR{p`@oLYG@X|(Z?pqiH6se24)rJ^VTJAX8emqOFbY}1*7-o?j6Iq2RanV#K z-q}$WY(1flo&bicanHdaX4hAC7-?J`cXF=)nX@Tphep2B3EL#VDj$!c_IsZI^1(=I zxB$+MPz;8_lg9K%0_59^0%TAWxGAhsjr1C+)SCR%`4GOnz?_uJW24) z@FZiy=GO<1IRc>FeehDC=;{G{^RmfI|uV)*N}J^I)avWo#1wNi4??iu=F&$o&utdwf9#}}^no-+eG<1E199d7sq zYT)H*o=4s0>?Gu4GwmhA$9})M_4-!rAKdNA#CIrXDlXoeaUt!qGJf{xD z9|~O(z9c+rmlu*oN6xqAtO6OFdUVaG!_tbR+MtBl+YZTrA(^%j+5UiuNr~_)dgfRE@mB!Y{4DHiCH#^G z7^$}u)PmDUHAi>A9!h%AM0HjVJnYv}qc02=*O$KsKjgCdsD<+j>AADu z$C!5r%=JUH!}QpsMpy2|q7`Q0%?5OzYgxh@bI7w363&@o-NUxte*M4OjHkjH+-$j4oOJ1r74=nG zx%T^1aB!+mqA`4P0%Etu-q z>n&!m_6yP9owA?d!Q@f_!~&#Z{~RYVuANeaxu>&4Wu+-x&hh`bQ#6sC|4V`*LHFU5 z;Yv2;EUtS}?L*COJ2ryWm>QUg00f>ULRXxzlPaHKZEi0*atQtLb)nWsxe+=%oCxh) zXn;hazmlY^klD@Jdd$yWs>6A+;V}nIcK>3C;L>5JHNM2JtNez^hcjgG#Wd31x8pXB zH06^|HC1=~i{yNmgS|Bp_bHo0*Jh2?@D0LS%=|vvmE}5x%5J$iF%IhXH;bY1awYBJF(UzSx_G|H*ee`*rX1Hkdg?t6MbOBzhKFgjgC_PToR(tttI&jUYSg)+Z|M4IG zc(soEM5xUCFDfBblNQxp*XcAgt&|qffIOXWwc{+En!XG7FqX#Ys-&4OjH@Z-Lu}w1 zr(V${+K~@?6kZ_gNPY_G&Gj_JH?74bvpj^C@3en@hdC)mQT`&510I7qM2LOe;KsM8 z_aQMy3IXMSM+&N9%Ip~45fW-iaKQswO(yatq>UEwmF_B{tjwu79OBMnvaW{?#9tvv zf=Ty!pelt6)IW6{U|dHbuJ3x<#;TdbBxAe3n9p#Rnl4#+vv+@g)U~bYw?tYC>fc>0 zN~WZUa~l#4xYgVaN~m9lTv^Depkku0gX)cCy!9QnHqoSS-}b@$t9nbEG3VCEufm#a&aj|IW0NQ8Mh>SwHIuDRQ z9N1Rtt1k8#s!=06|AU6`+8DqLG}jXMR(S&k5wNcF1y0~ezqPdY00hPnyQ4mTt_3c^ z;{Y`Ff87@j3yTWe*#B6ura>w=W=*u7K|-k;1-s!3D`-$WytRV^qlSQK?OtHYYB>)b z-SHJ33a)nQwHtVb*)?^wiRLf|%uL0d&P-WrD7(#F-&2Wwo1E`trL_oq!*D+g@9kF~ z(7xCBaPdJdU<)bWSydhGek^o5$es}ojz&RKLl#iu03$fZud~TS^i&{A#$r=kt3$e5 z^S1r=ZAg`tpEdjSy$gE9RNKidlt z?)U)>gKy)fJK`RLbx+Co#_;O~?lDI!{N z1z(ma4`?7G9M)6V;r|l*KmZJNzf}e(&lJUi{@O_XL>ISI>Lbobes_(~9nzf6qI65(0CKbgluh<|7| z9jZ)5`zai_STD{?L=o1r2|-sjQJw-mJxBuo8Wgwk!tpXK!orkKDY|DkR3~Lsfc7xj zW(qbe6t7^Ca_bR$)CExsWWMt<qZd|$Y+V6F@Q&#Tr$whQ1Hl;RLn7Yl6 zKKAttfHhJU4TOCm2a!Xl!i-z38+?in)h4Yn!9ah#SR0eM;9}U{WnxYsEM53mwRLXI zapP#k*Ni=$>RfUTrw>s`YDf&X0&C>xNhH$Qv|)@36Jbj$#u!$QB-+C{fTDT33x0uV zC)8nv%&3is{hz8z znAJK93*U2&746oGIhx$*NBS(_>{<=c2>U_4tWw@C-yzGM!Gvp0N6}F6W$(LisBP6o zq*frzoHW^CzPK(@oNZY!h@@c*(aAF_GK!3&_2w<$B8uP zsq)G!`t4vMY#tPhJe*mKIVKh3kh2uJ@}ItGj=qcDwc7LdmJa0itfMWMVu|NeN@`%b zS=UPh0)5>kLECfSz;dtg2c0gd%aeQGk9Ur=pdE%Y-YXPwq;|T<-a_3ig~jQ6ON2{` zFcGO~%TtWS!Sus%MTK)%db1sg|9UVYh|BK(x*ORHmlx@;EBQGa0vSe0TbD0gMPJ!L zTXCx>r53iU$0r{C(6Cv@ZaI3NpYWYvV%r|A%#La(FA0u>+f~uybLsjP9kR|@^ghKf z5TUcrim11WTNZj$-cy}NYkZ2S!M+`PO^D&1K{@m9ZmZzl4z73E z;^39Rcc7mx?o%;i9;le*-w4-e)<>+MIkkdPAZS-&dZ8~TCb5$gWh#yz!DPd-_!6m7 z6Yu^=w_T^tuym`2b><#eWLE`Gs#t6~bslsqg{{>8)jn2VoHFpg%69^&LOutpZ6*5h z9|-KK42e!;F_15S(yOw8DaMo{z84LI@GKcx9nW;@y5F8H-f}n(;f0(s%dcxcfPqx@ z!PkgutK~X6-&P}{YzBJbBcJ+vc&Ao~KJ>-=++nNp;*%=AX-A0>NcPlfL?mJAKwo68 zXV$k#R>-~s>+nl!Q8v>G>nn=M9}TaIw(G9)RD-(2i4UCzy|3rfB1a?6v+!NNG-R&O zySw$?N|pUJ^*{zL)HP?tO-qCkN~`Udo2n(PNN;}L^%ZKmUi(4iY)R{;0suBxIZY)E zuEWdXU^V9*21fGyiD_9HGVywPB#>b`EOJhNSMQJ_920 z(u(23MLzzrH&P`!SlX6?dBeWBWt(T@K+LP9j33i}SaN)+)23g~`WLST-RoqTUN21L z(?H2+nl8l&ViH*&fh%eQ{i9?xBbnXboGohPtw!M+({kbi{`O3uX+s8(KER>#f~D*n zbft2vpdE4ssM2!Bm&&==fsp|`#8;O}nImY;7v01vsX*d%&7vAPo6M{Q)-mgVVELU# z&*oFx&_$wtaTJr?p6ConRS_mn>wra2?I}jsr?JKKEzq=MqbD75bWv)ZrG>n+_)0tR zEC$*j9Rl860d-CSY~(yS3zx$g*shYVy40J=c~>UsPK^5765KBOmalKgk`3I=4)9(N zl^J@>6Ysu^LZE5$tHA}jtll?R;lvv)b>v_$l#q40wL(K5BFo)IZ(jb|JoHseMo!X;sjunk)O`BGQg&GF6a0zTGLWG>=A zTuHN6t&bB+_1Fh8W-s;0^m=t^U;^e&&<_|wi924A8elbQ+be5jy!HlUthcUr5GdNq zV~5Zu;?qqGeg%`fh#m<%_5xRx_W5P3&DR#&$vnl_=LY6)hK-b6t&DO>EXZnelZ}7! zK(M2GoLN~BisZU8#&2~~6EED~mN%CxH6e+ucjMGJAwt%OzSQ9~oCzgE(n81!sDTz$ zgJK*LYdWe{`3NX=0H6F=+@_cWC`>wh1j5grrEGHRSK`=E5gmP2ckvc`yA9N@sz3M0 zzUgf+SS)YC0g%(fo=GgkH!tp2a{ETm?Ztvt$kDpZtQvmTNbFy~3fcfpCN7Arw*jc0 z`{x$r0+X%&G`6V;%4?iZUm>byV zFwMR}pa2l`GpKoFg(<*tYdUj}^ykZ1;!&qKxG!HI@usueHVYCkn07l6 z*Yj=NmP|uOY`Xn1(J;HIQ z)t4plGj)s+$b$(elkOK8>O94zumRWh{wpd|)G*`0@e0YNz&%_fHM%Y2RlMipfXD|D z;~wg^JM=`mp>MjIYqQ)L7>oS0OrHV-rf$VX&vzoC6Cb9_Sy?$KJbq)^;KXsPyB@OW|B9fmEdysr?x^0c9{dlos3`nEyp{ zK%UV~TLkM4`Uuz>S4xRgFhb|D0j{E7#d&x#OPm}w2oD*5M!!uaI4JQ!z*k@%)^eJe z?3zzam2U1n*-@m3iCU;Rp2?&EXP`o5>9DNvMMX)magXlp%w*xk-u$^teS`NirRc0U zqR8Bd@F3foM7WHIiR}jQvShFG?vaKrmpPll9%jqN>w}A?#`GZ;nSB59vFwzR$WR^L zGOY35D-oe#q>IG|mt)mQ$i)V`2HKtVkcETeuWn0PI&Z$(v*PAG3zMoN3?s~6_bDHH z1g|Z>#7V5KDn$7vs)2C#GmZa@byL>62FX}Ip$)r>XbdaS^o-A%&e^NSN4t+b%mFVw z0zby)P9O03Tk&H%W%9;S&tzp1##Aj#)Tx_M{H&f~yvU(hohJ?`#1f}FdA!Zm5^;=z zYVuq5jA+_}B4eOL)6XtFb+bhp#@pa?W?UqO=v^Y=F|m_QDSNv{hV$l5C~p24*;v=`K1@c zf;PG>1V&A=7b6#XqyW^pIZ3Ym__#{|UEFZM2X-g<3JU2od`I$F@!CT&V#8&+gNpH& zvueSVx#G*oEtU8 zGr5#Tecn|-1Unhw^kQaKBIPk$n2P9Cv`F}nb7Z5#h?<=u&}@nzFvMAhf4hxdR4n_V zY?`EG0`00xVrCoK79yx&(qbJqEjR884P8<~YqiS#nqQfvQAg-b zcGVW^`S^i-GMp;lTYS$Cd#e_N3u#p76)ouiR_0sA+B&GyplY2f3%gs_|5M^B#3x7I z-bkw%>qEZNAI8y&vns}#_MRDYi@?JwVe)7W#qym4VqYO$NsBK{jC(C95C{{t}6MP3(bWg7Z3 z{aeV}gFjQYskb*tI-8o-Y{%G$KDm!!RC)5vhI)?^D8v#RfoSq8%Ag`CZ&~;H`+a0# zx2_Aa&SqvD=K|>NK#I<7mp?S&+t757F&GF~ynyPxSBKtqRlkHUsQWbk23;Hj$Q z0vy0g+B;K3_g~4E!0yK|KCT@;xBkNcl*)Ok=KYVrJZ(eUK<}2@Km)2U%?UNJTnUEM ztQmKoIKfnbW&eW%mCinByOZPkYOqFtghr$Y+;~(WAWw++>Uiu-?@9lEa_BnB&G=w- z=RwvJUf2lmdrL{~*8J!CXq8M3+^zk_IScuv>~&m2C)En4i{YLWuC4*8J2JM!_0O+< z82EraeTzyJaXOg~=aZ<({o6i!OJEpemakT2`uKhEt^ccJI#-*Ly|95y3%KuUIr1^~ zBj%w|>$)1b{6|UvamL-IbS+7ZJ-1Y8@kE=lWc1AYp7e23I*tFMmE%z&>eclqmN860 z))U!iv9o*)R&4@)q}71mO4q`T1FE{mP!KhW=Ft0h(au&C+KPV8pk%}6m{J+s$JP{< zEEFDmkAUY^hBb|ibe>-K9aeKg)wQ+3fiN`!!MD;X*)#|o5}-BEtxC=vq|;#tCznP| zuxW{eK2Ql?Xvw~;pmhrrY7otYNPYLNn)V5x=qZ&_$8lj&iir3swX|A;#mc&&1gsYe zj59_V%0`*z-vztk2o+O#3!iN1l4&%Dvx$I+T~2?0FOdK4OVy$QJ!H?iZNrBL`&(QI zcGfS)=h@NqP5GHn7$`Z|vV$pWTuzU^g~1wsJiMG-$X{2#Ft7Yse(sX2239SC(w0)S zJeVTJYV6sKW0&K1nLPQpg~B($zT;MYvqc-i#3lSdH1e0!{m^mfiioF%lQ_!NFD-V}8A z+00#Cx!r3%+}XNFw$T0gPUu*^=VK_o|Cm#^GpGBpY`|T{-)j+>H2pbYRPcPMR-AU$ z&iB#Fp2dFrnsa0OJ{*2Jb?q)BqUFx+37*FWoy}aV?$d?J;PsX*kj-ek#qS9`8OS{kYxI2idfdT_g!O;3Favx%`fXo3aIj!}$D1MNApeJPPpvz&lmk09K>)=0y)0qwOdqcj;Q6hTq-O*RVC|NpIMMh z?^%d-o>dI0ZJGZ%13^-9-Hk<69b@0FMX+jOg%n0=CniSdc*wy;(}VhpF}BS-Ww-_e zaJ}G7Gf7c{rE)2mJ2A=51f-4=G~m26KJ3%u8`Z~lO4a^sI(SEF=@WoOhe7hYGC!y^ zB3RAI6AR9stWYkqbUbMi#A$Fzu8Un9GizaB$WFB~)nnO=yCS;fvJUl8TSz=5CGvr@ z6QYhkA3U&vdjX3Y$x$P)Kt-2nqP~g21J`O_XWvF!?9{=Ns48+hdgTLi38SDr$3~f~ z=~BBpDOohj7yD>mr_hZ4#qkd-52=psY$?c_UO1a#?)3F}*;LnO6Vj5D4Cig0Cb1G^ zPeySQ$3-%pR*yjTJ~)Nu*fNeTHv7VWK!zl*d}b{wcMl=m0@ADHEz1X6`ImV~kBtmR zP4oU7?IY(4av)L544Q*{t3Q0LdDHB;zgZ$+)14`%5M=56wSd(t8a`rP;XYwNr{P4& zj-JzQ6dX|$T)gv&A;cRAP*>iGgxgN`rAux7nDlJZ!WZL{Ihkz~*eJx=NI*jUz*HDQ$;eDUeJ zgjgHaepXw1I$oU_5b9e`CC`GlKc3?KV@+`IZO+s4SG&{pjL4?_Jn~&gV@k^;!#?-A zg*0o6=VU^xsI1e2gDvzXUUr1)Z7c8~*N4;M5{P(0dlzB}j=zLPIk+_A2VV1|oW9e~ zcJxIr+@{ne3Pmnhv3wo)09cM}AH({*gK-!e5|L~yHs5#+UdCQ7RH$I%q_t@B?@1!1Bw(Ic# z>m$bP2s5taV1C>EoZ^KgQ7Pueif#*(BW@5!h{YMqCSb0N@%(QT>raqvz=po|B9deW zHM?+piVN&MQdHGR$!?9497UiVe=lR5+-&2_`pImi)lB17c1Z!6Sbf)A!eTI82#SmO zm_yjzzflEAR3f7Nl`d${#=N z?`2G~E29wpd8NK=Gzdzmb4$Y#V#x%5sCz$ol2U}aEXO&B!K>z}tLSy>NDAMU=V5`gSF?cu*>OM&pmrNSAjX4NBQfaIz_z&aeNi)!Qd)wv^ns)gW+> zh}C&#FnDPrbfHd$7IC=1YyxxA0J*M9zxTln$EKIm-KB*^$h~unbYq*22F&Du_%>iT zr2mAlyD?HPEV4H&<(kAmC0lmh@hA%Kdh0{uv5JipQRd1}^L}g6?2cn5U>P^Bv{4UT zn-^=4DDuVi=C|=XTZ&?1Puf8DyKU77iqV_GwYn87vw3>y!dYI^s* z0MM@zS6~OW%%z?UMx+j@c#%xFxAb((1crJW&3EFV@W}8SzPdYz(1JlRSTUNNFJ z<z!c2uE1lY{kNm9`bvTCd1c;Tx35YdfFqER7VtHzU2!l!b4hBOr0xh*7D-Tj6wlex4o{_?wO>hG8wIAfIAxBm50@R-H`A0mDhl zDTULYJ8P48CZH#1sM|`P@;hIRCqj?7+=z&w`O-F6b{2sBaIXT_hF~d9AQh|rc4<`%qLm<>4g`QPER#&Y zp9VjT#>N*z3<3YcyaAlhf=v5S-H5j7PeK*+a9VRtZ;23Lf;*$UCu zdh{FpCs8ZZ!ctiH@7>_|YBwi$feN#Eco}PJZVr9gA6UmeGxdzor{pd`0caNC2)+2e zM<4Y#8k&+8%U^l_h(Qw^atr`#i&CPXKhPqWmJ5Gax#G#P z)j{nunKwQNc4+;!!%^{u+2Y)9Suy=ldTRyymQ7It#v5HDF)MHBf#rz6`Kcs~&U9bj znbOWX8xK^ppg6Y63Dp6&?VBV&(xdOMvWB|tIq|C_?T!)~FDY(O5H1p{(`v?(?1gsO zc-J=Mq1aI_5cvuHw}nH%pWz)1FcIbZ$pgnpLbf-U8e*NHo>bI=y9y7+m&z)uRu7In zqlxH6Ud8)rz@m_Tb(AAOv4>#Pn!S4%oo$T=M=o_6a4Zht!8y63815vCl$SJeK(!0J zYLhSOAW6#P+bKR=b|RZ9f^4Ao>dB6ps_ydluY$pl!2^wlsx;zG_7;u2!}&6#lrAa( z+{7eub4Z=;+HNSo@d$a!~|V0!o=fwQ$s}}T6vglK*6q|M}K?0C6>QMl|V(f zsuqfz*+Scn;NR7)Ta6I$=~+p(#wkEJ{fDE&zPUG_1TF3?J$0=#>LD)PRdtrx{*kup z={44YZtwL09o<)svBsV(z9ev-7r1!?syxL{^pK%?W|2ltLfhMzl1SU#E55QnVZ0yf z#n3Q736f@IYQ1oJOQ{ACUM zlD$Gq44N#+UK2f&3Gbkb=3gWw^1eyzgjaedFdRya$q51@l8;GSC*gt>0E!f-Z0?+R z1^-f8QGKA(8mt#c9;pvL{`+6=(;Ml#UGdSuqkX_`f@;OFO!RgW)_A(yR^6ma1zQ<0 zcb(v?bk-TH-wu3YdS8y_O7bDk*Goud&1i<{LkF(it_!a~S@g2)-hoTZ&Wu01s!d+$ zy@YXK)bqnSoy~?Y5T0RrTTOq>56JR$GXIz1aTaMTvA3vApwc73wEe6C5Uxw7RD)l_ zam3aul_A?Zoe6~M997enObVRdkQZPYX3;VM$n+Zla4Yr5Y5W++RJ;ylznGRi;VGNm zLHUTL(pAj%hCru8AbGYW)seOu^XDm{a===d?f`u7Z&9ON>1Q1`FU~uhkVoMzo(#C^mr;$ z+#Fdw8ed<5daz1TDJgZ6sAs3a4flUM|GLXxNh4K*r{W>R zrO;8Mo{Za1bB2X2<$ryhzLSvz@;}kynL)B~F(qKJ=i<|Vc#L=5ZHCD+o*ZcM2^dXl zW4IGL1G6OPM2y~Vgh(Y6ddCYt#!f^J3wh`>Xc_x`y0x2}3@oB+_y+!qr3WizhPX)b zOpUCKX+W7B0}$wd32PbSkDwU??iiLE&H)C2UYH{u2Jqndz7IKc^dwqr!cub8O33bn z6jXD)ug+>H;66?9kIf%Y;l+XxNCU{|-}Nu4Mg%LoL4-N4V0u9w2@n{ckYiQqkF@Q} znKEovmwUT3Sb~>lyk`#rI09td)pA*Sp^kukB%8j^t8qi!OM_CUJA**-%;)#w+s16{ z{Y)7PLw1w(-jDVF7aEwLg!`l8n1IbU+X}wFIAjbqwwQq@=aPco=J0V+J{naWPYII2 z9hk!!_;uAU2)Kns%Y(OR%TE3Mv_9a{sQ!h^HySYOuyrn!7Q4a2-W|(AmX{?Q{>^Jv z$U0tBZ1h(DC#(S}JK5b4K9hoM+GU#WmZk<;Ep!-}k*pN`9h7AI(<>3rl{WWA&nXA45PUrNZkeA;r6Tha7r@w0#v-`V%Tj-{oYe1Nhmxm3nfeXdlVEbJSgEg$;$W>H)c_^%mz$E;LYS8}M@qQ`U zzodKes%>A*UXsAW%u zutoh#>uc;1M%B&x-Pa2AZw;7h5vs#>S8TtsF|$9K)zWlS{-e&JyXt1oL6e|3_3+X|~YNtnRfZaj^hDpd}rn)+>?19%sM#?#9drhiTYIfi_fh=>qLgnRp#|ak9~^LLb_| zO@<<%v--32-sU3uAdRKw{u)Ds`0_BvCaJ2fh}^E{pI37XBVkc#nlcc&!T+Lw;tvkP z8$lWw1mmlKdvP`pJ!j4AYTh5ialg?Wb?6Gd2U|nYYt}Aeoo0(Pfna3K0b8hcVpS&4 z`pgDWt(gy2&Sy3Klh^^i%?R;?HuPA<{P?CC^{aBX`cxA4- zZ1dpmt}2*m_1(~CgpZt|$D^C>6G8)?347|@ZF9DhWHMGurPyg1!Pk&prG?_9ua;JH@x|Mh}lW zA&lVT;p}>*p7HZ9MT-rHeA!lgK#}0m7stf>X$q7vWzj6Snxs)=@>Y^;p=346IUK=0 zBSss<{zw&fQ|Z1@K&z*E99ks4To( z-{ARil%rUwW1t{HQ#H%H*=}9OZ16Cv`ygm`ytG^W>d*1QL(Pf5N9`vKK02NRxI7JYP&=~+kR% zoO8rO{pPTauIra$nh6DimWcg@FazZ+NUg%YN$k@wh;wSCOv-GB{YF{qD#hj2zHBIn z?$4B!1wG)hv5CfVXV`tDrc&srqbLRV74?KmRd<_IM}c2G>|tfU32wR6Q3%S)pP+&2 zY#^Yb(yXQ9Gp*}=J-Uxvq`MbF4QviwLm}15q(Vs#rMB3W0vGV3PJ+M2uD#^{eFd9< zGpYkzRhLe@7C1eOi_oVGZ&ydJp`&DkeG;B-spi?>yW<06YAb-2E?}wJuSs#Acws+$aeA0^7nOQb~?rYGuD_iFK8;TWBY>2AD%Ov?} zg$&!k<0{78ra2@3iZ17B>^fqsLYDZ|S@BKZaW-JPDa|1(`~eQzUY(rg9ql6d1Ls-J zLm;6-S=yE~MDlC9iTVZ%PVozD^Z3F|Aopc$lbX=LMtUJD86xAa_OT;~d@$_I|CegL z1+ZuygunRT765l=ka%jCZqmHcCQH)^z z8ni*hSAXv3Ed*6Br8>k{3e%(~R2ruej*cdw|(I(ajeE{bqp+zt_^PGHDx-; zDQ&_}%;hA|G_AceqBt{9Jn^UqD( zmf&oO5{6BnF&`-t-pA0F9WX&%YP$KSq8@{;8W^=HN*ojEupgz5*4?I{zED5lf*Jkm zg_ANv$DH`%9Ml_2pS}!w%Vo!`qp{l^FJ?*VKe@2BQJ|UR8ace~qo+%5mnEWEaEP_f z79^B}WeYxW>BZ(?p!(kq4mutvXZz=YG7# zSimCmrApD5`WLHL*dz8odT9Od$Mv5AIGr9Hx^HMX3xwadxsXmQar2-k8iH?j2XDSO zRNsWx#j>}~3JdDLuo*@qpDR8o)`sJT2NHKeEiMLPBsU{L z;IO{uGDie9#y=p2J#vzh5v7VrIknBiq)QJ8ttQF; zu9({FAQk3gC73M!)~0oQ#-aS;Q8`$TocB}22J!rB6`zixR}wGoVJJTJ+05bDlyA{p z&TsU8g1lA9+g5(UsiN1Q@r+bxyraPbinMx%J+f@&l^Yg6a=&dWIDYzF55CM?@8b!| zlC5yUP(QGflANa~*b68FzSdK3vG?!S zxt*JhqD2xH;I=pil~gIrgan_0)z0&Ph#FQUs{AL|UsdoO-a~lMnWoXU#g$o?nQ({I zx*G=fnnw+vK7jWR!YE~>Kl1*TWE*(s3oh92?{%r)f6=hf4z!7_|@ zO~?cgrJqEbxOY%^4hZMI?;nL=3c@C3=5zc)LL9Yi`6aFijimA$qo@(UB$hwvBWtu( z$*%PW@Waa`dE@g~c5vQuNrBGq*_QAOvc(0HKZ{!G&7zMI*PXVC7Uy}>E++<7H1q29 z34t#vV&`2XU3v#Hz0>Sx%k2p7+bvk*{b1H&JC~c~mU!@k0nZ#_XGleZZO?Utd6v=`)^nbB(3f7Hphldq+7cPpa_CLB*$@-jD{ zCZD*#UvpwB#Q2$enX~*a#ig%Zd&NIepnzO!S|rJ1#1JDp`oQ}U?9hR=bX=ay)blkK z3nF{;*)J_(0{cz=whzqa0s|WDiNn~3zFqPF-slgX{j;kvc%HG5$LfLssnxG?Y`G^MQflqpQI>3qjTt^hl57}?cyN4x{J zusDS?EcK?36Xvs_HAr+#%XX$LU`xqre9kqqQI39nUTiL2)^eq?_;~@H+?q7ibh0FW zWu;Z7oZ=>nZ~ZL0zb$U3Db21lx#UH=$v;kODCceNAMsXZq<&Oe{8aOF?W>ys=WqUf zJ*}Q<;kWcyW%UU|ijkV7=aSIudtf;30qPfuD4&M%X~>lEoj;M0;HKD4W|55phw~zj zoXvP?LPLc{-(C5}*ljkT5re&&Hts|Ce@wl3T#W1gKYq?}4mp+(CDEWm981zs+GaSG ztc{K(vR1(nom$=2{N3#vyjls;1V$j-{%tuB0wWe#Dqk z^C^`CYr3Ar3>^}3`H_#a>%))uH!ATWq4flUMjF!cpi2GRx2-hSF+^X6+EzW)>&$T6 zg4c{iib#wm?Y(SqMjd*ldciCD0g4VkBubMrF=rsH<07}uVoi6B|2Fxg+J)YsjOVL& zlW0yC>C=)_{h5mn8eX3MGd#;hxNPkrF!n5(oEtG;P(od0rh==1aH2l!V>goDJv%8T z#)XI~9tRqd=n+k3?kY{H8sBNvKH87}vHma7w%0$s{LAFM;E>DSKY~xvE0bSi9~wq{ zPSHX}-!%CVnyL>c3jF+ivme96{aGAFmVZ>5RjYd5DM(?ab!TO~WR%+(W15kUY{7lO z8P9Uxz~An+_!g&o6l9)^^)@TG@M~qlRPhZc$T&7I4HcGJ+;gU@=W}oy#(g8y+hJ&H z?M~I(^cqw2Tu!3|YAvB2?X@abVQGB23u(7JkvS*{!DFI}3cqzN0ZIvVgjPiwgW_JNXlvOY#Yfl}*n@kIJae|-D5lFyuR z;S&eJjz|c-rAHJtN^YRENY2h4eW|uH{!K#2NvorrRkXZLNEQbukBF`EMhEwoGb<+N z$#Yqw@vlsK=5~3DVu%aWHeSvHFUmA zj$i8`*yqymJ|N-!&vry_##h+xrrT9-!R`Qv8%xbvOL?xcpbiT~%dX#g)M;^J8RY4- zLQ~`-ud{)I4bmVPb5*bJes#&ddT(lk(QI?pa>}CRrm`K5$&gg& z%6;ExanV3>gF?^^?WIL@SekJ-17pt2Q8RMR6QF^@0u!fL(k}50QCMX?RqPZ(-+xZS zWXBbgT6dI(HO)2+CM#h3SU(Ly4mQLkg?bTr%@I`fa$e4?ygpORw4{t%=OQQh5C_db zE8eQ$pDVZv9gWb*B97oUTb$_F+)f(M7nocnmvz3@Yv@)Hg4EdCfp;k6i!TTqtPooe zHnpsW6U>J@thz$qt)GLsA~U6~Yur)rAD{2V`zf!BgXjw2e3Y$9!uVCM*9s%xQ4I^T z&#lSxa}r}21!1Y&${HouqL|09)rKUjwr@P#RGF&dlO!a<+g3ou#`=67Vde`9_cw!(ux}tXsoc120K1*F4S^hlk2?*1;F}@IM^(>mW^jF?712i8<=L=AR%1wd<*O&{w-U8-}d^7dxpU zigzljqbrJ?8aEKsU@dGBG`b`CnwHfriboBdO;@9zfFQS=#IQ07I_{wgnw8|w%W?P{ z1#!zD(p(fx&WUCPl~5<05u@X#Brm#PAFA@L!=qWQCsje8CUo3h%D=er8Byr1brjHKER@2vb~Y;$iD<$o!5fBtvCMqdJ6O(YmFxhcFX4uiMn{uV z+GE_0&s-?|$h$j|jzPpwlvE)sl2|b@CP|tROAabex04XE!a9KH87ZX`744e)Bt$X# zwtjVG6gwalsN@)*Aate``rD;;cV=4;cK3#6#85CQFh$qQ?_jldK;isvkigfCrq{%F zvY*Z$MK_f%F)-d7dmyIHCuOtk?6Eq{4<6^IsXpZIlSw`1?uz~H+_EDV-J0WKTxA1s zXx)qK%L~#YLM(Bx5X%OY_4Zxa$=E{DB61F7NSK6#W@jyV`H`;hD?C@9o$1zfQWHm+ z|K49GhXu)iIm2gaf@^R{lc*TR?Gs7G)btBtsFNb}TD?&z`64|^Il>(be<$WC;B8he zh#qk=*`Z(x5q_)q?&Z@wEtH??(E>PA+3?kW6xmcHxzTwjvk1Ais0BmhK)4NdJVg*O zgV=B{A=eQC2_CDf?Ay>LJ2-Kb96cX!cv=-hDOp(04)_eUm@lym&x{SDO>&XrXPZG@ z1kF(7a=`CP!f>6_$za_;WeSv^h&1GY&IU!Z)o|KSz2EBoUo!^N6H>G2?ngxR!AtTX zQ(}<30=yL*NL4};A>4LByvx|* zuaowC{qf(J{mS121LYCyU*y-a0&@(hYajTNX||FM2>Og>Zw~n5aQUNitM3>;xbUwT z_d+z3Er0yQ1D#`7za_i&iD6?$I{(DMatjaLQ%+-lIW@AXo@w48w}ua7QwWUaej5be|JmqLy>*q@=A0GLvj7!hFX_zZJRy1H})7k=^Yb|OXFO#8lY-sD}Q*_%jJ4 z)@Zh~RQp#7=)5G9p`2*19}~_F!)7c(C?gGR89L!&%E@Phoz@Vx<9_a30|EjC+zr4* zj#%MA=!XE$Zc;4d36mis+aIoLI;V?qZc$NuKH)|QR0tW6Zsp(3KBg3HFxE>GeXN3n zN9VQYsbEE^`#BTxg9|Rh_T66J-8;2-$yPwVs-*wIV+d4I2YLzo!*GuBFoGH&S!ONw z++cBko|?a5vVM!`soSLAi&rvRFs-r(d6$mZ;^XThmIEnineH?&iw>Pm7F`?NM^mmS zmbk{b*FE%N`AgQQ+DTz@?2^fL`jo-H)3zQzOKflknnR8R0HxU1w%Y!0NCTXJ5tMWGd}!#2VKuw~*DPvRxH1}ikr)>3rUmID zE$Pd_S}S@Ga4Mz(q1MU~ItivnyDArF^9!zzJ27ip;2AFm)q4y0Bvkxybs1?6)Urn#jsc_}n>9%Po%m z^!!-oLAz5%*N<-OmVR84Gxm^p*w)m@GWDXY1f7=dFx|FN%U?VITmNxDU-+do#)Lz3 z=-{LDWq-#Mrze1cF%^MB*fVGdj(O2`m;+OqjG!QJtRIdFrdk0-7eAUO?nhKpv}K5{ z{I_5po_z;`oqtp~c4brj2_LLD(JkAQp&jBb$ZR*`e!6*Pfd_OMVp4$_h~vI}{mo6y zFL;xEL63kPomR!J;buW)nvnaY_&+p8DPczd$m=0sw6*@5oMVFfMh@Zqxl)v`_`eW!?^Wl%(w*r=&+Okshw!!Tbnea1vrz@FYDm(vq89HKt z$;0{{`Hx0V{~4`)mTr~OkKh9p{6n_q98$}lnUA;?HC9p!G9OpC`s}u&X#@uixffQY zvjze>vZHU;8aj>lU1j6O4BJG3n;~~SP(avyB(#Gt8f#@RCFX5QChdSl03Icz?HaagV`DnLc`N2I*A}Fz zl^d3dLh*6dk99VKY{}x0zas~c-na(lKv3WKn9d^7g`!7cnL z%D%PZstHkDZmTGMIo*;@`!TeWx`h&c!1nV&sDro2>Th!8T==ylz*7y(iOHv{GNU`2 z;->)SKPkAy}YI_ijhkRdscMdd0 z&j`^zePQ@vC!;evPFO-sp0VtNU%WGe5k=ryH$>g>wEft_jfkkC>PTBDLstz~4MpPI zDAC5$vVa%LPSN}u(jrx~M|e5ar=_baQD?xwd1~IFo=yt?#o?H#`ii^QSbr01vrq6) z0>qrWYvc$tkbfM+(%v4Jkb#ZdFM@1nGd6h96RIz-d|+L-1#MVh@6Y-|YL9>m+x>C6 zqt(Q0)4@Rmi=aW73mbE-ws5~vHz=Wjpf73ccc3|JTvr`n>-*9y$dC)x9|CR2z)RO6C!c7?J*wDwTdR zCFRlnijH2MGwuwa1hWzksd^|P-b5yU`q6JeYs$?dCS&E^&nQJxH$J}?G41}$rCmF{ zpD~4zs(xZIuY6%fe%ZxxUb&5`!O~}w_%_RiGcG_1v%!?XN6CB7D(rjv_v^B!i=Dox z1o_cyD`Ik=Kef}u@nW3m%te{0&^abEUw=nAI_OyH-Tj;!g_y&eO#yIT%!jmQ7cSB% zH4BreEvY1aQA7BPAxtD!D)J{hb&+bZezAvCoP&K?bYw%swWDS&VhwE24$sSmfeDfN zNuJwVQ1u_-pvi3>P@z}W>%aw_` zE%7(8gk@>;S5z0Z%cq4Zblu`EsliREYgIjM3C(wo?0crG5mYU&2){A(tD8np6(7|> z+1Qp%J^sj;88M$4zOgbPS*4C8FuLr!D&UcvS6bi6WB2~n<7XLZ2rUVta_A1L!%G@X z_5$gGk}_~iHnog#g=WHminEaNvW^&7EwVQy=8HkpRk6$=8JFV zN}aYS0;S*XB*i{DFbLLC$c+^W zr;e1XwY*-D%chwZVFA!Nh*~gtu#+vIjVMJEM(Qf8m9vT&*{dyqWff35sS;9XNu(B? z9&sgLNK>b@DoB;G>$-0`(`b|6VnK;c!NuvbL835Y~Y)4X~Tu=&AmrxSu5K8$?!F{68IkDMc95! zkxFNoMl^WSayb z-QepCRamXmNc`|@_ZGP_XYKVEC`9yI+Yp`)-)R!V0P274c7=MsacNtXEj0c89GsZ# z3zPw?s3I;zn}%aspEqOhyjZ#ZsZ7vl(30a3FQC_(sx5obIBB-piXQqQQjCmKSLbhO z{={ZWNMTR0E%s*yo}*Gh?DFNpH>Rf`9yb8RwvX3i{vJwY9SQ2*)y(v*R4ir-dwiQp zHHmN%YRPr`ulmdUdnY9goFCf;g%G^1op|oupX9kSJHJ;=4@>xTWnYrhhqFr`?9hev z|7Ja9@OPE*t*A|}7{Nj1XzW4o2IXvXmNq$lZ6GVniGoo@gZqNrnwA|qbJo8I8daMx z6qkb^YJm9k20ZV4cE(tWluG-I;)8~P1B9Vz9j1e6Dn2_!^Og#nX*!4pfa&I)^$}_o|f;x7T}{CZ;m1>%rjlN$?KyyJ6-1KhZVW5)wb~*tb_2 zZfOW8q9c9U4?R8pg{W>wBB3boC1_!{Vfl!U9=#!=zY|T~c{yfG*Qn z%afuKp4x<{9XK7&tbP52VZE2a_)A6xrIvOTCPY@GG##BOkTK6de!7b}np#HYO0zHV zRbTgFfgrIdx-&Bg_ZSQ~;WZuGiENao{}G#0w)E@3)1CX!4{Y+v(T2&X%qKu;NJ(ZH zpPTmm_J}GMRovsa^Vhte-oMJby7w<~NatWdw5StOyMnFKCUNI0auUgxr|R!ZR+U4~ zh6@x=>%K>4tbe*5ye$FoD)};ku*3>yViia?0vTt3ez21W&J5M^J4NH@TMP55IIzL^ zWwIBt^n#bk@RH%&Iuwoxa3(8%-V9$^N1qplgQx$4p-12(ro`8X`#gi9{c){S317t* zDYc}bv|8@k-5ov3pQ$z90MH@{p~tjJPXV-H@(A}Ft2efQ)3dL0iEW=y8BI}W(UcL# zQM$`!ULDDvETW9415*0xB}l)}5mAThd1Z76!%zDACK#q+lD>Sc7NPZ&LNRwxJW1#b z`WI8HA+kez%;A-D1E(>hPR~sWI##LAwv9$C=jgdu-jd5Yv!^B!WBO*}1B$BUmz=zZ z(=ftgD z*y{{^;w`whQE8!Nv`fY0{iqD%x%QNz<1_1H@lsUE=5AbOf~UdOOKkxB?_tn@#IvVB zBVLP8p;Te&kFZ0?6;mQB1qI&%5k_>5@=Cb-Q;VG}GXijJpoE}js_MO4^v3&d_iTbc zVTXUf@rbw*d-7^(Gp6OTkZO|`QQ_XSZY6I_>z`Ptq#Qa_N#%^9}Gef>H; zYM>EfvelwxpfWn}fMkxBtN|JJhr5;W<1|Q|c7L>e#r&GEjS5PdC<{kAD2YG~mD;z? z$X}|_to{|qJO-XxUB(@$?-e-hy^aLvZuzZMa5n()JHAjAfH^XI^D{Vuk_9o)$(4Od z$XyE6V#BGhxyo^GOj$HOV}N6S@4poujCh7t4Z`*A-Ib}Iu`b5J+dKHr{uBBf12|L- zzc|o3VPWL5BResn8)W<-F#?Z3INn~ph|#0THEIpL!~2>5$5$oAAT7MNHUhtE({v8+ zNSO*#WMm3d&ZO;L-X?HezL1_U>c()YLIlwFu~svnZr%8&n3QK@N?5uDpUq*=uPw}v zW{TB5&pv?6Ned?pmYhlW*V*!6%$h!h`xo9XNi^QMi0)&3eCosgWI!p_yp?nihGLz( zl7Gt^71ZKxboJutljw6%XY#l_EfbX=T?RC);e4di8-|vNb&J>3@z?atn z#(h+oi1@cqi%a`-gQggf1_N&uFz5UP<5*h>KYFAG^t0py$*iGvM<9}+tXv@}eq>sa z2~_FCiG@locFY}lEd8|Q&VZytY#|`sJz9edeMg>TBP{nXu1iSc{jwq4MbQ+!ncm+J z_u#N?f6n~d&nS+%+|e}=v8Ur7XMR>TLSfdl*uD8M)gdjgyrO|*ok2db{&XkB-aT1~ zvC(rHYVvFIj@WHsyAF7;)}D|<5lPTUM+4oMq~m>U*b5t`)x^9pWD3K2eLR%M6@1}G z4oax7Ddi3#N^S!Ly!B|{u->X69>xOT-mFt6L6Vc{flUZq0(0SJ?u>{uI;iGtRl`|| zDOvX=I=gg1#GsO!7KtGCCqCtQTwzN|GYeqft>_&7HcdO2u{+VwziWlK)xNqDhcOPQbZa`3NQd&Lw(Y15~l{SyLH zr|T;3C$`+!!=S773WwaOttSrTuJfN99At>D&KtV9pKM7iG+rWnG3e*NX8U?0uCz`z zEAPez+VD^cmBWCH+b9k*bYaifrK>Ye5Cng!{sNsASv8EovXlYc8V%!d7U#YqF-2od;$Jf z*o(}CZzfUWGl^BZlW!`FCj9arB!rEsumOC$VUdlp#eAq)P>V=?u`bV+N=)*wcm4gMBy%326v?FXD_@?a{9(#o@HUyP5-Sa9AVi>Mk+*nMwdf$_FvW2S2&D~6<9P%tOTa8=4E&u0lJ z7?scFNcRGHlgeDp%k4a}lL#7;iRfUrL=8i5T$6OBt&;NSru)XC)rH=zaPu|)b!`>f z6MO@WeB6iCTqW=9qD1mUM`#bhNo8<+Z`*0^f!u`DN?6h+Fr?O^v@hltNB-*?*~$tb zm(9Bt?tQ={6Vkqz?rp(#+EEv2>CAa0upZz7{m2QOjPx-K9^)uXPxV6T)^!aHIXow` zKv1ePxV}Yv%4d2*?kfmHO4Ej}pgRB4WH3mUWJo)fo|LAj6r^H1PLLqUwzPMTpb`wN zlFz`M+p}Mip0I3?n!i#PUb|ot^!T4ux28(p%>QV+v$D1 z|C_x>qOCxrx(sCv>IH;$g&E@`ni{POI4ScGvr`^h6C;34h^=`C6@3}0$AtDT6N9wKmd-K!zDI6a=cn+WUbi63;D* zEax6AD2tjgKlK@`ZxzecE;y=q+pxd4+Kt|TZ2TrM9TJn@-O=0(3EXZASKDN+w8Q}N zG+w7Cw%%9bO1)qVW?%^C!JSlo1M;5Kv?~vTrAb&u(c>EvI!HOQ)!dKyhNowd%9GqY zVMvoo8{h|Hn$Drn<@62E2ngLn^;Omgxw*~y`{<&DO^xUt61==fsq4sK08})c=m18H zHG-$BCpC=VZqV-hIZ~o!THDqQMVXm9KFv|=u??q}v5AF4o$AH$jg>j1I?vqvkMeZ!hk|I5V&<)Bw=6wko|$tvHjMecCA{tQ z{&qR)J@?g|lj1d4e}x5hV$_Z1v+gchCXS{`5l`T9*t^dOIDEr+y?BZ`x5!6Je1sD?U--c7r^*W{UXFP7n}|A&6G-}PUnMwW)Uf6N}WsSW1G#b`J3c; zn+U-RMMzCO?CLlU;5hs3Bbu>DvjmRM3A8Tc4gR7%mxI)!gX-D%lJQ0jxCZ=f849Y- zGCHwe3?BPnvjOpAy33R^4USs2gq@b69h^*@?7#HELL>gay&m++mC0M_Qs%&8SJCC8 z2DU$%J3H)(FplBaZcP7O8F+T}!p!)$pRn0@7Ph|a5PRGE8hJ|6=`O8~lysn6Zhf_#Pa3;) zi=+s-X+gpK(s|{SoeMRsmA-bfF*lx7>`B)Y+vj`ioU?X-H@6n$@EnYJ9;$A^35&L> z>@{cqCDC%;dc5w~(AxrKk>Vj>qw>#v)*Lief`g!Rq)|?wObYgUE@Z(CSp@ z;|TrLU);O05gvk-nMCPh_$Dltl9w>YSNt$AQ+u#o^JxS}saH8nAvd~8Nc#KyryD)5 zxL(MYNi901O6N0@^j}vI;o@i)AwIBFTf*pP*m_f!i;;@8wVR`};x75gBW`H@5r;8Z+{fl|43~ z`T8kJZp`SK>JpPR4^$P&ylx-=<=)IlNEeZ}192Jx zQN?}ma}8yx;TqxAJ&Vn`d(WSJJmv9zg831`om*wQ(S?6rDy?Wp-y6;9Oks`s ziAqR~-s`fW#E9!p!N#2N2DD~Pl z>3K$C`Zcd%Mi*mDD_N4y<>E%{b_AX-l0Cu=)a5dXP?8a=NalUn*wMwB!TnUj5B*b;VL9<#B^^Mg^{t^1PViI$0}4X$PX{pc zHhP}Wjowu5vL81EmiR)CkY9PKjt!|T`=Qyq^mL(`q|MqNUe4VZiG@Q|=bT&n(fO({ z(WQVwZo_{>db8S*cQu@Gt;>an{vW7uqm!ZDIl`;uLYH#y;kqa~Xi@SYIj$4-q>hce zhT1bFbV^P98ABJzE--S|=mHVs9g9$QMz4?^zBh7su#;R(itArB0*F7#4W;TL1<7Yi zj)-mE&gERLf9CYuD!jT#K1E`oCJD+n=SrRBy5S?hF#Dc0Jn{CBb`54fGXy_6rx~%3 zW^D6cdTZyo&Ii6UMN5-Mn$G8NRT(6Y%SZGMK9>>jtr=FTF}P0?^n33&M~#*E{eL+wy5U`~)>Y!y#+B*02$-7=N$=MG zN7{BpJP8S5D4;Y3AJVe()E{*&;}&8PO0og6CKoR9)nrSKUq%+Yjg$+*%e8pQo(g)V8fN_RxHMReDbs*c$Jr~(^U9Lj)+zs#iI-k#IFTmlIs?VsZ<6=+bfXn;lqj74%q8g2 z`7AlaKWy;48EKhUL)UiP`|CD@MhePdk)cX?I0Q%9CIlssbn`{6og)y?v|R75x&Ht9 zvxzRFs*5${c2!<434pnwSr?wWG$6qu_5v6O_oj@?>{XyT zK43qR`|6TY9Lc9SNuG_rpUx65-EptYetY1pBa6p0D;}hV#I8z#bb}4itg`t><0Bzi zbT>>4BMOM>Dr0G+DyZ3zqIRQc;*@DBHD=Da;Od|S?W%J7Gtz*_;@ej-fbKXZqWJMzQe`|!oNqX$BH zTcIFNRUl*b4m)y5Zy3KGKWdpEEKzP&LKWUoU7s>tMhGKiL2% z`xZ3g{8`apn(rTL=JLWnE6TFxrw_f*r(rlfTDNA8Vu-hmZIvu-h`fR>x+v*Lc)JlUmlPtOFNvxoZU z+=(o6{{L)?_YA$XTHcymY@Rw)Jt%2IY9mkPDX3VwS!IJ|ky0B7dd8@u4Yzn(q2Qu4 zKQl#6fGF}H$)mpz%KkVJ%m$o)>lkM8bZ72AH-9pEyW&lgTkP&4v=yhM=a4{ffCe%-Z;_Yq;jHLyK>J*eBlC+?~a$6~rOtSF=Ee*Tvuk5NP~iTbv(ni^JVLQXgbm zF%B|&LIE(ktl#OO;7Ed^l|aAMS1f48l$vvm+NjSuO`ncj1EV3n4V}=ihe^o)+xp@4 zpM#pD&$V2(@&k{9B;JEcQeF|%<}ntlX$NRV!a z?C06R<&tyLqF4VcQsIhH0hlA@UlE5Yj7z$6_j&B8e6w!#3g0c3mtEEtRBG-)NT60T z^GmE}j;JJHc7lXEqT?b1uj^Fh+sBc3OBmI&5@fTdi^53P$)TEO@s?K;3|$JEg(akX zD;1W3zFaq=rV!c(svyf{5)0Zit9tc~&dVr$M+`A;wKhOM59#5at|W~6f3v|SoVKV= zck+KRFAy;Eb3NkymP?{^S#wEqlj-1H5wg({T*0bS76?O3Hwd*ikG0#* z(AM3O9HpBSgyJ`sv`&%oUXdbt4Tyh7spf+l=+L%N5td#m6%BO>>=Mq()FYXjoZM)` z#=jS~Xg;%IsVyHYMN6x%%FG%0@=a5%+Kq>gcdjLdXPxdO7seQ_0;~E@c9}EiyBr$8 zsKWU&8uvQeq?{@>RFQs0%A*1TiBBZp5J=|^f;!-7Sb$T|50ncyenu=xk+g#XAdYC( zaka>+OU{5n1VTCBRRM8$u2LjK0-bBJ$#fpq8KlhagHnkKPuK$ttL^wDsYo*5ZFsH! zAqpKRX5VUudl=zh*@=-Nw3g(^?^!#ZiIv$sQ4wOenY4qryapqjH~I6%0xH&`xxR=* zovzS{cdWx>6GdkiT5q(vO8icld8a1)R{iG6oTo?6Q^R$(^TM~jLXKEV&Fi}6Xu!d&@R&&gIE)8|!2JH@s}-mejzbhvPzJ4b?oM|^Z}AYEJA$3z5VK&Os~KSD zgAm=Yy49=0GkiH{*6Y-rk@(t+pT5N_Qusyt*6IxbB00|0x44im;-wTpAW#3+Q)aJ_ zJZ;l2an7B?Mtzv`nOAq@5`yMQAt)*6p|cx3N*=CW@G?#FD3XmEpm8>gDLYi_ieJ*Mkb;GBu1P5yI#|?Asr^n-eJm^;k`8)c#?~!+w}VXCKJ7ACKA*Y zOr&{gF6~cUOj#j$4g>Te0up!6OV4ATqU&FJk5$lQ@!u#cVj%^|48G3j+)3rXvTQNI zdA#&x_81h2u22r}zFKw(PkESq82##Q-ekgYa8SbCn`)JkaR+>)e9*8Hwp~4HaN>k@ zSntF0zft;Lq@|U${2e))_^VBw;9w^|w46Ww!}%N+L&DqerV>7BWntJ`=-%e#Ajj8B zD?dk0L#hamtS%gIfofK$3{lS${)CxyqSCryUMU*KU4~N;-mn5Jxb@{3Jxyp{kPA)^ zVPKJ%nfH5dhW12Gs4lj=3zj~>RI zd;_IU`@m)*>4t@XHAoAL!>K#QO!QD{wJ0|l<;z1;FzUYG!7eeY@U`> zz{L2#jpiV5er`2)^7g@wA|!o z{BqxqHhJvOG`9M$u`OH~_?y+)d%-5R8M3qgFu(GoS411l_WOJ^aiC&Jn~1TZcZPvh z(cLg6jj@49f>gPaN;C{6>@$M11%P#y#qG?5O$mI+p32hD9)iB{(1KRS+@73^i#Ky> za4?0ur!@5!hp0Jwst$PE?g=?mYCZB@(hIX4xdp1-Z&u>QNHwX7YmR_VI+!Z1!B3X$ zx_FhT!ZWaJ_z4soP`kqqAH9P}!K^RmK&^ztD<}2pRs-KUHiq|vo@FwS;@#F$+{j`{ z0EbAK;!|TsJ&|JDWuU83XKeci*>FYLd(b$4-`qIAJ$Wk$XPa5qH_ofEAL*JO`Pou? z1nH%T3kWgm;=e1&lsp%f+G_tmxBqUIw0+D}9N9}-!--~ZM6+q&iz6~9q9XWuiCjcn zrrQlTRp1n&hQM`Q+_77r7W5*O91;mw;d7Deq%w2_X$Loc>Y@DiL3>1WP>4{Mk`LXu zgE7{ZHJ>3Wh9sn+j?|IOBB~6fY9dG)tqDUZa}JveYtVFyCv(Xj|q&9BRj-S zlg@)5-P=UA^cy^-q|jdZ;G&WCT{bBJyteWSo5efwl8ccaVm z@E|LBco8qv%0yV=QUsJKhRMuck(!6#QZmRQ6;g03zzsAQ`(AXd&<;0&Pm$M4DHFj< z2~`U^$;jekvgBXf%gMgbEK;W;s+1hF9}TLZ45+0IP&Jp4zAZVw4%Da`~a=nXR!dK6J0MW zFCAt?%fr{KSM9+?3Y}I6&#T}nQ9NUk0DS(*e!dNHDc%i2Vjih)eD|H{^PO8aA86CM zO3Cd!0DG)EI6R!9s3-Izk_}{p;P>wWj$jmG21YF_SJR7YOd5?ePoe(sp~@Yz898DM zLWYvY6M>iK*ebOMv$A!=j)Yuz7^aB46!Hf~PeE$H*H@~`lZUypqJ^{&%=(K@g-mIe z=_2-%kmR7whcHl+>lzbgtdP?*w>NJ(ot81MdDG)7ccvy+xoA_H*?<2zw=USK+;j`J z`bkHaaP<-SEpg!SEzKtC5phX>CP%s z{2p9ro%X;BKY|Gu^RAYmbnZ$(x$s0wR-!WAuw^x=niMl*2ON1q)yk|W4miT7FU*v1 zbC9ieD&6)$KePS5^nse3AWg2Vb+iOvI~38gpSWy8M@BlQWnU)k(qafCsL$7m@k` zV!74)s>_F@RO?DufaP2m%l92|HX){u5VNSEud-0Ev>fZV(z5`LVWG?&%owW!Gc%U2k zXyoenD6WQaHl8sUm=ZC5Pgi6KYT!3yB(`ofBXLR+eh}R~@mD}H+CE-*iBQ)4f`< z5_ss4s>ewgy{&gF?aG)gIMsq=`4Vw^mn%Q=@9 z-9hdkw-9yO8VBnhn@&Tm8E=K6qcDEI&;g`)Xm|clj9iRp5H9}f@1+|LnqQuMBlyh< zTRC?7t7liUXUWl0=fl&_lK@?9q-+q;y;Uijrdqq z5cCB8Uo$Xy#o?p)5&X=Hbs>q!UF3n?KSn*G+{Wh;WbO3cirG%OOoV0;0G^&y415w)q4htC)bC!VFW z9;ElDGrMO#gr{hH6-SKAoeyWtd|11H*N3UnjP@gqaT(gjBwaNwBOTs~=fWKUK7!0l zY_I~0p%oW4$a*(|ek)k{Z7YUwX`1fiq1*&Cu}#qXp{Z9`saPUK;4FT01%Bt$7qq1dDR+q7BV z6K{408l2uV693un*aAcPf_vMGX)|_Qe#p!>^y_8Rpq<`{RViSVIM7%uAI%l+iGMW^ zTPUXSvr$PG4Gg)6Xn;ikV^-P*q;MmeaT^@r%$fPKB2wzYP>bMV4?VJ5U2%O?w})y* zD%|OKGRfmfrBx$@c2YhP1lA!O&*IowR&lJ5y9hk48GkF^CEMx$yS5(}=(4rq>&ES* zT=c!mXb`|!w3f*1^S$eYx)stU8?^o$dn9?CE&sE<*rt4ernx#V@#8ZvX5A~#5NA_l zmwv>)636n4VroNJ!zy03w%fW0k??!8Sy_Z)mvE`Ta1;6O_zv~;A)jUZ( zB&WYjOyL1fq4NAeiqN8q!_b^TC8({0=e*Z}{R)l*GwU7?VXAaQK*6c%ZP*i{F}M%B zq(7}4y%~2QZ{iU)+aH8SchS7S8Qcrc3x13hXyN(XBb0V-J_0pY_%`BSVHE@L;#x7& zqCULnY?_2{sAfoej|cFm<{NF-fw|4eQSMyfz4)>-|_6u&#wI{o}LPB=S|o`3--PJSv=`Z(EB6NHD!pEjG!1 z6CPJ+K9J~SaCYG(omd-M(>+F&0PkZ1|GOBi0JEyscO`4Ux{6}UMC7IC)S2D2Su25O zz8hX7TOr#S^kWjd4#KJ@#gmbxOqpcj6TlVs^XiLAhDnP@wdT=+tCs@yzHQ)5a=S^Ndqq5qC8vlYRf$hZ>J}a&ICWRVsLtm%lZH3wSbTDo+W`3-dH>wFkRCrTlTA;3NjaT(X#^s{f z<^5Yu`ClN>r=L|Gd!>E%Mg8WPeDU2^!R;{q`}Q|$&6zCCHq)TY zCHqgnD~Bm_(Ae<;$UNSmO3$ybpOt@n_|L9J7h%z*Bqo;9=cieJ*G<&R^BUs&GzH`r z*ZRo?_08(71;4r+4sp#vS9hb$HO360jG}Ff8j|kSwM{MdI8VO~*GwQme)4V{45f}Z z&G%b*2C9mlHCVYXk$MnbYvW$^CpqQN6X@nb*>;#u1rVF?+D;VADgxw!UT6jRJK$wR zi(U2$%6-C%-IfO0-?-eYV&g~>Ar0QGfyCg7_TU+yX5sxV4C)b+T8b_`Mvic?LN9&r z%*Efy>De(sndEb`Pq&lNkW3fa5Bo}puEeS=$PZAb<1ROD`+B`Mg>0-ekCWftcsv=S zWgGtx4-cf+`6AP~Q3)2OK0p_2~Qj?`9lU?v{2ojeo zkbzlg@9F)h-6fw|#{(KScHan&1Rtzt-CSM%2-$SVE_!tLJe`2%rU}WU)`E}^q&23M z*3qt}P1`1Zu7#Ywg?3woRB*t-Mb^pExT{sMZCD2TX3V5%{Ms0R$C#_Qq0Xt1(0pdw zX4&_$rwP(!UFT=04Gt}rO0+Z0zkFFb(Bn2554K`4s5ciwJ7Az>o7&%7ad`KPijh!V z5ZX;o2%12YCp>oR0eavu(+hO8%aK1eKZWTHjZDf08(DkcL?VNOH|>hQ5qpD7qlly_ zJCNP>(pUmN=!LcQ8UKfl`(JY5Un8_B|8jzXsP0>hvdvp2^JZuBxiFeKV(4LFuepOf zq<78Myrs`wg*mxTs_@cyb%w z*0PH_KRR_WG&Pq-Ng{YOAjZz)ZU*Ecr)I-))#nyltv<`;yRT&bHSFmU{>0+d)~H4J z>Ll-6F{eC;vR+W9tRmhS`~SHi$OF7r`x>$Kp!ut2cExd%%gDy?rQYjXwZiEwB*f!HwiHr*=YP+YSv`cAvZPJfYhAE zbll=Y8D6j(g1pYGiwQjSy;(R#xY&@zYOqvHPZ4Xh-QLjYN3i=J0#VbUB%e7SEBo0j z+Y!5~{(%d}@?v-g&2dlskrRAOFoh|X7Ws~gjw?IxWl7$=lKX~~zM7GjB|&FytH;pV zOc_m!*(g8pqtY+knT_@9kAen(MnnRp3H`qF)cSz9Fo6AIZ>F?T? zG_D^)R>;H$DgAUn-H8dKoJ&Mrd` z)tswaIc*4{ZO*$6+#E{>W@E7+k(ZY&c-OvDXfLPkz*8^#sYCQjc{khpx2e9=P}x@? z*98?av{Cm>a>3HKY$58+*E(F$bkM>jH+or19RUx&AE_wu85nyUEPDrCc?~2Z>!_pqhtH*S7EU{OHzz$QCsij^R+|MEA>G-Q&;% zk^v=NfR8bzW{J1x0tmI8DQ9kp-~|pX_dlS5W4tBdsGTO(QTjmK#bO3ddyY(a;SR)@9G*^W&aZ>;{Z6dx6 zP>)ePu6fF=jo*VInJ?{6+;NL4%psSa;x4Q)^$#uQr0h*Qc9v_lh?d-w;+vnn!GI2n zUY3p4OIpt)f&{NvLdF$H%w1P$*IUYpZL@HZaEF%Fcq{W`DAaO6O*`#v59INYY)Re> zkevAXXlBu~z1CfHKD9N4<5WAZz_!QFLti>6oM;l6}U3F zn~2Gg1~GuDF637tO`G?U}Nv%I}Ht7(@4aa^xu;p^tQxd>=G<}E6z+lOjnBs1FH`0 z-zk>`iR zZ{N(aygU}8k(=oo$z@yU1@a>}rmy>-=I(C{Tn_6_gNd=0uQ{fH<>cS$fhz8GPd6|x zLcezzeD1|}4LS><+{N6{F`EoKpGGE*xI(i Date: Mon, 25 Nov 2019 15:27:45 -0500 Subject: [PATCH 075/234] Add base packages list --- base/amazonlinux1.txt | 102 +++++++++++++++++++ base/dump-packages.sh | 11 +++ base/packages.txt | 223 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 336 insertions(+) create mode 100644 base/amazonlinux1.txt create mode 100755 base/dump-packages.sh create mode 100644 base/packages.txt diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt new file mode 100644 index 00000000..f44f6cad --- /dev/null +++ b/base/amazonlinux1.txt @@ -0,0 +1,102 @@ +basesystem-10.0-4.9.amzn1.noarch +bash-4.2.46-28.37.amzn1.x86_64 +bzip2-libs-1.0.6-8.12.amzn1.x86_64 +ca-certificates-2018.2.22-65.1.20.amzn1.noarch +chkconfig-1.3.49.3-2.14.amzn1.x86_64 +coreutils-8.22-15.52.amzn1.x86_64 +curl-7.61.1-12.93.amzn1.x86_64 +cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 +db4-4.7.25-18.11.amzn1.x86_64 +db4-utils-4.7.25-18.11.amzn1.x86_64 +elfutils-libelf-0.168-8.19.amzn1.x86_64 +expat-2.1.0-10.21.amzn1.x86_64 +file-libs-5.34-3.37.amzn1.x86_64 +filesystem-2.4.30-3.8.amzn1.x86_64 +gawk-3.1.7-10.10.amzn1.x86_64 +gdbm-1.8.0-36.6.amzn1.x86_64 +glib2-2.36.3-5.21.amzn1.x86_64 +glibc-2.17-292.178.amzn1.x86_64 +glibc-common-2.17-292.178.amzn1.x86_64 +gmp-6.0.0-11.16.amzn1.x86_64 +gnupg2-2.0.28-2.33.amzn1.x86_64 +gpgme-1.4.3-5.15.amzn1.x86_64 +grep-2.20-3.18.amzn1.x86_64 +gzip-1.5-9.19.amzn1.x86_64 +info-5.1-4.10.amzn1.x86_64 +keyutils-libs-1.5.8-3.12.amzn1.x86_64 +krb5-libs-1.15.1-34.44.amzn1.x86_64 +libacl-2.2.49-6.11.amzn1.x86_64 +libassuan-2.0.3-3.3.amzn1.x86_64 +libattr-2.4.46-12.10.amzn1.x86_64 +libcap-2.16-5.5.8.amzn1.x86_64 +libcom_err-1.43.5-2.43.amzn1.x86_64 +libcurl-7.61.1-12.93.amzn1.x86_64 +libffi-3.0.13-16.5.amzn1.x86_64 +libgcc72-7.2.1-2.59.amzn1.x86_64 +libgcrypt-1.5.3-12.19.amzn1.x86_64 +libgpg-error-1.11-1.12.amzn1.x86_64 +libicu-50.1.2-11.12.amzn1.x86_64 +libidn2-0.16-1.2.amzn1.x86_64 +libnghttp2-1.31.1-2.5.amzn1.x86_64 +libpsl-0.6.2-1.2.amzn1.x86_64 +libselinux-2.1.10-3.22.amzn1.x86_64 +libsepol-2.1.7-3.12.amzn1.x86_64 +libssh2-1.4.2-3.12.amzn1.x86_64 +libstdc++72-7.2.1-2.59.amzn1.x86_64 +libtasn1-2.3-6.6.amzn1.x86_64 +libunistring-0.9.3-6.1.amzn1.x86_64 +libverto-0.2.5-4.9.amzn1.x86_64 +libxml2-2.9.1-6.3.52.amzn1.x86_64 +libxml2-python27-2.9.1-6.3.52.amzn1.x86_64 +lua-5.1.4-4.1.9.amzn1.x86_64 +make-3.82-21.10.amzn1.x86_64 +ncurses-5.7-4.20090207.14.amzn1.x86_64 +ncurses-base-5.7-4.20090207.14.amzn1.x86_64 +ncurses-libs-5.7-4.20090207.14.amzn1.x86_64 +nspr-4.19.0-1.43.amzn1.x86_64 +nss-3.36.0-5.82.amzn1.x86_64 +nss-pem-1.0.3-4.3.amzn1.x86_64 +nss-softokn-3.36.0-5.42.amzn1.x86_64 +nss-softokn-freebl-3.36.0-5.42.amzn1.x86_64 +nss-sysinit-3.36.0-5.82.amzn1.x86_64 +nss-tools-3.36.0-5.82.amzn1.x86_64 +nss-util-3.36.0-1.54.amzn1.x86_64 +openldap-2.4.40-16.31.amzn1.x86_64 +openssl-1.0.2k-16.150.amzn1.x86_64 +p11-kit-0.18.5-2.3.amzn1.x86_64 +p11-kit-trust-0.18.5-2.3.amzn1.x86_64 +pcre-8.21-7.8.amzn1.x86_64 +pinentry-0.7.6-6.11.amzn1.x86_64 +pkgconfig-0.27.1-2.7.amzn1.x86_64 +popt-1.13-7.7.amzn1.x86_64 +pth-2.0.7-9.3.7.amzn1.x86_64 +python27-2.7.16-1.130.amzn1.x86_64 +python27-chardet-2.0.1-7.7.amzn1.noarch +python27-iniparse-0.3.1-2.1.9.amzn1.noarch +python27-kitchen-1.1.1-5.6.amzn1.noarch +python27-libs-2.7.16-1.130.amzn1.x86_64 +python27-pycurl-7.19.0-17.12.amzn1.x86_64 +python27-pygpgme-0.3-9.12.amzn1.x86_64 +python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 +python27-pyxattr-0.5.0-1.6.amzn1.x86_64 +python27-urlgrabber-3.10-8.16.amzn1.noarch +readline-6.2-9.14.amzn1.x86_64 +rpm-4.11.3-40.76.amzn1.x86_64 +rpm-build-libs-4.11.3-40.76.amzn1.x86_64 +rpm-libs-4.11.3-40.76.amzn1.x86_64 +rpm-python27-4.11.3-40.76.amzn1.x86_64 +sed-4.2.1-10.10.amzn1.x86_64 +setup-2.8.14-20.12.amzn1.noarch +shared-mime-info-1.1-9.8.amzn1.x86_64 +sqlite-3.7.17-8.14.amzn1.x86_64 +sysctl-defaults-1.0-1.1.amzn1.noarch +system-release-2018.03-0.0.noarch +tar-1.26-31.22.amzn1.x86_64 +tzdata-2019c-1.73.amzn1.noarch +xz-libs-5.1.2-12alpha.12.amzn1.x86_64 +yum-3.4.3-150.70.amzn1.noarch +yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 +yum-plugin-ovl-1.1.31-46.30.amzn1.noarch +yum-plugin-priorities-1.1.31-46.30.amzn1.noarch +yum-utils-1.1.31-46.30.amzn1.noarch +zlib-1.2.8-7.18.amzn1.x86_64 diff --git a/base/dump-packages.sh b/base/dump-packages.sh new file mode 100755 index 00000000..7e0f0cc1 --- /dev/null +++ b/base/dump-packages.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +curl https://lambci.s3.amazonaws.com/fs/base.tgz | tar -xz --strip-components=2 -- var/lib/rpm + +docker pull amazonlinux:1 +docker run -v "$PWD/rpm":/rpm --rm amazonlinux:1 rpm -qa --dbpath /rpm | grep -v ^gpg-pubkey- | sort > packages.txt +rm -rf rpm + +docker run --rm amazonlinux:1 bash -c 'yum upgrade -y > /dev/null && rpm -qa' | grep -v ^gpg-pubkey- | sort > amazonlinux1.txt + +diff -w -d amazonlinux1.txt packages.txt diff --git a/base/packages.txt b/base/packages.txt new file mode 100644 index 00000000..0123bbe9 --- /dev/null +++ b/base/packages.txt @@ -0,0 +1,223 @@ +ImageMagick-6.7.8.9-15.21.amzn1.x86_64 +alsa-lib-1.0.22-3.9.amzn1.x86_64 +audit-libs-2.6.5-3.28.amzn1.x86_64 +avahi-libs-0.6.25-12.17.amzn1.x86_64 +basesystem-10.0-4.9.amzn1.noarch +bash-4.2.46-28.37.amzn1.x86_64 +binutils-2.25.1-31.base.66.amzn1.x86_64 +bzip2-1.0.6-8.12.amzn1.x86_64 +bzip2-libs-1.0.6-8.12.amzn1.x86_64 +ca-certificates-2018.2.22-65.1.20.amzn1.noarch +cairo-1.12.14-6.8.amzn1.x86_64 +chkconfig-1.3.49.3-2.14.amzn1.x86_64 +compat-gmp4-4.3.2-1.14.amzn1.x86_64 +copy-jdk-configs-3.3-10.3.amzn1.noarch +coreutils-8.22-15.52.amzn1.x86_64 +cpio-2.10-12.12.amzn1.x86_64 +cracklib-2.8.16-4.14.amzn1.x86_64 +cracklib-dicts-2.8.16-4.14.amzn1.x86_64 +cups-libs-1.4.2-67.21.amzn1.x86_64 +curl-7.61.1-12.93.amzn1.x86_64 +cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 +db4-4.7.25-18.11.amzn1.x86_64 +db4-utils-4.7.25-18.11.amzn1.x86_64 +dbus-libs-1.6.12-14.29.amzn1.x86_64 +dejavu-fonts-common-2.33-6.6.amzn1.noarch +dejavu-sans-fonts-2.33-6.6.amzn1.noarch +dejavu-serif-fonts-2.33-6.6.amzn1.noarch +diffutils-3.3-4.15.amzn1.x86_64 +elfutils-libelf-0.168-8.19.amzn1.x86_64 +expat-2.1.0-10.21.amzn1.x86_64 +file-5.34-3.37.amzn1.x86_64 +file-libs-5.34-3.37.amzn1.x86_64 +filesystem-2.4.30-3.8.amzn1.x86_64 +findutils-4.4.2-6.9.amzn1.x86_64 +fontconfig-2.8.0-5.8.amzn1.x86_64 +fontpackages-filesystem-1.41-1.1.2.amzn1.noarch +freetype-2.3.11-15.14.amzn1.x86_64 +gawk-3.1.7-10.10.amzn1.x86_64 +gdbm-1.8.0-36.6.amzn1.x86_64 +ghostscript-fonts-5.50-23.2.7.amzn1.noarch +giflib-4.1.6-3.1.6.amzn1.x86_64 +glib2-2.36.3-5.21.amzn1.x86_64 +glibc-2.17-260.175.amzn1.x86_64 +glibc-common-2.17-260.175.amzn1.x86_64 +gmp-6.0.0-11.16.amzn1.x86_64 +gnupg2-2.0.28-2.33.amzn1.x86_64 +gnutls-2.12.23-21.18.amzn1.x86_64 +gpgme-1.4.3-5.15.amzn1.x86_64 +grep-2.20-3.18.amzn1.x86_64 +groff-base-1.22.2-8.11.amzn1.x86_64 +gzip-1.5-9.19.amzn1.x86_64 +hwdata-0.233-14.1.19.amzn1.noarch +info-5.1-4.10.amzn1.x86_64 +jasper-libs-1.900.1-21.9.amzn1.x86_64 +java-1.8.0-openjdk-1.8.0.201.b09-0.43.amzn1.x86_64 +java-1.8.0-openjdk-headless-1.8.0.201.b09-0.43.amzn1.x86_64 +javapackages-tools-0.9.1-1.5.amzn1.noarch +jbigkit-libs-2.0-11.4.amzn1.x86_64 +jpackage-utils-1.7.5-27.17.amzn1.noarch +keyutils-libs-1.5.8-3.12.amzn1.x86_64 +kmod-14-10.10.amzn1.x86_64 +kmod-libs-14-10.10.amzn1.x86_64 +krb5-libs-1.15.1-34.44.amzn1.x86_64 +lcms2-2.6-2.5.amzn1.x86_64 +libICE-1.0.6-1.4.amzn1.x86_64 +libSM-1.2.1-2.6.amzn1.x86_64 +libX11-1.6.0-2.2.12.amzn1.x86_64 +libX11-common-1.6.0-2.2.12.amzn1.x86_64 +libXau-1.0.6-4.9.amzn1.x86_64 +libXcomposite-0.4.3-4.6.amzn1.x86_64 +libXdamage-1.1.3-4.7.amzn1.x86_64 +libXext-1.3.2-2.1.10.amzn1.x86_64 +libXfixes-5.0.1-2.1.8.amzn1.x86_64 +libXfont-1.4.5-5.12.amzn1.x86_64 +libXi-1.7.2-2.2.9.amzn1.x86_64 +libXrender-0.9.8-2.1.9.amzn1.x86_64 +libXt-1.1.4-6.1.9.amzn1.x86_64 +libXtst-1.2.2-2.1.9.amzn1.x86_64 +libXxf86vm-1.1.3-2.1.9.amzn1.x86_64 +libacl-2.2.49-6.11.amzn1.x86_64 +libassuan-2.0.3-3.3.amzn1.x86_64 +libattr-2.4.46-12.10.amzn1.x86_64 +libblkid-2.23.2-59.29.amzn1.x86_64 +libcap-2.16-5.5.8.amzn1.x86_64 +libcap-ng-0.7.5-4.15.amzn1.x86_64 +libcom_err-1.43.5-2.43.amzn1.x86_64 +libcurl-7.61.1-12.93.amzn1.x86_64 +libdrm-2.4.82-1.14.amzn1.x86_64 +libffi-3.0.13-16.5.amzn1.x86_64 +libfontenc-1.0.5-2.6.amzn1.x86_64 +libgcc72-7.2.1-2.59.amzn1.x86_64 +libgcrypt-1.5.3-12.19.amzn1.x86_64 +libglvnd-0.2.999-14.20170308git8e6e102.3.amzn1.x86_64 +libglvnd-glx-0.2.999-14.20170308git8e6e102.3.amzn1.x86_64 +libgomp-6.4.1-1.45.amzn1.x86_64 +libgpg-error-1.11-1.12.amzn1.x86_64 +libicu-50.1.2-11.12.amzn1.x86_64 +libidn2-0.16-1.2.amzn1.x86_64 +libjpeg-turbo-1.2.90-8.16.amzn1.x86_64 +libmount-2.23.2-59.29.amzn1.x86_64 +libnghttp2-1.31.1-2.5.amzn1.x86_64 +libpciaccess-0.13.1-4.1.11.amzn1.x86_64 +libpng-1.2.49-2.14.amzn1.x86_64 +libpsl-0.6.2-1.2.amzn1.x86_64 +libpwquality-1.2.3-4.8.amzn1.x86_64 +libselinux-2.1.10-3.22.amzn1.x86_64 +libsepol-2.1.7-3.12.amzn1.x86_64 +libsmartcols-2.23.2-59.29.amzn1.x86_64 +libssh2-1.4.2-3.12.amzn1.x86_64 +libstdc++72-7.2.1-2.59.amzn1.x86_64 +libtasn1-2.3-6.6.amzn1.x86_64 +libtiff-4.0.3-32.34.amzn1.x86_64 +libtool-ltdl-2.4.2-20.4.8.5.32.amzn1.x86_64 +libudev-173-4.13.amzn1.x86_64 +libunistring-0.9.3-6.1.amzn1.x86_64 +libuser-0.60-7.23.amzn1.x86_64 +libutempter-1.1.5-4.1.6.amzn1.x86_64 +libuuid-2.23.2-59.29.amzn1.x86_64 +libverto-0.2.5-4.9.amzn1.x86_64 +libwmf-lite-0.2.8.4-41.13.amzn1.x86_64 +libxcb-1.11-2.21.amzn1.x86_64 +libxml2-2.9.1-6.3.52.amzn1.x86_64 +libxshmfence-1.2-1.4.amzn1.x86_64 +libxslt-1.1.28-5.13.amzn1.x86_64 +lksctp-tools-1.0.10-7.7.amzn1.x86_64 +lua-5.1.4-4.1.9.amzn1.x86_64 +make-3.82-21.10.amzn1.x86_64 +mesa-dri-drivers-17.1.5-2.41.amzn1.x86_64 +mesa-filesystem-17.1.5-2.41.amzn1.x86_64 +mesa-libGL-17.1.5-2.41.amzn1.x86_64 +mesa-libglapi-17.1.5-2.41.amzn1.x86_64 +ncurses-5.7-4.20090207.14.amzn1.x86_64 +ncurses-base-5.7-4.20090207.14.amzn1.x86_64 +ncurses-libs-5.7-4.20090207.14.amzn1.x86_64 +nspr-4.19.0-1.43.amzn1.x86_64 +nss-3.36.0-5.82.amzn1.x86_64 +nss-pem-1.0.3-4.3.amzn1.x86_64 +nss-softokn-3.36.0-5.42.amzn1.x86_64 +nss-softokn-freebl-3.36.0-5.42.amzn1.x86_64 +nss-sysinit-3.36.0-5.82.amzn1.x86_64 +nss-tools-3.36.0-5.82.amzn1.x86_64 +nss-util-3.36.0-1.54.amzn1.x86_64 +openldap-2.4.40-16.31.amzn1.x86_64 +openssl-1.0.2k-16.150.amzn1.x86_64 +p11-kit-0.18.5-2.3.amzn1.x86_64 +p11-kit-trust-0.18.5-2.3.amzn1.x86_64 +pam-1.1.8-12.33.amzn1.x86_64 +patch-2.7.1-12.14.amzn1.x86_64 +pcre-8.21-7.8.amzn1.x86_64 +perl-5.16.3-294.43.amzn1.x86_64 +perl-Carp-1.26-244.5.amzn1.noarch +perl-Encode-2.51-7.5.amzn1.x86_64 +perl-Exporter-5.68-3.5.amzn1.noarch +perl-File-Path-2.09-2.5.amzn1.noarch +perl-File-Temp-0.23.01-3.5.amzn1.noarch +perl-Filter-1.49-3.5.amzn1.x86_64 +perl-Getopt-Long-2.40-3.6.amzn1.noarch +perl-HTTP-Tiny-0.033-3.6.amzn1.noarch +perl-PathTools-3.40-5.5.amzn1.x86_64 +perl-Pod-Escapes-1.04-294.43.amzn1.noarch +perl-Pod-Perldoc-3.20-4.7.amzn1.noarch +perl-Pod-Simple-3.28-4.6.amzn1.noarch +perl-Pod-Usage-1.63-3.5.amzn1.noarch +perl-Scalar-List-Utils-1.27-248.5.amzn1.x86_64 +perl-Socket-2.010-3.5.amzn1.x86_64 +perl-Storable-2.45-3.5.amzn1.x86_64 +perl-Text-ParseWords-3.29-4.5.amzn1.noarch +perl-Time-HiRes-1.9725-272.5.amzn1.x86_64 +perl-Time-Local-1.2300-2.5.amzn1.noarch +perl-constant-1.27-2.5.amzn1.noarch +perl-libs-5.16.3-294.43.amzn1.x86_64 +perl-macros-5.16.3-294.43.amzn1.x86_64 +perl-parent-0.225-244.5.amzn1.noarch +perl-podlators-2.5.1-3.8.amzn1.noarch +perl-threads-1.87-4.5.amzn1.x86_64 +perl-threads-shared-1.43-6.5.amzn1.x86_64 +pinentry-0.7.6-6.11.amzn1.x86_64 +pixman-0.32.4-4.11.amzn1.x86_64 +pkgconfig-0.27.1-2.7.amzn1.x86_64 +popt-1.13-7.7.amzn1.x86_64 +procps-3.2.8-45.16.amzn1.x86_64 +psmisc-22.20-8.12.amzn1.x86_64 +pth-2.0.7-9.3.7.amzn1.x86_64 +python27-2.7.16-1.129.amzn1.x86_64 +python27-iniparse-0.3.1-2.1.9.amzn1.noarch +python27-libs-2.7.16-1.129.amzn1.x86_64 +python27-pycurl-7.19.0-17.12.amzn1.x86_64 +python27-pygpgme-0.3-9.12.amzn1.x86_64 +python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 +python27-pyxattr-0.5.0-1.6.amzn1.x86_64 +python27-urlgrabber-3.10-8.16.amzn1.noarch +python36-3.6.8-1.14.amzn1.x86_64 +python36-libs-3.6.8-1.14.amzn1.x86_64 +python36-pip-9.0.3-1.26.amzn1.noarch +python36-setuptools-36.2.7-1.33.amzn1.noarch +readline-6.2-9.14.amzn1.x86_64 +rpm-4.11.3-21.75.amzn1.x86_64 +rpm-build-libs-4.11.3-21.75.amzn1.x86_64 +rpm-libs-4.11.3-21.75.amzn1.x86_64 +rpm-python27-4.11.3-21.75.amzn1.x86_64 +sed-4.2.1-10.10.amzn1.x86_64 +setup-2.8.14-20.12.amzn1.noarch +shadow-utils-4.1.4.2-13.10.amzn1.x86_64 +shared-mime-info-1.1-9.8.amzn1.x86_64 +sqlite-3.7.17-8.14.amzn1.x86_64 +sysctl-defaults-1.0-1.1.amzn1.noarch +system-release-2018.03-0.0.noarch +tar-1.26-31.22.amzn1.x86_64 +ttmkfdir-3.0.9-32.1.5.amzn1.x86_64 +tzdata-2019b-1.72.amzn1.noarch +tzdata-java-2019b-1.72.amzn1.noarch +unzip-6.0-4.10.amzn1.x86_64 +urw-fonts-2.4-10.7.amzn1.noarch +util-linux-2.23.2-59.29.amzn1.x86_64 +which-2.19-6.10.amzn1.x86_64 +xorg-x11-font-utils-7.2-11.5.amzn1.x86_64 +xorg-x11-fonts-Type1-7.2-9.1.5.amzn1.noarch +xz-5.1.2-12alpha.12.amzn1.x86_64 +xz-libs-5.1.2-12alpha.12.amzn1.x86_64 +yum-3.4.3-150.70.amzn1.noarch +yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 +yum-plugin-priorities-1.1.31-46.30.amzn1.noarch +zlib-1.2.8-7.18.amzn1.x86_64 From c7f0e37da3244cc6433d2838e7a0e3def3b8026c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 15:28:01 -0500 Subject: [PATCH 076/234] Update base-2 amazonlinux packages --- base/base-2/amazonlinux2.txt | 16 ++++++++-------- base/base-2/dump-packages.sh | 1 + 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index 60183af6..e1d58cc0 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -11,7 +11,7 @@ cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-4.amzn2.0.2.x86_64 elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 -file-libs-5.11-33.amzn2.0.2.x86_64 +file-libs-5.11-35.amzn2.0.1.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 findutils-4.5.11-5.amzn2.0.2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 @@ -77,17 +77,17 @@ popt-1.13-16.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.16-3.amzn2.0.1.x86_64 +python-2.7.16-4.amzn2.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.16-3.amzn2.0.1.x86_64 +python-libs-2.7.16-4.amzn2.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-8.amzn2.noarch +python2-rpm-4.11.3-40.amzn2.0.3.x86_64 pyxattr-0.5.1-5.amzn2.0.2.x86_64 readline-6.2-10.amzn2.0.2.x86_64 -rpm-4.11.3-25.amzn2.0.3.x86_64 -rpm-build-libs-4.11.3-25.amzn2.0.3.x86_64 -rpm-libs-4.11.3-25.amzn2.0.3.x86_64 -rpm-python-4.11.3-25.amzn2.0.3.x86_64 +rpm-4.11.3-40.amzn2.0.3.x86_64 +rpm-build-libs-4.11.3-40.amzn2.0.3.x86_64 +rpm-libs-4.11.3-40.amzn2.0.3.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.noarch shared-mime-info-1.8-4.amzn2.x86_64 @@ -96,7 +96,7 @@ system-release-2-11.amzn2.x86_64 tzdata-2019c-1.amzn2.noarch vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 -yum-3.4.3-158.amzn2.0.2.noarch +yum-3.4.3-158.amzn2.0.3.noarch yum-metadata-parser-1.1.4-10.amzn2.0.2.x86_64 yum-plugin-ovl-1.1.31-46.amzn2.0.1.noarch yum-plugin-priorities-1.1.31-46.amzn2.0.1.noarch diff --git a/base/base-2/dump-packages.sh b/base/base-2/dump-packages.sh index fae87fa4..908bb05a 100755 --- a/base/base-2/dump-packages.sh +++ b/base/base-2/dump-packages.sh @@ -2,6 +2,7 @@ curl https://lambci.s3.amazonaws.com/fs/base-2.tgz | tar -xz --strip-components=2 -- var/lib/rpm +docker pull amazonlinux:2 docker run -v "$PWD/rpm":/rpm --rm amazonlinux:2 rpm -qa --dbpath /rpm | grep -v ^gpg-pubkey- | sort > packages.txt rm -rf rpm From 6700ccbc01e8d51cc3637e04280aeb6d10e43434 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 15:53:15 -0500 Subject: [PATCH 077/234] Update dotnetcore2.1 to add the Throttled flag --- .../run/MockBootstraps/MockRuntime.cs | 3 ++- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 146432 -> 147456 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 44780 -> 44980 bytes 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index fd7165e0..248b628c 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -62,7 +62,8 @@ public MockRuntime(string handler, string body) Handler = handler, InvokeId = context.RequestId, SuppressUserCodeInit = true, - ErrorCode = null + ErrorCode = null, + Throttled = false }; invoked = false; client.Timeout = Timeout.InfiniteTimeSpan; diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 33616baf65fe13e2fe10cb942fb7b2e2773bb597..4880d8fd9ec88680c4407c7cbd7228fbbb51f489 100644 GIT binary patch delta 45479 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 delta 44655 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%0D30L2Mjs$Ee4Kw~lngMRg=bl3Prhfj?AHMR3 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

dZqX&vC&HsZ&4re(h0rzY4MF0 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 diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb index 620532bed8cbbbc8fd5fad74ea36aaedd05be8dd..3f913c8b3c16410e70ff8393a9e04193f32497a7 100644 GIT binary patch delta 14616 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 delta 14476 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 From 595a497e18d0f6a70c99499759a7db2cc2bda272 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 15:58:49 -0500 Subject: [PATCH 078/234] Update java8 to add the throttled flag --- .../LambdaSandboxJava-1.0.jar | Bin 127784 -> 0 bytes .../java/lambdainternal/LambdaRuntime.java | 8 +++++--- 2 files changed, 5 insertions(+), 3 deletions(-) delete mode 100644 java8/run/lambda-runtime-mock/LambdaSandboxJava-1.0.jar diff --git a/java8/run/lambda-runtime-mock/LambdaSandboxJava-1.0.jar b/java8/run/lambda-runtime-mock/LambdaSandboxJava-1.0.jar deleted file mode 100644 index 5576d3f8cc8953ad94267ae636dcd99d4fa6bd2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127784 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�KL*&N;NkGtzJ_{m<+;>|_ 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

#kn_V!M5~#VrHx zcc#ga<>=SBKCgn8y&8R>L=zU1h@$C5tJ=QE#eLmmFoF6f$V4H!%mQ6Co%fuLyoBtt zFl*eT{y7dhL7T0hpI$XypjA>9AS2H@4CcV|iBK~hjHg#}ytDTEpRiq{jw`>MeyIe4 zUpUbE%ch;J%O$tu-<>FhqJhefkY-IryJ6$3&NU_Fc z%1($qCHApD`-7wr@byqDGi?jNs}B@nD5#8TT*25elg>Th7dTq5phOk!CMT)ttSy=TGE+;HWy6WzFd-}~H*-YgP!9&U z!DdysR8`XT%hQy`3k-`2vu)`|ZTw;b+dnx`=}?7aZNL`lSS4(_L~Tgz*eIEocFK`v zZs6|%uttX?v}apq9i8cH?hx3+wlKm2M?+hbmY2p?ZY}JyX6nRlgS4>8$tqO02S`u% zrTmjTCEHM;1sU)PUL_$EWE}uNP{1ig@{exLDKLjCQpYu#hA&3?I|0^DH;yi zmY1M<*_%lR{RQndY@_o1>xBp}g7r8p9Zfm{(s-D1e=Y6oqNxQT+zA<*xJC*E0sBJk zBHqUiwslDyg{6Ott~eDMjB#rHH&cX9D3I~f?PQC3b>B#GIfakWuMRyo%EpksqO`H?hNiG)UUWU?8_3mCP5T> zb>#fvR-fZinb2REmTe4pcCz;M*y9rRHTYr8j7>*3Cq8~n8&HohrA7tOmw_?IJnDakUCp(05dak6b@uY z78ylM+6xLwHjD7$C26M6R39zA+~b!(v)@|zf987U2GGs#?TM=H=3J9kcN5A(#Dk+T}h)#QXXV|`D02(ath^6k{ z^30Exf2=}Lx6k?3+EJTl3E1YiJ)g@mY2iMTjW0_S`C-KE(NJR!k2EcJ-5_*Bj$^EB62Y|nUQxE=QOQV*i1FPTsEq+2MgtfMMPF+kI7a+jsUF<30CoxI=z-7OsUul0Z?wn)48m`RUZ(0 zpFYvZuW0A$LuZ=3&u-M=xKI%K=MZl;b;fJ0wEXzriB_|)wA}HY-$CIbHB%%gwxu^J zCdaCHn=Q3;N38FsrC(Wjx%AwzQEfkWJ{p*WyDTr41nC4)S{YZC#r~|Uzg;LWqK1d) z4tXReVN0O_pJ`sfG38eYuwPuhuFy5_5!Li~z-s^C5}AFs^pvDD|Fa*nPYg?%ht#%R zVsFm#u^p_M6Xrxbf-o?zP;X~DS~+l4K^~B*wT4E&FuzW~k)I+>HHR;4kK7h=FqcfN zQ0gaBQK?v=7_sERx(v+ah(e#*6tVR2DP%*p6L&V%=d3HZT`#1IMGJ()8QV((V)siD z%@=V|yPY+C$wo^58hLRgryOhf`~&DNUB^pbiu(Zgkj{ZZ52icfdB}?=tc`q7d2KwZ z%!E<(xiij&$KxJBf4lN#u|2Z%f-j_$WScEV4uLvo9tfq#vx=3$pW@f>${)W2UHrMF zQnzPpZ~fE1A`bj{X$Sb_%63hSlg2`tua%JTRp%Ft)`r%~g_D^zrX7f!L=6RpL2~yS zEtYb61?f!J>BcJ>V=tc737#OnfDP5jacK;dCNLButy1#NqOmNUgA11nV!*KlM`L%I zHlGv^hJ{r)R0#~#%VWnzEy0L)trYV`vNgrx1#3n@-kn^vm9;aDBZ{}XtT(dGkPJRX z?bxqY67~c@PkyE3(sajrVTbf-NSD-UiEqFREmp=SSQfO(Qi3J$pSZW8^ieN8^X;%>nxC$BAT@Z@iPT@&u~+C;COgoHyK z!a(K}`0wQorN1Zn6hjKe2h{&as0&-d+7^3p4@im-7F%0Er#(@K!09py9i-wLf^BKN zcQNgxTuFi-VB|%uE|RhQz$o(&bV&K-Y^Tt|R)Y8;;*!v+>U&-63oB+1q0%JKs6jDM zclBJqtez4Ft8FKoF~}k7Brr#Bq>>%aiFVL(`%4)f0c-=P!KS2~W<2O3O`j=vh^ayHg z)Y)!lZkWxPU*m|OdZ<2b9Its~@qf^7B#5shS55Yp zW^-$vJScF-GQ|Wzb9c*cNLF*>Z$gO8;61k^n$3H8hh{2-62%cou?Q7&W8*maUps0D zI^t4k5z2$<4qiIJ_K}sek|s~_KL_0NpoY%eM$$CK2<%x9lK?2!78*p{5kQ4t^_!%O zy(CM0PvLf9Q2!q6BNPv~31cT?=h^0rjV91e`_+6kCv*){@vlqL2*By2y^~nlS}`c; z@aK$L@}iDAhIN&Pk2cOsPO}yD>NsOH3T8?i5rN9PPN?!myEriz=6yvhp8J22UJwA6 zhBh-Crs?3~TH0&Ja@ySnwgsrWJoCscQ4xxSOkEJ;_uCnbCah0oU*3@!PNbOn9mm_F zV~m&-vM3(lFQ?65t8|Qg0 zHG(;<`B@xxI9HvZ=r-a2PA2D%-lop)FJDms%bLdlKqHnq4^S4WbGry_HHV*3z&R9M zerg_B?L^CQdH~ss&}Rn|N2>DTVzjj8CheLxIXywSz%xt>S?gni;lK&`;Rt2$X%62M zoEB+R5mR-2$-So|CBTg`zG;$Y3OUZ&2A{_L^Ee{@K?23*a6dS~_szKa;Z*u0j|6P? ztlI{_?y`*iyD3ndp{Hu;Wpo8rx*UJSibuUTOCB&Wl5GBNCwa;@&OK)a1(I_0i%3Oe zCps3pkJGkJFT6PkC(Go=wEI=8Vcy=?I4~>K(MPLCFT`cyJf{j6JxETb>gF_WopuDi z-K7nlEi5-bMC=Gq|F8q^VR9^v&FlyI8rdUWdE}Pz^~q@Y!@+MM_&bbZ?_K|$z`7?c zQ=1Cg%wXMUfq=8)leXrs#4+7Fa81X0z;}$l)PtsNA^H;@QFm2Z=+r04JNjW-_3pkOTT@qB=<|~@@x(rVs1nPocJY1( z(yDm64|7c6qZQur+HF;cZ9-*ky(S$0$0?)t({X`G_` zkAu(&3uWycNfTU}3EI43Cx#8J3=C5oFQ@7vkP1jtc(%-yKlg5G3NcD{sMAHyNVmqK z`7AE>y3ypRSm0;Ru`m{(H36xv&yHp3%zs620S_^ZrlcQPQ1){+Yx{(<3OA7lDA|w3j(k7mBT!H z!Q>aI%IbM*Cb1G>`nd}Z%R+ptTOeDWf?--KisACe4ohG=NXL$IkquznD`!hD z`mcXCODaV=?}+b;j)E}BKa+FL*i|ne-S$@6t()J*z?Nvo_@zcTU$0I$)|Q^Z62F(- z&i3Kovr59upU}e<1%z1t6gPCURZM9Sk$xVVX_0iR0q<{pj9+^%%~^O4`;FBfP~ajF znQZtvr?jQ^^^Q+sNB6Pm!5Izl*qPPTLeEche7RcjQ)EBGO-nF$#+_W1SV@*u{DqnZ z51oCPy)5}_d0%*!7bMG=&ZGz&}H-vwKiNg7F z?6&NM0rO{Wr9u&^!yscm7qA;OycdrN7%eC>93B>z*<2E)4#tb2I5j^Y;sE1ip)j}O zq4Z)eI29!3_~SlmQ=kLL&6%C)5LhxQMg_8B$~i(AVlNXfHcBwMy@s675Hd#(G3N>Z zwEG9#v8WoB(ENAQBfNfeUruOegrmGe{b;;LW&vyivgK0UY9NUBiuF~e&|%=A+8>*k zk#}hA6cSzrQM!V#zyu>bOPFecAuygb-d8C4pn|kjO}qm1X*1tw4FUkHPdP@9-Le5e zl<_mO&b*RW_=R_Q&xZb0%?#}fFOT3ZyCLmD+j1$vz~(R4o+)zT5!=3Cf+jnr4GP|qb*jf-^m?`=YuR?KBOi)YY~a=yMsO|k zDqefrxqvpVTWlOF&NY{=M_mQp0;)pfd)T9WOe?q_w3-|8%o)Z-TmKM^`&ldeUYY4n z*o~>);_6SEjp^QktTzu=+@IW=lhrfgZ&3Ur!FlCx*01<|9i|)kZ(7#geuHn^w7Xp| zl-_Zdzj=IlyDYyJVdmHtDF|l#ft*+z@a`6alZ#Z4O|%xl!bLRh9IYXb}d^uS>kLp+aXs60n zkpnqJkD!{udq=Z}=RxC;f>jU2RgHOAri`Gn=LT1bk%wZ^;=L+n-T~egsmuJ5B9p6Xe;w%)F(2 zK=*o8&RFLvA}U(taDn&c1awv9xHf ztmxU&UshU?tZqQ~D7(h8t0=oFqUT@s5^3bBjcb_z!a62o`ap`*`lluG1Ern_h^M5& zjM22G5#^S&a*chMgD6?lU=Kd9rqVA8oo}v)w^tiH2R<&9T!MN}#F6Iryip%^6^khm zEd05&Ch0Dqm=|1P<0$|P*LXp=n^fPl{>@6nccu$|ikb_`ztF^2|vqsWQ5gr>7;T~^HJQT8pj7j{M<(oP8^ z+lH4Qdq@p8Ba`Z5*nBVRE;Wc&Noav47Nu^oJHWJGww+LQDN|CPcVu5xFn`QvX9Yok z+z_WkDUhMdDK6&lzSj$4*?6<%<=<kt7M$w9FZnEBBZ=Sr#Pq1F0z%19VsHs&w2QPo z6H}{^NB}`p&0s8wuA2|kPR6wM*@O5b<+{Mg?ASi7GOp!S*(2_EnEttQDUH#3js&`< zG4oAgMZ-g+Oq$!SBCAb7M%3Q&%Di?3a#SsJlmkD#3NC)RrQHOkDm~-LBYcew{oJHJ z&J#ea8KK*VQI(CQq>Vh@j@t0o#K^YgP-dYhH8X`eK+B_jJCzM8>$?((;N$Ef*;M6O zxRRzMRpKXBMpv+f#@5?DEyw_dYZZw3?4EdX+HVbESY!=P2WlFs0tgl6h8MFGhYl2MASOX)_bm+zGWuK0un^%v$<^}3dTj%6g1 zdg*nHqKW@CA{p6+;yW`!X%%4Aj**~j%rePk=*6^$E9v#XnR4KIA+R5wpWCkN%lJB0 zwUE)v)s?)KzJTy#yhx38Mo>7 z{+9h3k6iy+Hok&f9^F?K6c%`vru$Kx=W^qeS9?`z-v|P4O~a`435fqFllBYMS^8Rv zaZcMf)e2r+yXYKIF(kNVLnHgSR7t!j`7w zn&>q>Xv?xEeASH0pxmknKb%I#7$43F6|P(0*ek`h-i(!1SkIo(4^DS7)0>rzu4Qo0 z4uxPZV_2p&>(z-@M=f2Ni_T}%sAExX^kt#TUpqdf^g}S0BBZ{Y$$AKPm1OlG@uBFW ztg5THVng46rKe_W?{|fGp4?fC{jcnTtGMsoRf!MJwJ+7^!9>p_> z*HYzJr@u^xcZ7LmTDi_wbSjN4(p{I%SKvy8;ey$PW|RI`YK`isRjYTH06<|bN2~O; zE&ZhvjsL)z7||yTp@Z$h#p}!}EiTsueGXBNr~3*=q}Lt3M6lq7u_hsOx*isikzuC~ zHzug|F+oxf4#{p*p((>)bUTM_N2o2!zF1~wC=EzQu zx|rtTBgXNzE2CkohWME88%&T4j1ff);-63=TM#cz8$3RRQ=2ZY@6ElK(yye49f`uR zMW-N3!UGJO3_cQM_~Ri`SHs5a3O^hq$LoZ}p~`ydQPEeU_vm8njDlVET;CcL8sUry zfKc$@mUY#6gant_;f&tm0CvM4RH<@3oL24i+)dI{vLfTCt5SSBuNjWdKetd0?0-+< z3Tv~qcHDz+99{$+(*<-rf?wFv2mz3n?ZPu~f|~bm)iu7Mk&Zue{yHkxHE5sy{({r2 zHs&(kyGmF76+DRgvJ3iO%YRb>XJ?~8lvJ}{(LN9SxlR4nenMvFv3^M5(Z3nTOc?!~ zOhSGV47^=Q33``6?Gy^F*g(%MkU2nMs~RA(R~E&Wf=|Jlwmdmfw8=N=R>`PbSkT)6 zb6TrvI)6TJlB;X1nx@%v5^Gd0+^6#|^~_uwD;E$-NXrshop_Ts<^6A%5a#lc8AM5F zEk-)ICz#J{a8dp$^enJ|uoR>ILeg%nand^sKB`M}`_R~HSm0WvD*lW%?~J+(#yd>6 z6B~urog}+j7~Z7sZC{umfSp)?<}t%-Z9n1iH4|PbkIJw~IwtCbKj5XSn`zE&c!lC$ z(Q{Al$rfN`m!5Tre|b>Y5m!6guRQaL5^8pXN@0|mz2(dVU=>Mb@V{AKDsklrQYk^? z*j$OOJ^}j^9v@Sf;O_-Z<-t=33=y_K#Bu5%2_nSnjx@N?c^lY_GM%#3NGdW<%Z{+E z5(k-c!HEMIoyj(r-&0PJGT)HU@hsZ-4$% z)L_;o1h$tD2xwdNf5HU(A1u=(jI3@{G%bCw_C(4} zm92FTtC2rbyS<*-L{if#Kq(wbcDl7{Z=%T<{_-fSs+B+xht$1xo!cq6?I+Qa!_0Zc zdR%wlKoGB12y2g5l<|$WZ_MIP{p*~=5$_V_!5!#-AT9fNF}`#DK^sQ@J^y#A0Q>(A ze)wM#{ZFF4l$DvYk+X@Vm#BlCqmi@GKR3evCS|I~J1hzz`5kgO;bwEtlP8N13&}o$ zQ$Rr%h=rh(lc@X=RYG*!Xw&E%uBY7;zEgceYkoQ|MjTrqlGG~u)vHK%!+J!l44c+zqMTN&Q{uEc;L!4}$lt1OL24WOI*bXfkVRj4R zgP?1iRqYpWpTP)WE8xPjCJ~_M1JZ}0v6i?Yq4SwKj~!CRITQakxQd%&%6fRm(r&RenY<=$*Zv9>mKrhFG z)~~{;k~nG`qee5Gs*?%iAD1?)u6O7Qk%jXcpR=v z$4?~AKTf6e|H!Gt`@e3!|Jq|Yno%BTn%FjihE?~jeg`Qkyq zps-9bV^W4w_n#iI>_(H(Kgi^mGIA6>=qE04(YRV1}W_4r;r=BdX-<1+N7z44=Q*(kHC5P|rcc89Z^%5Qgqrmo_*kc7;rUkQ8JG-a>kv4#6j>%E-`^yNkeInG> z?qiU=)Eo*PzZEHr&uEfqOJaw}*yc_M7H{kJ+kyLKf6MKnrT*nIv;NcC7|nT1MNJtk zLL^S&*wydonUgjeoYM;DvBkgzEhBZ1hA51l>9*1~&-90FG>e7Gfw{O+l1aJpa$?S4 z<&Fb`JC#kZzag};ZKTf2uIQ+(X8*OVo+3eEI-AvbNv*>gieC)5R7JTu!Z+FQy3B68 zLL8g)s7~8fR^t*j8!1r7p+FT-c=TS7l`YZCXmL${9#!F2Fwe=Saw+w%jU$F37465pMTJ^rQ$#ihsmiZC1wT;0!zd%EPn4$H*6B6!?~X{Z0!QdvEf?bqEVFGn1nsjqR<* zCUm>fW)-N|H^O|5M(f@wI!pD-Q`mMU2?~YD!MzhWbG}>DPHQy0W;SuD7xcLAei{eyyIUlh_ZhJwQwDBDNEQ6e%%Qs{b+R1V7NK-3Zr7*m=J$f_;i zf9A;aMtH(ADAb%tLUzBO>4mEGqFMfpo2@VQ=w`Y8O>3z=biygE118#pke{()kk|{$ zza}pz_mWQtz2L*ReLE<;rdm-mV2%_T7L9W%pgDQw~>9nS)7 z2ni20I!8uG8=!d)C2i4k>kX@0QlZZiMSuv7mdca-aYkIDb7U?6R8?m#AO@BYuy+VsC) ziF=xuIl5Xo*#CD<7|*W=B8(Ke8xRER33UKzY++o0p=W%?#!+?;SAQ4ezptU+c$Lx3 zf3VxYQhx{eRdDx`CdMvpc~V~#qS<+`jaZDTesP_; zEV?Mtkh_wwqUsE%4GigQJg!FgI(6kBiH%6{&XLHIbH0S>$c@%3jY!)BBb=fpcuBpa z3dKS{Z;~~ldKEn6REK2jG^R%Yu`l`AqQ-tJQeGWJE5SZu?U;^~m+R3nP#R;Be|!F! z3kic6rLiD?^DX+6ucEyQ7DrG+*cEmVm+jM`mqUbK*{cPv)S|t(7FnG?NH>vL6GLq_ z{EtPMNr>xU{HLt-_&+*06a9~i@?Rg{PiqR8kgSaiebdOyI%jmKT`SMk2iY#ywf8iBTAmHO(# zi$>8fJFwmA`eRic?i$GH`|9enZt$5M@78OUdZql-5%rWk7S|2|a?xe%X>f6q7GKf< zo&R~ypN4bJcHNc(Pxt1{n$7-KjqRA1SKL&eT^Ky>TkaIc-GW$=;pUBJz_DimzGrIZ zhN{7fj)3;jE~1~iBVLbdXbKufdioB`r#l~Jn=T*h#csuct~{@n?)z_h9Z};$l!}l0 zM4`g{h8R(IG%0r9)z>l^p=5BD&Vpr6-&vk;)ABa?mfOr7<@=P#+7BH^I$Nd1C;eVr zwktcyRLf7aZCVuDJ-!}hrT}SB)v+X-@}Xo14yVyRjFysin_rNo?tX1AAq8Qs=AQA9 z4)DHVk!1J4<2iM;%Y^GOcl@hPjVJFDTF--ay_f8YC0&jnn zRyDz9wN`@F&0qis^yI>3h1Q+(;~C7!;{fqo8ibch1&c~QB!MUufupcF$=vW%!l6?$ z6QF=F(Kw@@*D#wdrV-CWvNgFDRFHN{_gGf<)I%~qIyS$>Z2lA8agPy zZ>9mrvW%n&VhIiy#(0j(!s0Hm8959DW*v4|Qb7U{dTQD*sjujJt7FC^K!n0q@RN-t zVr>4;Uz~GD+KC4TCO`_QslONHuY_|U5E|-YX?js-?u$I5cdvzBY2a3AnaB-dnjmF8 z5{d|??-DfaKRES&r7YoL-_niM3Ni1Y&8GGw7>xBm)u?%xiSk!9n-u`%8GySmzQ5_td)>Z$^`HIx+9muA%oXAjV>#GP zmC3vnjwO)H#ppyF$pgo^SE$X1&0;)eiH7WpHf$D+{ZKzdsa(utKbAsObD$bwBVj%e z-xNR@vzI*7G~^a=*5GW+jZf$80urXmx!fSbGodf_?!7a=PQ*>{5DIoNyHSImjmm{m z%aEFm5w7=i($sg8e0@PXtS9l2M01E_CGVyE9~eN6Q+Os6x(#q(n<=;E-}A~LfhWwV z&T0&-rM8@NJ(bx<$3$a>8aLTRU&*B>O@x=FipUo(WaeO*BU@$;(u!xg;`&fv=7+lM z#RG?8^YB;MvE4)h$!j!va97i~nD&tGUAL8+no+_%SjC`*m3VfrI_rk15#!>!y3EW8 zlwb0K-Ug%a6zzNej6ZL$sjb}I;^o4SGT0xh=KE0wUlNO2iWtvDR$3nePLp<%5!BqR z^o|FYLeX;*-t-P2vV;y`HGE9jD<1={+rc9k$$LnWUn2cAaLqsG*N+&-wrP*j zuHA@~&!IG8^n^AzLWR*ck(v<09`2+%mcnchs*8saH}lV;CrPPeMz)Bef?Ss%@itDl zb?37d@#=TygZOBByy(oObDH)Kkl31B0)`U7A-Q20_yST-BWum=8*s6kLip^p@A`#6 zVa4fSud0>kU}?3Q9dSMAd`$}9Fm|Ewe7s(v@oM$fRp>d3$!}m>yS-tV7IiOX3e_0e zgdW(l+*Q5O1CVz)c_y46syM-T3^4@NtKVo0Lt(Rbtr*n2AQ;J_==E?pQOSJ40qet9 zh%|Yt42a#w@3Qz}-RhZ<9Xtmny!E&swP4U!Q4W~JLm4m-hTzP^c-3lI)UEj^&uFdY zH(o_>6<--iDF#jVPDQXChs#4K=n~?Ofe0g84HK=yd0EsZO0JyZhF6I}W(~TbJN?$^ z<~dh&39ZG|Peft%wqYon#Q)m-n?@r8!W`$7bj!~}v!P`p9hVvV-A!XyjF-*^tHkvKzf$(58ZF0Y_V-+_m5NEu$i9T{O|4k25)-tay(yONK;j+9LC zeOBvl>#?Gr_=Jcl3S5nH#nUWaoIci}{Pr3M-Xc0$bM z>2k$ms>7rH>+|W=<_F`m`Vd{AV)O5{Q^q_!l|E4no<;Z}QjX1mB8)?(^%+~$p&x~D z%|+(|2v5j{^3sWpo{^v&j#L)U0-_+4;z+U23Kw4zg7SUeeaBWCo{GJF1`ax?AA7Cg zKs!i{rD+mQ=a#C+w$ijM7ip1I=sMVjZC@O zYS`2>WTs1VTLP`yLA8b^a_ylytak;3&T6J)v!4bjTi>u<3HoF_aTSlwfwvM_L*|Zm zBc(VV3$}d1i*c%=gY-NhSKswaO|c@(!#Q8keJv`8a*btKA?%~0ivlnsoxeOZF`&is zYB#H^SPX}HE}%&>nwur9j_rqBq7j~J2L9b(8_H|#6mwZAYW*Fj5|n3DXb>rgcemm~FRu6`X^ESs2EGpg3-A-L zi{+T5*_fePy2Wo&Sysh5`8$Cj23AudPaHVG)OTb1xm$tRWc3HE+{BEuv69Rv#$?i& z?Dq_w3M(!`_?X(rMP@->d5?$C9f6x@Ix#2rILnac(yotda5#bn;(c?;Zpf8i{c)Ma zEqjLE7fALwIzf?2&G9#fnhb~TTGTmmt`W;DVIzhfc0ghhRqV#ij=>U|F^-7yFAg)z zS)P;;d5?;zGntx|b*0wpGkcc_PEvCl+)xkwGezEZbXtWgR<+@lU;Q-8xJ<`=$gih{ ze*8aSd-7vufOaSbbCnfTD7&x3gqCOfvySsv7r#(<6VzI}v_gsy53o%=#H>-Da#SDb z{Kwlz0nA1E>@1`CHz#sY5=PJta@N2oz79F8UT zzCGjhCSBv#8amvQbZ43;2RHw+LB$NSE%7p>P`c(^yYNSx=~Yv$Az$yF7?x=adnmy- zw^Et;0%dJ2!{Cw=cR%K1NAzgUk9AtIhs8h%{?J#QU8#f!K0~S*6U8bjcEpp;lX46d zr?AAy!hiV3aZ|{~E^go(8NGiWIsfm4f#81@1}Qx&eM3D3C1Gnvd$+%fLWU~1E9L_H zXBM@GksBhZgyo(sd9+|B0cjvmZ1gT=gyKkHY}|I>;)WWg$6kU;xr&U`RU(Q6tUKzl zG^{(TC?;n!R!4S0eE}$S$JHB;DS5&4SH)tj(b(th&ea`G-QDIp{bx zzVHuDJA)rpz0v?$eyXZBw-~@x4|`4kO54W3Rj}PrtiwsH5)G`%H@C*XHsHG8*7tiA zx1TI-EyTW>c4_l&ZT>FLHf*&e?zaZl_!uC`e2` z+ZB0cL2NTNOY&@73~>XjhfTfSu=DcZcB5Vo;B96QSW}H7KVZ@~A zK$RA%3~s1GA;MB5=F+1*+YBlU4d+Z<*UfvBXuPBKvVJ@;db5Uk4g|2*o5mFMkJmHxotu$`R-fh0#Ty}+t0|_)uT3amAm`3BA38~Ymay~l2s-|7F zQuJx48GU9-p@`{ZC1>bftwWnXyk9^VC%w(g%A7WbM%=8(gN)*sabDsf#~ghcVO{5V z*e^Q_6AOrW+Gh=1fUWk<#UZN(7@C z-;aUEs>VAH9btx8fyR8H4$LjB#TtcHZ9~VcU6CvvsIELC(K|FG$~{+Eg=J##3&|RA zdbAw`L#MSgW7shux5;J;6{)5Qg70hwfG0z;R_S2{GargRahl=l9bFM@C91Qetb5xA zX~_xIb}jU`DSbxitRM*DL7wVP_*sU+g9S7xP9j*NM#VJQHGR3Urch$FVkt=w6TQYg zo=Go=)gmR)mABjGDm3skUA6o63{c0+N`TGY=jheZJU5y$BDZQUU|E9SDB9OJOWv3_ zovgZokIdU2rSy*00pXpyTjZ)XFm>(Vyt87b9|$|=gxtkPtEnSI@Ink5Jg~M^|3t$Q z)%QEfK1`?Nnb|vUx9K^o z>BOr<#M&Dn6IKBk*cq1~0cmR*0!eZ#%Nq;S1rVP_yW(5}bJ=~h>E#9%Dan`NY9p4? z#J>gRm4a)H_G8IVd4!dUa}~(a%}_X>TdYYcy#7QU3(CZhP4%8&HRpc9uW_XE@)=V` znqYGiS9_9~j0x6ey$8Dm01PE^+k2~JZ?daitGF#w<}>e@+Lgp-!cnM$l>fY}Tq}=S z?ZtOOM#d^V(U2%Tm@@ENti#}LcXwz@RzCNCE)TY4D2HHV);8{0Kvy`wZTOK-N{dxF+X&Ydm^JCcdJ za=;CDF{$iPMIK5J(48KXE8PzShkk#tqi*5EihUuSU(iHaK>iZa^rdg3*nrsZk1 z_g%_pDpS%1p>M-NoPb<WE*m1}|nn z;2y$v;XNGsKpL)A2a%Yz@OyPInA&|#FWfb#Z|k;N;UAs|G(f!lh-yXK=Ei=4aewwm z$SMJ?6xG<_%8`w5KvJs+{dKu%C)~&o*^XQ-A<95BNNg{;E5j_zT5`zXG|5&%ADYJp z5OXcL<#7xRiECN7K&PDMW`cTtG8pex`yauh7EzswYehK}WIdtzrMqBylDhJCH68Fg zYig3%@t?8i1YBKGBOiQ=@=;n)S`WQ~=vW;TT1f;Tv|lp`G$A-C0y=cQLeWt4eV$Pc zV9Rn7wCp+bu*{%|vHmu^i}REeYdRp(!tN3Q`>o;0IlYlY^ghBfqFIGVaTtPFMzt>QF&Fe=DA(AEJtBSwKB_jAjK?fcK zScDp70j@Rp^nQ5A*sQiqQ_dB@Y}AZukrL+wNL?QBz(@q%tg=@gDTEKNHGZv0b9xtJ zCtsC)*icRncZFRF;cSqx7ydpl%sXoMFndqe2E&Jdb=#xn!M0j4CdL~6XN zOUN6~CZzp1$M$ea*d5?~RrV#=X8dbpf#|>fBlMN__Bcmg6{Loz*$g2`D2=qn4IydJ zU(*xnYw?3onsNAdHyM8F_-|=;cbk(kPY8=0_l;5gI z?sqCx9gCo}kiU3Btagz!uKJyI5jbV^_Cf^OCP=-J%S>?B-n=_IW`Ugo)J|`e!IY^G zC6{F`@3=a$ICOfGZo2>0+7vLWjj;PZ)#{-9cL1v%p)LE3S^v+6 zwVoyIKLPB&h-wlkI~duE=s8*btIB4E!kPpjKOA?46a&fN@!;FXYqtD&7+5Y?8Jr3j z#IIY5jQj;>PV9>l_;)IPc+Y7UUWxKal9-9pTn4G7f+_X|<@vj@K0;sQaiSePHa{{E z&+u2YJNijD&YhfEC_>SvrvQ}{D!;+y0uVHKfHc(j|Bnl zb=0IBu+;JvXLR>wQQ?Fr@t{g~(a`<+M2CupDhWi8ssF45-(@_H2jqso?3#XTKof{+$x%p1x6+L%}!~ z4)%cuGwUixn$i2k6X0RE4Y>t1CA3ZL`<<50o0wjeE>k8>G%_X(@aI9`wu=HL5GNP!GYSQV6KM! z-FT3mO+$U^6tq|JBhvt$C;*Yc9+ zewEu_1GDfj0VI7W?)r?8^U29hpY~3G;yt09VmXCn()ddQXX*?zpQ4NDYQp`s#o9Jz zj!1Trd_b#kffPB@HM9GEZf_a3$G|^fku!Tea(@=<>Q?7DbgGloa3fo432d|~!w_+4 zD6Ne%t1{;5tanL6t~`d^*YWmKX#r$C(N@%UBq9C(H3^-p9nGwai1<|%1?`Otzg=z3^ei3zUik$1HHkhxIPSUr!FgA+vyWd7 zIT1;n&jg`(!2DzoDyMga+Kv{jzlo6Fsc=KL18}!RL+VPh34&{@9S+Yg)7k5)Y^G>` zJk}iI2`7!#f&M z;;Xsb`pFghWHQByoumm0uq0N9-C~m_+LgPfmJk*w+e@*LeR3p}j(f1-g>5Kwl7mzoWw{hfDN{!;|tvGf~=p+()5?a{lYzb_{SQme}W#)O>3DG8Toe|ln^ALB) zh-XwJ1dc`9{jM$@%hf82Z-+P-cq~qJ*IP87Uriu{&!VpEZrWXSF;~b~kJTViVoZp6JM?|!-C$@OPBTBhS^x$B4W(Uje z`f-6L+A6~#3KGH=gl_LcKZ#_ImH-|>F9rLlIr6|T$gW@-b043FjUAh5=Sa{qtx>C8 zBhN_%=`%#eDNs7k2yL=-ZFRzmlJ~9Sc*x_~fkW$sO*E8zQ{#>&gBA;<%s)#aU5KPw zMwG(Xlj;MpXbra5iMRYjq;?_-T`(6+Sdg;%Xx>S#a^Zf8I)|Qcfk%z1t@;c+6x}pf zBVo`{38wINz%KVQ=~Mu>fmXmL90h}8B!G-^Ajh&+uVicVHYm$_S*kDAHhzNTaZV}z zLh0%RFt5dB?hb^VJ=CmVLHYxU^&u0E`_(p>^HnVPR|h9@uI$w=KF+ZQSHEv1u>jX> zgJCfK2dBMFeeq)XfDHdm)I+6XFllQdIQ>mRq-8G=Hz_%HHTY|qH2z3oj2`2$Zr$`U zmir1MRJGgw^3TB)fX|u;*w`yN>e)Lg7&&}{mA|vAA#Th3 z+qG@5D~`8KytPrAVICBC5xD^tWbm^I=CrWAPN3>)sn%@OCXQqLFo_XsfvY->+P-1X+MhH# z1H6rFh)z@dIKa}HFp1l6DytOHS0s6z;V?p5Nvr*~c<-6P@sqTmj3XiXb(z#G7N4`# zdWp|yStGK6T!K_9o{bf{Y>~=nwzJTrGkllDE00}C>x&W9CvE(Ad5N_51enmhg9P}2 z2fVV;W0MwrC|QE3IzlMI7s!h8oJRVW47YYE!+!>1t}xfC$G4CtJFnBRhEiSpl&e?< zQdP6`H!P&==H5V_0@Cd2DxLf|6)oM*9+94S@9vRsu3h4qes&y)HvHkbFi6=nh~OYo zM8(10#-BPFAI%FF^~I--gEGq@7t}Ccoi->8&momk7epo*i?;UD;VBgf7$W5R9-LyY zO(*3>lH7KEH)BvR`f7D2r0=jJ{TG(+zlR;c|4(!NJI1~Zust;gX0mFCx=3Hxo%e~d zf$V<(tc6f>g5%c+`oj{-Q>~R4aWeb8DxRB&3MB>-aft^#U#8f**Gw<8f zOFt%tJ0QlC%b;*KCYd)Mr%hxpK!(9y$ax-_S=Jt)A1%GrbuPD3Y+rSS9GNYCG z`3BWL#GzPmC}+qN#BGz@w_C&m=rJs)Dle7ir4FjFcp^rSV^ zDtMmEG%ShCQIMQC(SXhw+SfA%$ic5|@-bks{C{xv&Gfu2U$5(WQ&umbrJm0>UO`Lyr{~EWvDFU8h{R2fC&ioW6 zu+3;A4T?i_u_I+9si_h!n#tY5k5sdjB}&8~z*wTF32^>B=EJNj0p=aY9dd(c@?kRW zyhfF5(`wq|xWl$fjKOSh3a=j`p9LaJVxUIQ%2k1{$LjV^Lvd&vDKW;%3y|Nk@ zXmovdJ0XMqWN1yCM^f;6Ab*%}zGjguAYos|ghFYeSzdcqSa>5lRg zhG9Hyv`vHQ4yFLLAAN~2J#tLeECocIRORKXUb~Nuuiv+@!;=Xd+&@TpKJSTr)tGop zaf&x!$_Ax=&+D)h&m(*x2Skb$(i!p^bVnTaZ}a27l=9zE#fn0|a&QMx142$bqbVMs z3wz70n}&CimmJ%z$k;~C%^qula9ZKAJ- zI68VC*F$0m`(>fuJG=rzWz~uX-0YM6Fp@k#rz_?lm(DZ&qzv$;rZDS?yzr~kZ5n>7 z;O|0oyQ{tB5M_iTQ}m%bKKZHqQ{iZMJPXP_C{x%dkTIeV;Rarj&c>Uce+Eaqckk1G z*y_U44ARjkqcRV%K+S}8x5=zX#z!zgNk`x-`-th4R0z48^;qYg>o$a;JBa;uAKgeM z<1>PhRwg@(43zPlCy16qiV7Dr}R0NTLkj}lW5wbRn|jqvOK z)H*1hv_w5ayhO1y3|f$P99HQ{oS0bD;dy$F+94??Q6=hqXkrk8noThZimAtJi{a8C zPtuBxZ7SnRbJ}=+b`v2#odK+GjnDY?IK~aF8^2;WA}}zqgb8~Cq)7%;6*2$-2Uk$I zJX=Z7xD_jHtzoOVlpov1bX31_q0ajt21NJnxc0X-dWwt`u+9@sEzORVmY7;b#6FTb z8g4Xv8xFv)eKRYgCs7$I*3(9aFyB94nUm%hcXYh^23uR*zfxOYp_!e|ET*Leh+(U8 z(yj+Ep*Dx1e}n@mct{f94BZqf{z`vvN_)9!5s6?ml2l1qhw%dj!m-|;0I}H_E5|!! zm>Ut|vKq}0Nyu&%vqS2bQIe`udePtC2JHq{U7Q{v_8k>Nwq<@4%}uEYQCfz0ZJ7R4 zYHZh4#bLh}#16A9JHQ5MvKte7P*7f7*RwTA#4s(r8B2culC9y`Lpfz2 z-f?#&ed;DeWA*=zip8&m;RE|4ss?E^r6#??)wz{vf^&u{9APuas^<3X)WX@YNmaUr z$9_AtkmY3dW=}l&*ziFD`{1#-5+DJ+e7%;T4(f;_KQXS%VX7?ynyDBQgfYS~#$cYP zKX1n*EqAFSLKJhU!GeNYSR$(%SVA2+4nRY@tkl>ba*i)`pSh67<(yXWhL8|$taRD; z4`*Cdz3PvBF}h4`*!hc#e#yO zX%4RRL-`0sVBfU11#~VFm#*32ZCzKUlzx`kTYG_~Um8L))H39cgLR8&n`kDLx{dCJNo+Et1aqdpZ=dMexh%tNWBWU0J+ky%Yx`-km{v z2dK?wsMug`^K}QuFezo47$XL>zH5$n>1H{7T``Dm=jalmYP%KqazbPi7~l-6*{FsN zEEDXKbxEH`X--2JeJSqCr;kg&(?o2gaK{V$pnKlPEukbAjE1YLxR5S0i&@J68_ETY z)zk7Q@7GR8!;l!0^j8=Q56)|LCp5@1f-_M!mOdz0djVC53E+gobu&OlQHG`1z+>=- zcE5uZ1+-VzOy(sKuv`sY*$ZuzQU=yTqVhlhtp*2Zkwt$$Ip-Ed{)qHCay!<{FD59Cr&Sd|I<1`vdI zxS19`&#Z1CTv${W8Eapdw9EC-qF~=^W&6(o$3b`>tP{`A%_S|+EtWb}%Kpvl2ap2Q za(O7m?7W+$I#ld|T1jnR?su}K(Ir-BZ>>?*CR^o)?8#s zlexNnUtTP1@xk#$u|XiHaG`7{Yw65@=jXMxkAUv7Jjb{}UNYASvVEM-PBHFLUY2Ll zcg172d^9?3Idlr5jI+;*8^sk2q_D@=w7kAYNEBG!5#FS`=ifjka?06YlR6>EI*eB7 zkc+Zj?8C@GMuK^E$^`eRCH0}mO%E_RZjNF{TZCvy=f5<0bMNNZQid}#~h0)0lt(wh}BfI1ES{*yGu^J#Q_ z_wMhj#DFp}?j;E`=~OUO6Ns2s0^ndVPf>O^S26oj6dMUu5r8;3*Tg1F1D@u%OeUoY zUY)x6z2_@825oVY5^FjXOR7wEB!`$DN>?0cAr?xj*>W*hMQL2g>rff6+IF$-sUIOk zMb`p`pcF5vok7^9roBX^V$GV{SyR6$Xd`j;f~$=>@7sr7wLemdwOihU1p>VLKQ{M}(Vxri$eJFcQ-Rwgsu_R67k; z{vxxP-H}!iBwKAnm=5$v1N@scDP$s=H49ht1;-yP(b4Bd;~24ukYxjN(_R z`A;P&PaeE%GB)Xjuw_M29=s=9zz{js`_+X?9y{q z3s0OjBrXjO6ZjN&n@1g6Z@SK}Ij3*h3*kt#13+!Anaixrz7wfz-u;L~`na2*^F_Dk#?OWfjT~C82f8y@v**@%J zz4JPKa5b34eJph@KI)#To~F03>n$3dep{j{4sn>1qzsxF# zSvJor$eB()cw>I@*LgbizmRh z5lF>Of+s$*-=_xk*h|+L=R`&rdnqQ5>v@Kc*W{ zRVQWJPKxa~k=;pL!x0x{q%X4*e@xX)?c4^6il5=oTO7Q(Z+35ivpi2~`g9L_@o9$m zIpeQ2birouME>}~_XS^cByWMn&|}?$X$#qv76MfOPmoBE6EFF-24ggf=ZLV6uZ>f0 zLuqZR!029T*=~iJfV#R`0fx3r=I$CSZyeA~(%Vxao(R+WW~4RUIC~Ve>9V|NG07xJ zImmf6O9x5g=28$6*oLUP&4VB9B&)$tI~o2Eyz=aq8tohxl4(g>_otNK?+?jMKFT4c9C zu(y0oc$FrDN0`8`Be+c$g7B+cnO4kA@8n$5Cjd{FX`pAX%*z5=-zg^S9FJr0RC!}; zfk!`hx2{pDSMJi1uC$`1+>R)-Y&@LbY z7t(2{y)r|8`8%}UCW84@0pZ+YcvoC#c$pF_Y{=|)q?&ne+{k4WwO;~A@rvDI{#MIf zC74w2onXx#Dt!{Urvmjvbcd<`ejnVJOwj=2uoura%e3VT`Ohb^3Z;trGW`KcS>F$&L>|wjGx5)tR zR8Zp(QrN*FQP-4l&%5`4fcv*q%H<*KG^fLj_~N>yan#Wc(H&^Q%=&xI94(hd^>yE4 zZ`A$|XJGX#L=O3)|Opg`Jml=Fn zD9TuF*s+rZkZ19S6%7EQz>15UT2A)_5&*nmLB9ZJ$L6j(d3yXEf6JVkCaEQ7VVZ2a6)5W zn>Ft4Sk&@IQ| zo+5TXJhjl+jcMs?PD9%z3p;V0=cV|LMiFbHbd5NmLnNAI5EMm#>}?X-#oD(ubPh}U zBD%w4;?z9F+$a0Ut}1;q)jRh-rf!y=F+BtPhT2EVv^qZE#x_6RCI8xbtngVOfr;am zk|@Yl#1UHnu|ov^H7V1N{0>TqD0_=*qKBO{-D0`V{;uGyGIBk9HP3Q1rb``j1-xlp zvdt@dr$hOSJ6t%m!5yZF&eg&-G$DQ`N2N@b>Qi=Q@Q#ac>@pK|4DLO1a+oCMo#lYK zW30JPBpU-+0kX9oqC)!Q^N*=)LgpI+E7Ff2d*3Yc|C$kM{M(@ZKS+A~pPBsMSCARX z+Ny}6Xx>3UiRGA`!olPZd5t3=`MHhCd}U-9(5A!!GmFk(l4=|0yO$#U-YbiZT{%r1 zH;o;5uBRnQ7wjFEU&mguU7IOX_%p~J5-^N)SL1K(Q*X?7XIs2H0JcC|#bN}Q0ilrk z&16C8q2y9w3&hAtH<6)~$?`En%D{CLAxHh!m1u{^T8cA4<^E?B9M_q0t~z4Y!3&@i zuh)8%&7r_ZNK~bC)kMyr`f4h=434fr7WNj4w%l_yRmM|v)sRp(;6sm|)^By|6qplW zpJ)WcRm0N>Z6jCLdSPn=JLp@?7rSJFZ{o zC$dMOrKYl4 z8bATGAXQIA3oI&t6MkpVKrHxE8X_arMq0&z>WQc2-D8>frp)`ERz{3hF`nK^JBNdqzd^lg+3rogXC?%2D3 z+9Zb8X=ZHQI1X6eT87ga5fP{6-KAve$z29Z9?c>YFgj6VyE{0dLhBT+wwqANpl1$+ z0jxB%xSi0G}49%w|

  • mUw1jHi6%DgEO=nGTKwHty(XxxAr(Q=vTz^fNm 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

    jd5-T7M$P zg(5j)2=H!UBi_zF2}3G-6}&!WhIePw4-hUoK8+hCkP5!-=AY(;6w=>HrG_UYO*#lS zOt_%{_=T!Z1T!|`@m`T9b91^~C4+o~nipNqaTpKAo*-MUTsVI=Vl`1_WGV2;gkjO^)e2OR3snbe(j!@BEDo0?q7Npw!4Cpb zIivlFzbWP3#^-m20XbSlQx9;29Dh7Qp8s@&zsBbQ#`{KA%8mv`CL-1*Hh@0wzbl*o zHU(KC|JoFEMq?Ml8uny{k28-L_^W=azP%lQ4ZFan%br z(1DZeIDFwx5GC!WStpzepMO4|zJC1R<-Xp_joWx#7cB-|jW(42q-fx4^|f{eFypAI zJ{7fBD3R{uBG`svOmhpi!mC1hfTm9rBQ5WqqCt5Jgn`!PXv`wFGMFdjWU4)b7kk`+ zR{rFusL)$WliG(%dePRm8@GpL^c*H>(c0CN9c>}Gnt*kpTNQ;R`EBTWKt#!L3zVp@ zHtRON;97RTMfFM1uLOV9ta!l)0eaJ-oqG0?_+9>4sb;s$*-Ca)cJ{6mSqxf=v3J1* ztT|!+ieNY%Z@!R)=D-@IJrGYFIzQCyr_9gundb&K|K{mQk1=}_Vd6Wg+R5IXfe3e1*e{N;9QCjYBRm5JJQR~5RuI^ zXyYC3*Nv_oQBV9;Q``F^9RARZVfX7IJJAUnIGf1){w5YS0hp!$_SRT<{@0{Qr}FQ0 zCqF}VQBw{G-3zxnM{FahMP@!DBF@{UE5ArT z9jBMv6}5!USh8R^vIwk3AH`BcmqW7A45@e3ES3{4x@})OC{%vd#e~(Jf)J#D7M}+v zcM%yk0k?%_FuA8dZ2subzqipmUW^wxbCg5l8iFV0%4UxwC+wO%Y)G{bS?W*$+kX*0 zIm3h{JJY0h9cKT~p3~W%&8D!uCi@B6E3xs2yXffzuTLBIw)sxywFo-aWP1siuo+FQ zdI)~&z!g!7?m!syrV}~d;3BISgZT(u_TGm9x5AEc3psdy_Dwz8pa?_h0rm18qLy#P zNm$NA1QVA&_}z>Z_mS(t)k}=sL8TwKUtY=88<&j0p&~n^+B}PQXJHGXOSJQJ5+4fZ zTDgLCSoUHlFoK01R42$r9|0xwo8B!8HHLeb2}+ZpK5!x|6;vCJAANd4d_ZUY zk6U~6lqt>>dV67HiEbxKiwAA9QTj~;he)q*_1F`E1YKCqL1&$bTUVLe!x%#ODr(wU zFV<5^9xGc-8s+b743PIGJ@eZZIHcpGqvD5>V)}UE82$oQye_B=f|U-~{tDWJqw@;# zNs^mlDR2Dw-eCbUR(Bg-`^&v%#=4q#@jhO`>jIkc1hVqf-)obDB-&63QkCu$Pw4Kx zCA(s%%|?J}53*Dw5xsJjK$hB1oMDMFrjhbUIWX;=2Ky9FmkBChBxsg%`-Q#r>S4~l zkd)4C08MO@7H>*2+3v|wUK(Z)xmRAignov#;_b3ULEIXb&Csr^R_?g27bCx>t#ny9h($r zfzo-_PAC1+iIL7!4E1_w!<81q5S6%`nkEps;&&2cz+F=f z+|}mfNdpUWG$NM zTyiT!k}TJktvl4?#Q?UCn}VK*w;E&B0k9|A@0w^Cfy2k%94G7}8H04?99$2i=qRHT z4zfvt7HA47m*z|8ne;Kb4<0XpOVpi$_V9=3I51nKWt@F`I&f;&L`42Qo!*7k5%QWH z&H$`Sa8mL|(^Q9;R{vS_5=X0nZPmU!K{Ie_C2Aj$_lYwG@Slsqq~#nK-RJ$t3{nV8 zi4LjD7+$&Vgp0!ke72}ae7{3>2z-4JKLE<3|A_Mcd43DfDDhAH{#T@yt$ZqrB!JGN zWZpszGZ+Ehp-0)Mvf`+eUq-BqBraf7FZ?d!CZ@f7k&#V9&=nkOcn5(l}j&O zIa%3e8IS2!XX<%s!ut!KukR0deV|yED8ky%weW?HmGWDkF1Bl8kWHD>FrhgU(o`s% zFb`c|*`mSVA~7!*&`AhHw(XZZ=ztlQc;rB>Xj2u%!8>PBu&hW`MeuR9yxMdP^|4@y zth&gAE<#i;ScS1CV;PE0Voo_7*J>fhAFT_pCQ=-OF|}`P1g;zQ!mC9)Nds+kokkOB zUr|xEl|#=`n7$R|8-mJ=k}frOuiRMPuz48{UT0k)^z*Z-6;tkLp-iXh=+>^RUkf6* zud@sWTnSn%`h4Aiwn%X&XDxJze;B8c5>KZJP$KbY7)#=fGH<8Nd z@4%IEy2^{WHVnpN?>)^o#|b50e(aZ{qVF_sZ1h5`I69-zKDthpjYj(ATV6T@Rl$oe zJa)g~nh7Q-5${ibc6H~Z*dQ)N67pe|^n>usZ}tCzUiyr!!H^|}-EO%>4vb7Mu8YsW z5(D&Zl;otaf(&8m5H3ojNoJ3sX1=%p^F3sfFI@Kx#D_+ZX<>)v&PuRSo%9{!+KBkZ z;v6fXHip3&)Q7Agbd)iMzTvifGMf~+4is*@v6Rr(u((n-^bD3hWuUrQGBHll#QOxs zkW56@IbbhMkr0Y|18L&rgAzAZG)GqW{Lpth?g$1#>DjEI{ojL&SN2$e*#O|L{1Nzn z$aDW4@Rb2O`TiE%F#HAoCS@%^Ul8)ol*P~?d@#^U=!mowK+7CTCzo8Ix?jtCq%)>0G&ATC3u8ChRAj<~kk4u+@gwt%R2Bv6m&O$dX$NUir} zkm+sohkB@mM9;_E9dit7_HRWO_88>}p<6G*d=Sc(ErNCD(CWWTC6|qaF3-L&den^Y zSEz&*Y-C#bekSNd^$awqBL=x{SSgDr>#O9=hD{YredXd#2;bzDCL_kEn#BL~En|95 zJ&torX?c{;VQMJQ-{(1ipXjUd(d+uPhrCmBrOQsmK>`+Q78^HdPf+OPeA_E4JjgH{ z(M|{caT`9ccF4CaYMvT*74RG-URdPLh(4d=aPgy!%O(ku^c=`(dil$kK6!R7BEcv* zP!shxh!R+%;k7H@%Q}>D$q?O4EQp$AB}Q075GQbKN*j$u;F=5sj5bz{ACH=}*@vmZ z95*@yvXxMej>}Qn*V3fNQP_A1ZAB!^DOdrgpX*^QwFJ*Ya{@eIM5xv2XY2?fML?ub zFZKcgKBMC9Fr3TT^^ef6A$b*442y(L9lDmjz`~R&r&AtAuuBw=Ta=*HFekC(x2JQT zZ(?`Gj6ZLB3fPFRNPHyoHJVkPc$SLQew(B}At0I(4?^`y@77V=w zj2;V*CmPK2LZxo?vinFe-D#M#X*0qS-+$wSK?3EUr92)D*GT&bs`?bz6}viA;1z1^ z{}ny&Rec;9Ee@nHDUYE&ls+nHs3Km5Qy@3}XT-c&5mH%FC}WdXyf!MccD~7Sz_=kO znoBFS=vr?>Yw-BKUx;z#4_i<*iT0Aw`yEc(?UE9&$SciRcGA0B){7aYXbDMuc_w{j z=pV1YGkF$HnP_PM>okk&|Rw$C-tS98};6K<$FY1j^@C)TPbbp?A2uDMxm9Egi@RZhz` zNu%&A&~*rzjfZW#YF$s}g!b5Q!^(kuwnVaGT9nyun5EP-aL+lVZ44URXB8^g{+d9b zqpaCwIZwq%9vLB)(pzu|X{QA`_FcxPugN9Ew8snWW9R!Qhd5WRrc2dJ~?(SRW?4l&f)n#R{I0Q1W zBA&lBF-{!ju#P!)bgETtrJu%Cy&G^jGGjcC z%De%mRUxS&D%MtY$Z6KNW|fb1JefX<%cnF)ZyYw%e1&aY?Sw3m!3KCnmdA+tZngD8Xe2R; z_+>FqcJ3;~xZGtS**i*SuHi6qwS*&RN_@TxF}$qN2O)lH3~|wEdRl}ipmlTL)#vH& z=`Vo;Y+0}Fu;(UGte)FTf?uHC9p5&FP_&D~tQ>?t*6e}X4xzWinFH#wn`cI?LSDdb z@q_ph6oTSI?oYqftfV11aykI|zJG-Nzwu!DuOi03CH=pEU#;@H71UP|I-kHFSwvT* zNSq=Kau=(*%ztWIS>Kwbf7r??WuDm}AxXe5`2`3&{Ti?U7yEG*RVyOMM4B|SbNu4= zZ1Y_Aw+T}ZqOS0#{>DJw_2Z$aKz37&f{PVf?8MasnSwjj6|4=>#_F zY%XdvCT?5F@~KQ#OS%d3iFh*;Kj}Kb(&qEota^V@oN{6tzd@Z8o|6sG;5f`M)Xs!` z^&&Mew}?!>1!uC!{mS~q*|*1LYi>M7p}w`WmMPb4lF<(-DiP5$dR6*UXmEgYI1c@W zp{v5jl3)&z@po!>%1oJ>I5A=)RGULJZN{f;7OnuE95j_1_z^c(6Dzs#r!RladVPr??~*MHO;|2o;#Ri`?w z;q=V{S=^}5+A_Ub%WIwIQU<*BCgOcWb9YIdB^^cg(3sw!mB+`L98<=3X zKoT%#`<~xlDB7SSCBq>wT_Y~YGoE0nuOO?Dgo;`mZjz9*7QhnSF23S@}@zVv&* z13Tb!^$2i{2LIRr`aetK|IYt7(aAZQNjllt{tS16}f_N@h~QjQ$DIk2v+OVx#E6dc~23zyelC{A%g!Pb-H)~nJ%EY$sjjhV1X7~IA275xroAHGA+@hTQwt7W3n*OINH`b3e!J(9ZlX~z+ z`{|J7hAB~S$gJ8rGvH^BM^bFW*5^_>eET-aQG9;Jj= zZU4_FI;jcet-P?nXU52MIk_JaY=FaW%w}wY28>4&PHg}+0#C_F3=&0}PR|4+e5zQz z7|}$lGq9*xT-@AjX$2CdRaxL-XH~sW(@bmA^a^b2{qD5IXh%vX+vVNd{ge4}qitN{ z9pEE&xp)0|(Uu!l@=W^K;v<=$Gf6Jap;IeMlxpVCxdF7jqObG!4joa&8=`6lQt82U zihi!XjzqW7J?&_>&*f3mb5GvUe267L-T_l+V@1JJXcpcMX?$a;-@Ppucn0v0BvVJX z4`zQjSm+S={4dhpDms#2$r3CvGcz+YtHfAhW@cuVO3cj6SYl>oNHMciVrG^`@4epb zo!;)AIWu|u_=$*&k4y`9w=i?N_vTWTl)gwsKLuI9Qbbr#>ZwfT{{3@sLzQkH4Xgd< z&V^gA=C0J`GYXKq_~L}UjaZ^7J9@3_u|e7JlL56m?@or>PhmgP#Z&Ew;p9FC&~ogo zeWc|=K5Lx|&|6A(`HTSYYqaVeeFH>Dr`DZ6GXTC8zB)(iF7Og}IK;Oc2M(d{ol5xM zzg_G0x!K&sjS1p~huiJMI{*OTj87#D;lf{Z7e3c1el)xsyDP;0S#npvNcQqZJi5>QGyl#oJ9oh&93Xe{ z-UygJ?o{44GkJ$#z6%vP5+B;=oj!Rt%3eNx?*#mueF4k%tGJ8g?jdFIRh?w|Y=eA& ziS{eMsbT$O`-QfRWH-&)I6P-j@+mzXa}l=KJiOMjR8hV9D_Z0zK88v{F)6W}l z`VA;DRJ4~Z;EPY6P*&!5piAr_S`9cUmPWa_DFHN3-7K809ID=nq>yJCRaqI82fa6Q zf27+$G3ItRvMn{Yk)@bV4=P>MEoqWzw6o)loG%Stx>M_PSe|;HXdgIFq31iA=d2sd zSDnEKY8B1^L`*YHQbZ3n&zb9D`>W5z#*J4fJew|zX40cQVux$#aw)2Wmr1a#W-n9%h$G3#1+HdHjZ#6C;-;w(01zV))EKwbn87H zY|qM&9Fa}aw+<4O7V^lL;JU{=0at=D4hZtsos`!!f9H0zLfE1&3Mf6Z;UoX+_388L zK(Kc}dsF!@=qGl%tUV6-EZ@CUocJ0`_+;Da_Cxm6(ICs}b_rnVs;~U{5#Y|WOb(;T_;zB25|he*C90;4~)M;+;v4lfgzxwGraCtIpR3;Qq( zm2n=4o>CQeo~&c&Z_bw8Tp2H?Ek^1Xr98Q6)?}SC&CJaAQt`n}URmf1%7MUCb$NGt z(#ubKK4^y>seq{@IM3iU5hx=J2K+)CO-elDL(;vPUEY~>ixA)Tj_n4+_kr<>7xM~( zVKMT2+gv}{!hdpYX{qVL<5Nhs{>Tn%VZnf>wkYL7J^4el+D%s1#8NybU=*3%C-u!N zV10?NWYb|*Ydm;pbJMJ@8-uqa#ilWA^VPkvmrf~_>7+8iWY91t0f1SmD1(c9ma z{w;SV`dd!PfByGTIasMDM2tXJU!h*W{VoFT`q~V2mTXARC#|90usu*1jdx*EvY%n#l77F3k#Qb zo_}O*ZN@)F`@37oRJizhIn|SG)sy;Gci?J~X<2(Y@tU}uTA1a#&$H>s*Fq<4_8is3 z*tjG%?6G9#c>18Lywb{0&+j@{-ZZ>C*9}#ik@@oO6x`qhgq?H=4BoHGBGpi~)^J7u z!a)o_SqB|s3^ZPtkV7@(*UoFJ{9V`BS?7bnJTNx;&Tip@5JI3`W^D1gR{oej6cMjvi|iw!$2_2?yc`9XW-LaogE0Ildjkm-ZefXZ zAy#;>H43F$fJ~LgmzJ7ediS8Cqx6_Xagmv3@IUai_~>ljjHXkvesxV1)w;*Y8DP#0 zX`Uec-Me+5TY8g;%%bFp#G<4hMg~Ul(9Db0@OZ=Q;bHkl+v8B1+%BhK4aNsQ)z2r- zPLDoRhJ!(3H2HPM)@_EZe=^VNggcO5QqAgJJn(DKkNudu9qj}_0?(NKWjKR!PddMF zXsjhuN!QG?8dInO2f7w-9#hEFBsQjQbmNqZ0ryGsHI?^v0;Ioirnt~KkH+rD@l5b8 z7wuZzo0tv-}J)Z1aF@Y{{ zbpib;TGQ6CKAi3thRJQX1qyD|P^3-ux8d{aixiw*dQFd@-8@eS!ye9WOmKKhfNb-i zC3ASQ`xMnubehVkDFf&D?R+Yik?-SLq26V7nw2&rcDH}G;Nhx`FMw=RpvH% zC`Oo$karTzQ7$)Z?*v9Dt`XTlGl@`YhSI|<9uvKZ3#QhHKX5q|xN_Igs4*18%2gnt zZP9eobQgh#L<85+x6vstMw8WKiixXir=5)p6t2wn(C7mkOB}MmuAO58mGiJ}yO#AL zUEWd~)v1EbEKe=F)mcsn#_WqP`AvOJKQ~|2#gzCH1T*Rw$`oRs0>zRJd z;>=kMKSSMAM%G-_C^Rcd)8;P6H;*PJ9nKzM?_l+sYQ#v(*p9_sd0i9uy?;*iwdzDZ z1<1E_A*VgAh2^6=8J5_8hF(#7C@U5qBrQMGF4RM1si$Cn*WbPZ;Kv;DPSM|M5jFIu^5rt9Za z*~GRD4j2-Te~sZ^AK2>p>Q^e^P5ao0=v80o+Pe&VzGYgHa5c`_3oqY5!P?42;`^!S zu_7SHS;y15@u4yqV=+0~JTxbBql5J@ZNoku9RI4I`z)MBCtJ(5)y>u*gJjP7lvarb zrV!1y+5*`+8A*`2DE4F`(_Bee)Q$p7q`n-JAoSHasPT;}A4K;tG{`l!v%ssQEF;9= zpT{YCZ*fKqs`Q3B_58B`tU12v7MgZ}cg^4YB0oZHEYxnz{q$e0<5)8kmhom>Lsyo) z499p<;JS(}s-l!$&iFEfJ~3fZ3KsuGe@R8j2HL1`;%PfaSX%BE)8q|Pv2Z(Ni&WV$ z&Z|{$+j{#GZ3(Q3&aL+1YdG%yUg9$+OvuV7msU}puZ=!)mF9sLjBnRxY~H**;Sq6O z<@s*R24yRkSm+HKJL0j)882tK&TKx^Yy|-59*Y;w3D_rvKlBNX zi_h!EluPY*V;m2h9l@5S=z-g)nnS5DV`ck@;Vh@9b1l~tF*TjiIF94+Be&5qC$=|G zRpxOd`oIDDfV}8|Aob}t-p+%2p>-t~*OjO}z1z5sr3p&o{1HJiT>(~DQ4nM--jrTT0MBti%mQcq~UGnCpH1MWXxyQNyvqh35_ zpbGuuM1D%-mqd)8f}mF45tQt~A@-KR*y}K2hrM=`6-B;^f{2^Tu(}6@h=AxQx96fS zTFmMzpA~$*S;Q=I!1-XSS|BW()ay5T_4T$Rq6aMi>pX})Ks+j0=Z#sD%fxxr( zWEX#PLgqmNEYG+C`>dbLmBiS*A_M98MfpDl!|1sUbQZwg<0Amr>IQf-O+b&^5(+_w z65QD(^H?!DV0F!KX58#q<+K#+S-{|i1Bw~utBgV@#~o=HKdKDw`M3i#43{m&Nm%eY z0FCFCie9J-lgY7MG(EA&C205~+bH)%Cc!v;Lk#Ic8U`9en}3xuVy!Ex%c5Y<3Q&OF z6++D$W9y+2K$r@u+{w#8W6tG{dKasXe~MFS86-F-;r&?dIX6|2mV6z`&n>A>rWuqW1s7pHr#7qlu3;+%UQzhx8N5xEFFSHUIldwt*j;i znY|!-aP~;x*QSZeNMcl5zfC`PqFuWgEx{E_PJ+*GwCYMrd^9qCssFc(DLJP!my$-V zX3K{qe=u#9Q(CSnp;=VwPp)1(iq~ej~{UgiQz$Et%k_~d*It@Xw zp>$Vqe0Tsr0xZYnQ=+&NIG)-AjAZe4j+pIs4nc_y{Z|DH+7u)Lw3_SeU#;UJ%G>)q zdkmTKikR2^Y5X{Jju7#uRHLxf-!4Bq$Ue3U&%hC$mTC%fLdsb>MTDrvA&6M z8E9t2E%-jb>3+IrOZAA-{D_G>L2C@ySr@1&DE5ED^@O9tWBygVyc-wC+}#Fd?H0v= zJNSH9xowcrnjaAnwQuiGCxyyTK|A~LwJki@!no`_M{xZF-etjEZVpL``@<}|61U+O zSIO9Y#(G462M3|?uwa?({{H;mo`^2=a40~(=$H)wnepiqYBf-?sM2c1~oKRkZ zHAx(8D*FZLWrye$?XP3{!*PX?G<|kd|G-|A4m3MF*ePEIMDazc9RiUn%G;Acampu2 zh<-cV+83+98o_asZPc-4PIzU40K8b7aUar`F9P=&vn%NR$;!A}E&e5j=&4Iw&H;&U zD)0mgUvT=?{1r$}xB%&y-@JVpoKEwnYC895BAT*~v3+rXB@*0@19XKi_Amuy8MrxX zS$Bni7N8iq0(-Gu)=xPvTXIB&8CI~gXFiwE=o_FDws{QMZ%Wbn1x5$5<{kVQp$g^P z7VsIO`tvw`FoOhgRt<^xOW+Tz=C4A(f<*#u*b={dG=*J4L37Kx<=H(Za|1`dQ~Q5w zhyOhI?*G-mt4(V=gL_&|@L1HnBL(o5inOMpN{IC>OpHx2*dz%T#(1=`(n+rN#z(b1 zaFXLaZt43z=VwGG3j07B3#tix>EiU(fVi8gQG2j&CVp8;nA4n%&on8M?<`lef2#cG z{>U}%vV=-l{6VIV1t%U^DAq{2#-NE!hw@$xrNj=gBxn(U_0ISkC>TO$5lP+=cTxdN zrBratld=uil6}5ol=W)1*!~Rdd;%C!zOiAeYUz@K&S^a^CHT|-XObSd#) zr(OQ;-I06jpy~7wM?UrkoJkHNv(zEpJbmT_e{;knO&g^MtzZ*2fvQwzs9P`LTkF&L zCw&{o2|rNb^A-u<2|{XT=zi!#B$uFj(a}v#{Tc%hX}Q9$*E`kG@!&L{Ya31gJ_tJ! zKm`pX`%RijH?~uPNMcAq2*)<5b$;gwVIT}{6Y`+liR$ACeVI^0F(^r{sEmj%X^tU) zc^T`l?nwEbO@WdRZGv~S@(AEe_07L8GM5=#-$#_0!sQsi+t!<(V)C(6@UU(^=<_8J zmEi|ffGgvG7KaFDE5!An-^vMxqzwt1Qy~;9aYV&vZqs)pzv)(Frw*bo^!3DfbW;meQ09}yS57TOb!z;2>7fbFqfdWS5K{sN0u{g>u z_{|+w&g|o84dyscXE+c4*`TpyCns8dP0(mDs#T=9v@!L_8ghpbZszTwyR2%sa5jm_ zrlvg*Hg@mT~Pw%tIOC=ZN@{ng*862^3w|@n)0X z!KOVKR~)4`#+h-kL5Vp2Y6FCixu`0pF41ip@uD+P9qNQLC7$Uf7E$ZMs?qxIrYNE?6wbGexgf9o zZ8bzm)hg4iiMmia5!@gV-Sy6aYN_YFdDNVf$Dqt#EJUe+L>$^{k z+i8yYL$@x*47rEXlFo%$5i?%VogL}oyM+6MNHZClQ!yvu`xh4`(*_&k9O;ysPjhf z#)?sT8m3H;qcx2->iYHMq$i~xPFF#AJjdwj_q-D{R`K-V>k>zJGgXMAV zhdTjC*>QQ)c}hzObyJZ>IbIP=ZNn)* z;{j0zvxsL`)hxyuD&M?pErz{`gmFsXQTysyO~w9QQe<;6tldh!L@yH72e1C*L3tpz z1nZsa9G*kqt*bG|t|01KL8S6tn_$?1X4dg5<=th^y{_ek8La zOMSEW5su)rhZA|1U)_h)oI!~B-l#=0Jg5~xwI+W^A``ta} zys{856}w~I6wQMB6`{KDhO z(7xrDb%&LG=Fht3{ObuU>s}8*@ywf5`{|RlyEYU28$jMlcH!r#Vg zWP4xJ&r;LJQX{;x-N({1l5z`SO=UOp%XhxmI=j$1n>#K%wS-fbTD(r*7R@Jr3uJ~}w(>8Ix?P!K!@$;|tw9n+P`P4tmBfM+`MX?ij?oH;NqVW@v zrv;gPzhnC%?FJ&RdQq={xvz*?@YSF*#3ROH0uu4;WL3>HZVn}s1^1?QSuvYt_>=J> zck4_sDbAM1Vk+tt-z@=_eU;ulDN}_wT(&+&e_FZ~b{l6!b4R}f4n9ZG&mZII%$b^I zrnTJvc-j?;Cq1xvhUw*p1`>Hb+8S8@ z$K9|l^*23SHMB4I^UGdSLQvo_WI_Z99bJutVR9V_R(bq#-h}fMRKo=WEPaF3{0`~4 zK})MbnZ>;hOP?O3uK2Q;wIZ$J@4D zC)5t-=YcrWoUbvX9xRqxgaew~n*-eP&~T`U_h78qwF1`k>kTgdVd>=E-bF~u3Y?6>fWV%l3$l-z{-SgaK7=yO!mG_-K;oe={+!{2T~=N`(fZqj{|pQqO* zSb8`6Kf0;+(XjOH3i0)x_7S^@@HvL|Gxu)j3_jNPq9eAG3IFV$YKuurmR-c2G~`R_ z0ua9 znk7ooEhfv)TSPPKd_cLlT5CsZ734S4@#GIPds0^y3wH%Ae5beAtQ*JVD;yONJA;d^ zvNNYk&g{2n(-nzTy49tWSnm0n6o`stNE_9M<)cnnH0!$@wDz7%gP5Qmw5}-)U|Q=1 zQ$?69txW~88*X0=#aTCgR_Q7TL$PsTVPj{OXuh4$X>EkqH_U_t!V?aAtW_HiBcDE; zA-metGQh9-SZT1Tu}eq&d1o)#t)CBOIa^PHlM87kJ>Q&+49Y}+_vvtOX?-S1Cr z*B-0-<80Q4*80@Kw*ynbx8#*Ox!${S24-tZNgbxn3t>eiI(r9+s$77&pp zIEczjTD3h}&+u>7UjF47$qf<`O1=Skw1#36lx2rd^_0zB%Feb;r0FADp<58HzOgp> zTWwkc>L-#bH`JKZ+FCb(o9ryosyY**X7VoIN9$#I;cLyX=PN=t-b&?OPXW%NhxMgr30s56GZztBB z4Q33IojZB1CSs|4N3QiOY>+m%vYh>$>t{~nQhtpqkMChg?JdU5^Phkg(bG?Ie7}*O z#_vi(SM1qLX8p@b3Bt8l86>I{swv9y$`jqZ+lrl|iFe^5BH24Hn*`S0y`gp|?Pmsj z{D2fRJg()7glV{KQrcumIw!#{Y&K7A(c0PKgSW=g!$r`aDl|Hm<--b4;-4MF`ATf) z^K&O5&CTrWs;SRGtbA9lS{zL4>6T7!(Bru^fGVHVLk>j=L}dKc2)7ow86}Ty_~wEu zIjeMEI;`ackzJ@5>>h*8 z9c#?Af1)E6bvBx7`~_1eXbd5iUzry({C!9u)~W>n&NNcgOR`EC1I zD(TSf-%04<%#)qjtghNFjQZ>r6jYv!gIDY-DO@exz)}mWEt6+m!6EFw@hYgv7z_hF z0eI3&S-=r#id*{v=mnwd3v)RFC25cL*jKyH=74c8t{kSl1WP*3Z16047=RHfTED2w zA4(0;lZ0&0+&bU>-GZ>WO)mODDFpF(#~OpS>3Z);1CLUZwqAoal96wER@-$Cg0B@x zIvzWuSjhJ7)rKf$$ELGAVsDT+#rZSJzm0|#`f$l4bTnn{!h#I%ld@bR*^v4ikO5+=Lz-(UerfE ztc3E|xFKqDrlZ_UTj+{(U|?tUo5J*q*tib)nl_jZXj;G5iQ>FNPuUi36kcH)Pdvkz zm2fmrCsbPK|&EoZCNR;UMa0#ls7%GKZzuGpR!v#P8W-WSv$mB`^9W2=xZ)@efh z>R_91j_T-~u*0STEiKcKY+?!m*7iGma|(nIu`kTrz{RxC?d$tOV1jT+TUfXOg-C;R zIwwu?C1>dONTX<;m)L^RHR|A6j+&L6glrNkcME4OOv20`Ci}$*ptmW8l=@RA#38$6EBKNlu8WMxc!G*=;_`K@Fa*3cN{ zX5)Fb{%iBUc0B)R)@mikW#lL2JxD%ZF+nCSO)w)fn>M_kAMX}U@7SjfWZdq-0{@!ZQA;;;Ju4@*OfT@1TUZUo>uCQs@Csm~Ke|Q0 za_uf?-`Z`iDunvgo;lDd-{h>+s1i+uQy%`|Ybo!dnmPMgk49KQ)b%OcM(Js)$6mm} z85ee1blY}q<8$;@=^cJ=*6~U+x(&q{cVvv~|!ha`zTQ z`boUbXM?;17w$+ED(D)ER9`moVl{yT_*Su^zuL#LHz(mGV?d3hrp0Qy{-t%CxAYx~;%&rm~!h6u9gip_gi_72G-=yTZ6aFJUOeLH{!frQK~m{$gTQAm(mD zMCR5aq42XFj~AswIg5r_h2x+5NqN- zcF7#yMz8ia_$T>Dbq&I*@4O`VuS_!Z>FrTiHu{OE3G$DCTkNy!P@ZX*KDqdMG0h4G zqa5@~!e~q#{r(AVtS^)%b^NaNBm8d__ zUnUKle;jK6hazQM^KZeua1kU*%7Rg_^6+sK1S>Bs_LVd9iyu>ZH^9h*{J&#`CfA@W zGgCwKr91ZbSX#@4oV?$U_sNB8*iApFV$``*1CG2 z!hBF&R{^9DKqr&+*FjYQM{h4a&ZI1#G=I(y|JBC{g93s3YbZz46-f(xaJ_ zwAzXKwRLPn3)6`jcl~O(An*M=MVcZAKZj7AKShH%&c&}XehwBVhF{?UsMDet0i2+3uFPYn7@SBGmeH9{xM005hfRuwhMcp(q zy)og{WUhw?UIfiVW#yIr zzNWoMeu(zc>zzz^i8wb4s8=s&5)s+qk==(_?Tt=~Nem*aqvjM&7_KM~J2$C63r{u3 z&aSQC6j#qahXo{xS?UZH8}~#hHR4?1ic+Fvlzsq9{foIULfKFJ?0r&(?id!a%lI;#g%_5${~b_;q( z+VZ8~RZLBl2s97jN3D%63Jx{3&@!eU0vnn2Hsf23*JWe>$Fn1BQ zJgzY=#}xJV4-dZ+Pej>*`T7Ls1GBWv#cZUe>}!eI)nKIv=lJ>fmYBE{x8Pln%!3Nb z@b1;<>?a_p6zY=nrGYnFC3>_T(|tPA6PPS`KDEb)ShY6cb+;8797&er4( zIB~U&-hKQ=t}a_Yf}^EB9?&7|2?`WEht@yltZbelG#)br7j<2gabzEwSGZL8qW4=9 zhB1fd(|VaeCM>jvEWiDMnbjj!odfL8e&9*SM(HnbqU9en;v$CM(P^38uXWQ_(q!0{1 z=voBE__~7MgI&-=y;2%vEY}SC(n_p|cis zI&{-2D}DXKm8(Y>%s};kCOhL;k{kk?^W*+kGLmNr^pJhTowM=Sj%3WaVpfSb+Go^@ zlmYb@j$!b2{Iko09O=)DE`)u%Y}Ro{652n6!!F0mjot&vKI=e?79QBs@(DtCNmQ>n z#ls}O%OQ8TJ`)f{L8kXq z=I=EWNqzjTV;f>CZN0RtLls@u#{&E&uy{*f;^9rpHGdNYImBW?2cmwrhG2{YHf>Tx zcjCmr(-&hP!O3qfpcSJs2dP8OS3-J_Mzx;O9j5W@{GHeyXt$nIdqdjE_0L|a;;*7`gl}5PBnN=2QpE2@-A4n!ITuS0O9M;8wx9P0 zxIX$5Yt(KA>OMBBcB-bPFfi6jMlvzQP*4OFT1dci)`4bUX8^`YzzLUF@Cy*e72f)a z;UUhpQ#3P-`k3Ryu%<<1W*_w*)wWRrv(Eml`iBeZX)|`zLG&(WwK!^ZdOvL^DecOJ z1R0({uxaB*aFi79Sazd6s|mFkhRw*V80#|-4Cs54{KBt3({{IE)a_UnqXP76l_9A1?fviLH45QcfyX@uZl4?Y|DI^ z6htS>wY^Q*MBgxI4ligrsm~)fUQ8`aXi|MTAV|6+G`rl{ymRhQy|?WDE1hy)lmC%K zb&_wWIRa~Y+#0TdC%G}_fa6wFa>f~Y$4$RefJ#DrN!|L@(p9>%+cTOvz9A^5;3gkD zuIS-w&2lMY?`8AGN;;v~gMyw;@9}kzVMdfy?Xh^sDeB-Nl8Q2G=2=Y;mVs3nTG*Y& z??}w^3^nPj?P56r`cZc<4ztm6@b}p@y$Ah(ji}TTv6y1+T1=Pr&x%#LiE9+ zSQO1Z$@DuPF|}VZi#TmTb{|$l`rSTAFZz1STDHK*<^Db5Q|QbVhI>_nBJ-Fuf4abG z$3Lq8l23SPPPcgUEbPi)KYwBbu{^YWO(211O7Abf%+l?vJG)xw>j}r!4f<95K&RLG zb%{JfuxhFUnRbm~+>+oNa@ru2lw6?;>YCg?&=}V6&l0)=P*ntm_L-Nkpkqzj86oa}f!Fxh%@q!xGwy#Ie*yRtHM%<9IkJteUmK3>b4PZceKr(ze&~!(|FWlOvcP~I+>QghnRyp;F-Z=x6L-r2b z$pqaderE4;Grw^wf8qyI@|CzI!FXSR!$_>k@z0gN(m4G{+A#zDN%0KU z#{lIkD(x%Nbp+`ve7&yej_)fTw5@c70P08jj576+?&(MLOw+dw`6+vi5P+e5Eyp3U zt4IIbg7ettr+rOa{;3BF?(Pt!P!r&p?4DaWK6Kcs&KBsYH#ce8=&%9|z9(Xtk3Aa2^cVFu^Gr2czG$46} z#NsN+o_!0S#?|mM9{Za5Lwv6;tEn?lP=+{pD!p7itIxx64)>CP5v3W`u9?tuChA}= zU4-{+)8Yo^I(&aL&vPY(*NrkK5qgrnr79b(gIdq?N6Yd=xH7M^bL-EX*{M%bfU=!* z5pvrFEc^Fv>R?lsIVTq$OJW!KxVSF+K*h!`D0VygA^>MPQYzJ~8?5fv#^g|>S-cZF zJLjOj5|!?Y73()HVmwtAjyz-(7{vSOrP%dtf0gQKxW( zk;CZ^o<wJ}grb|eb6e|KdWaeb2ip{e_fQMQc>xR(mX?p$I>LA?|9hg&V0}Rg<)uj`I^)ff4 zKG%RqC|5*CP#sWy;GcBpZ>jTQC7NFdM zL3ycpvAuHAkMayswW+~6);*zk`VbZ!y9S|UX2|y_&ldDzT|fbxeYydH0Yt8G{_?J< zl^OEe@m~0*wT0ed0PeVFQp_wRb^-(*V93;3(%@AE1RPULdkTAa`uyKkX=!d)*6B8~ zW;+aDSxSq|n+)@R0$z-Vi(wD`loS}2l(qI3R66@}x+t_z5=zwP2f@lDfrL

  • Sc9 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%0DvdGn!V5qLvmp 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 diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index 5349d331..b37c4510 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -125,7 +125,7 @@ public static WaitForStartResult waitForStart() { System.setErr(ORIG_STDERR); } return new WaitForStartResult(INVOKE_ID, HANDLER, "event", AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, - AWS_SESSION_TOKEN, true); + AWS_SESSION_TOKEN, true, false); } public static InvokeRequest waitForInvoke() { @@ -199,7 +199,7 @@ public static void reportDone(final String invokeid, final byte[] result, final } conn.setRequestProperty("Docker-Lambda-Log-Result", Base64.getEncoder().encodeToString(logs)); } - + if (!initEndSent) { conn.setRequestProperty("Docker-Lambda-Invoke-Wait", Long.toString(receivedInvokeAt)); conn.setRequestProperty("Docker-Lambda-Init-End", Long.toString(initEnd)); @@ -368,14 +368,16 @@ public static class WaitForStartResult { public final String mode; public final AWSCredentials credentials; public final boolean suppressInit; + public final boolean throttled; public WaitForStartResult(final String invokeid, final String handler, final String mode, final String awskey, - final String awssecret, final String awssession, final boolean suppressInit) { + final String awssecret, final String awssession, final boolean suppressInit, boolean throttled) { this.invokeid = invokeid; this.handler = handler; this.mode = mode; this.credentials = new AWSCredentials(awskey, awssecret, awssession); this.suppressInit = suppressInit; + this.throttled = throttled; } } } From ff1c6bb244e30aed07e9896b0faa16567c88777d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 16:03:45 -0500 Subject: [PATCH 079/234] Update python2.7/python3.6 to add the throttled flag --- python2.7/run/runtime_mock.py | 2 ++ python3.6/run/runtime_mock.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index b2aeccf3..21e65420 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -48,6 +48,7 @@ INVOKEID = str(uuid.uuid4()) INVOKE_MODE = 'event' # Either 'http' or 'event' SUPPRESS_INIT = True # Forces calling _get_handlers_delayed() +THROTTLED = False DATA_SOCK = -1 CONTEXT_OBJS = { 'clientcontext': None, @@ -144,6 +145,7 @@ def receive_start(): INVOKE_MODE, HANDLER, SUPPRESS_INIT, + THROTTLED, CREDENTIALS ) diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index b2aeccf3..21e65420 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -48,6 +48,7 @@ INVOKEID = str(uuid.uuid4()) INVOKE_MODE = 'event' # Either 'http' or 'event' SUPPRESS_INIT = True # Forces calling _get_handlers_delayed() +THROTTLED = False DATA_SOCK = -1 CONTEXT_OBJS = { 'clientcontext': None, @@ -144,6 +145,7 @@ def receive_start(): INVOKE_MODE, HANDLER, SUPPRESS_INIT, + THROTTLED, CREDENTIALS ) From 8c764d103066695f95f8541ef5c08abcd4683397 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 16:05:43 -0500 Subject: [PATCH 080/234] Update nodejs8.10 to add the throttled flag --- nodejs8.10/run/awslambda-mock.js | 1 + 1 file changed, 1 insertion(+) diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index c77a6096..ba211303 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -63,6 +63,7 @@ var OPTIONS = { invokeId: uuid(), handler: HANDLER, suppressInit: true, + throttled: false, credentials: { key: ACCESS_KEY_ID, secret: SECRET_ACCESS_KEY, From 44b5f8c55212fbb6cfaec9acc1144b208d495e55 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 16:13:39 -0500 Subject: [PATCH 081/234] Update dotnet deps --- base/dump-dotnetcore20/dump-dotnetcore20.csproj | 6 +++--- base/dump-dotnetcore21/dump-dotnetcore21.csproj | 6 +++--- examples/dotnetcore2.0/test.csproj | 2 +- examples/dotnetcore2.1/test.csproj | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/base/dump-dotnetcore20/dump-dotnetcore20.csproj b/base/dump-dotnetcore20/dump-dotnetcore20.csproj index b1b485c0..6d97431e 100644 --- a/base/dump-dotnetcore20/dump-dotnetcore20.csproj +++ b/base/dump-dotnetcore20/dump-dotnetcore20.csproj @@ -7,9 +7,9 @@ - - - + + + diff --git a/base/dump-dotnetcore21/dump-dotnetcore21.csproj b/base/dump-dotnetcore21/dump-dotnetcore21.csproj index a592a6c3..300ceb9b 100644 --- a/base/dump-dotnetcore21/dump-dotnetcore21.csproj +++ b/base/dump-dotnetcore21/dump-dotnetcore21.csproj @@ -7,9 +7,9 @@ - - - + + + diff --git a/examples/dotnetcore2.0/test.csproj b/examples/dotnetcore2.0/test.csproj index 77adb3e7..bf608d81 100644 --- a/examples/dotnetcore2.0/test.csproj +++ b/examples/dotnetcore2.0/test.csproj @@ -7,7 +7,7 @@ - + diff --git a/examples/dotnetcore2.1/test.csproj b/examples/dotnetcore2.1/test.csproj index d6a026b0..62b530d4 100644 --- a/examples/dotnetcore2.1/test.csproj +++ b/examples/dotnetcore2.1/test.csproj @@ -7,7 +7,7 @@ - + From cc7ec1f73bf9d29ccfa1b22c0a3f2bfa286d95f2 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 16:17:15 -0500 Subject: [PATCH 082/234] Update go deps --- base/dump-go1x/go.mod | 2 +- base/dump-go1x/go.sum | 2 ++ examples/go1.x/go.mod | 2 +- examples/go1.x/go.sum | 4 ++-- go1.x/run/go.mod | 2 +- go1.x/run/go.sum | 2 ++ 6 files changed, 9 insertions(+), 5 deletions(-) diff --git a/base/dump-go1x/go.mod b/base/dump-go1x/go.mod index 32a59771..6e9e6186 100644 --- a/base/dump-go1x/go.mod +++ b/base/dump-go1x/go.mod @@ -2,7 +2,7 @@ module dump-go1x require ( github.com/aws/aws-lambda-go v1.13.3 - github.com/aws/aws-sdk-go-v2 v0.16.0 + github.com/aws/aws-sdk-go-v2 v0.17.0 ) go 1.13 diff --git a/base/dump-go1x/go.sum b/base/dump-go1x/go.sum index b3119fb9..f6f122bc 100644 --- a/base/dump-go1x/go.sum +++ b/base/dump-go1x/go.sum @@ -5,6 +5,8 @@ github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwR github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go-v2 v0.16.0 h1:X5pkFnjRNdDEX18NwDGWMaWL5ocNQX0qIYEhEcsTy64= github.com/aws/aws-sdk-go-v2 v0.16.0/go.mod h1:pFLIN9LDjOEwHfruGweAXEq0XaD6uRkY8FsRkxhuBIg= +github.com/aws/aws-sdk-go-v2 v0.17.0 h1:b/9gp0SD6doAWv72f3ZwzFJSsWmUw9dM8wMNmf6OBws= +github.com/aws/aws-sdk-go-v2 v0.17.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/examples/go1.x/go.mod b/examples/go1.x/go.mod index f263af82..6130d509 100644 --- a/examples/go1.x/go.mod +++ b/examples/go1.x/go.mod @@ -1,5 +1,5 @@ module handler -require github.com/aws/aws-lambda-go v1.13.2 +require github.com/aws/aws-lambda-go v1.13.3 go 1.13 diff --git a/examples/go1.x/go.sum b/examples/go1.x/go.sum index d1f9fee8..01282a39 100644 --- a/examples/go1.x/go.sum +++ b/examples/go1.x/go.sum @@ -1,6 +1,6 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/aws/aws-lambda-go v1.13.2 h1:8lYuRVn6rESoUNZXdbCmtGB4bBk4vcVYojiHjE4mMrM= -github.com/aws/aws-lambda-go v1.13.2/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/go1.x/run/go.mod b/go1.x/run/go.mod index 5a5837c4..d5a93364 100644 --- a/go1.x/run/go.mod +++ b/go1.x/run/go.mod @@ -1,5 +1,5 @@ module aws-lambda-mock -require github.com/aws/aws-lambda-go v1.13.2 +require github.com/aws/aws-lambda-go v1.13.3 go 1.13 diff --git a/go1.x/run/go.sum b/go1.x/run/go.sum index d1f9fee8..f0a554a8 100644 --- a/go1.x/run/go.sum +++ b/go1.x/run/go.sum @@ -1,6 +1,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/aws/aws-lambda-go v1.13.2 h1:8lYuRVn6rESoUNZXdbCmtGB4bBk4vcVYojiHjE4mMrM= github.com/aws/aws-lambda-go v1.13.2/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= From 0140b90e2695eaa4beaf9219938de62ed7593a8a Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 16:24:41 -0500 Subject: [PATCH 083/234] Update java deps --- base/dump-java11/build.gradle | 2 +- base/dump-java8/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/base/dump-java11/build.gradle b/base/dump-java11/build.gradle index 2e356d91..54e4b202 100644 --- a/base/dump-java11/build.gradle +++ b/base/dump-java11/build.gradle @@ -11,7 +11,7 @@ dependencies { implementation ( 'com.amazonaws:aws-lambda-java-core:1.2.0', 'com.amazonaws:aws-lambda-java-events:2.2.7', - 'com.amazonaws:aws-java-sdk-s3:1.11.667' + 'com.amazonaws:aws-java-sdk-s3:1.11.681' ) } diff --git a/base/dump-java8/build.gradle b/base/dump-java8/build.gradle index a2ec1bc8..77e5fb16 100644 --- a/base/dump-java8/build.gradle +++ b/base/dump-java8/build.gradle @@ -11,7 +11,7 @@ dependencies { implementation ( 'com.amazonaws:aws-lambda-java-core:1.2.0', 'com.amazonaws:aws-lambda-java-events:2.2.7', - 'com.amazonaws:aws-java-sdk-s3:1.11.667' + 'com.amazonaws:aws-java-sdk-s3:1.11.681' ) } From bf3b1a4952774d5e4fa04987b677fa01270880a9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 16:36:02 -0500 Subject: [PATCH 084/234] Ignore examples/go1.x/handler --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e19d1af5..69e3ff9d 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ dotnetcore2.0/run/MockBootstraps/bin dotnetcore2.0/run/MockBootstraps/obj dotnetcore2.1/run/MockBootstraps/bin dotnetcore2.1/run/MockBootstraps/obj +java8/run/lambda-runtime-mock/target examples/dotnetcore2.0/bin examples/dotnetcore2.0/obj examples/dotnetcore2.0/pub @@ -26,4 +27,4 @@ examples/dotnetcore2.1/obj examples/dotnetcore2.1/pub examples/java/bin examples/java/build -java8/run/lambda-runtime-mock/target +examples/go1.x/handler From 477424479cef3d257fdd166a94787820e43dfd3d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 25 Nov 2019 21:20:17 -0500 Subject: [PATCH 085/234] Update aws-sam-cli to 0.33.1 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 9f2a67d7..bbc86ab0 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 25645db1..39b059ca 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index d3bcdcd3..cbc33886 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 042f7f6c..eaa98035 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 78dc5fb4..3f060122 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 822f1d2c..eb1af488 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 443a2465..dd9abe74 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 6f169309..1b87b1df 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index e4af05c9..6a50ddd4 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 652bfdf3..d056582c 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index fd272b08..a63968af 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 0555a2f0..369a0edb 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index c795ff6e..aa53596c 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index e309560c..cfca1710 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 0eb43d96..678e527c 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.32.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir From 90eb13bd9f5f543ab746f16308c5fe49e59c5ac9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 28 Nov 2019 15:22:42 -0500 Subject: [PATCH 086/234] Update aws-sam-cli to 0.34.0 --- .npmignore | 2 ++ dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 16 files changed, 17 insertions(+), 15 deletions(-) diff --git a/.npmignore b/.npmignore index af0f539c..a802736e 100644 --- a/.npmignore +++ b/.npmignore @@ -5,3 +5,5 @@ python* java* go1* dotnetcore* +ruby* +provided diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index bbc86ab0..83305d36 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 39b059ca..ff70ac96 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index cbc33886..c35c43f7 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index eaa98035..76921ccb 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 3f060122..c2fdaec5 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index eb1af488..3bc4ef93 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index dd9abe74..6ab31d31 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 1b87b1df..272a41fe 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 6a50ddd4..2b6b0342 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index d056582c..c15050d7 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index a63968af..1f99142d 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 369a0edb..a2e8f77e 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index aa53596c..84b5038a 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index cfca1710..5f8d24d5 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 678e527c..3d0a6fcd 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.33.1 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir From 2f584c4b0615c1e0a28b007380c800cb7d1a7e58 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 30 Nov 2019 22:05:13 -0500 Subject: [PATCH 087/234] Add file watching (#231) * Add SIGHUP handler to kill/restart bootstrap in provided runtime Fixes #229 * Add file watching to provided runtime Will kill/restart bootstrap if DOCKER_LAMBDA_WATCH env is set and files in /var/task or /opt change * If provided runtime is running bootstrap, just exit instead * Exit java8 runtime with error code 2 on SIGHUP or ConnectException * Exit nodejs4.3/6.10/8.10 runtimes with error code 2 on SIGHUP or ECONNRESET * Squash with java * Exit python2.7/3.6 runtimes with error code 2 on SIGHUP or connection error * Exit dotnetcore2.0/2.1 runtimes with error code 2 on SocketException --- .../run/MockBootstraps/MockRuntime.cs | 25 +++++- .../run/MockBootstraps/MockRuntime.cs | 25 +++++- .../java/lambdainternal/LambdaRuntime.java | 10 ++- nodejs4.3/run/awslambda-mock.js | 6 +- nodejs6.10/run/awslambda-mock.js | 6 +- nodejs8.10/run/awslambda-mock.js | 6 +- provided/run/go.mod | 1 + provided/run/go.sum | 4 + provided/run/init.go | 82 +++++++++++++++++-- python2.7/run/runtime_mock.py | 18 ++-- python3.6/run/runtime_mock.py | 18 ++-- 11 files changed, 168 insertions(+), 33 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index fd7165e0..ca930389 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -109,7 +109,26 @@ unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVar { logs = ""; } - var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + HttpResponseMessage result = null; + try + { + result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + } + catch (AggregateException ae) + { + if (ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && + (ae.InnerException.InnerException is SocketException || + // happens on dotnetcore2.0 + ae.InnerException.InnerException.GetType().ToString().Equals("System.Net.Http.CurlException"))) + { + System.Environment.Exit(context.StayOpen ? 2 : (invokeError == null ? 0 : 1)); + } + else + { + throw ae; + } + } + if (result.StatusCode != HttpStatusCode.OK) { throw new Exception("Got a bad response from the bootstrap"); @@ -185,12 +204,12 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi } catch (AggregateException ae) { - if (!context.StayOpen && ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && + if (ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && (ae.InnerException.InnerException is SocketException || // happens on dotnetcore2.0 ae.InnerException.InnerException.GetType().ToString().Equals("System.Net.Http.CurlException"))) { - System.Environment.Exit(string.IsNullOrEmpty(errorType) && invokeError == null ? 0 : 1); + System.Environment.Exit(context.StayOpen ? 2 : (string.IsNullOrEmpty(errorType) && invokeError == null ? 0 : 1)); } else { diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 248b628c..95635487 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -110,7 +110,26 @@ unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVar { logs = ""; } - var result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + HttpResponseMessage result = null; + try + { + result = client.GetAsync("http://127.0.0.1:9001/2018-06-01/runtime/invocation/next").Result; + } + catch (AggregateException ae) + { + if (ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && + (ae.InnerException.InnerException is SocketException || + // happens on dotnetcore2.0 + ae.InnerException.InnerException.GetType().ToString().Equals("System.Net.Http.CurlException"))) + { + System.Environment.Exit(context.StayOpen ? 2 : (invokeError == null ? 0 : 1)); + } + else + { + throw ae; + } + } + if (result.StatusCode != HttpStatusCode.OK) { throw new Exception("Got a bad response from the bootstrap"); @@ -186,12 +205,12 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi } catch (AggregateException ae) { - if (!context.StayOpen && ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && + if (ae.InnerException is HttpRequestException && ae.InnerException.InnerException != null && (ae.InnerException.InnerException is SocketException || // happens on dotnetcore2.0 ae.InnerException.InnerException.GetType().ToString().Equals("System.Net.Http.CurlException"))) { - System.Environment.Exit(string.IsNullOrEmpty(errorType) && invokeError == null ? 0 : 1); + System.Environment.Exit(context.StayOpen ? 2 : (string.IsNullOrEmpty(errorType) && invokeError == null ? 0 : 1)); } else { diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index b37c4510..d2b9df1a 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -22,6 +22,7 @@ import com.google.gson.Gson; import sun.misc.Unsafe; +import sun.misc.Signal; @SuppressWarnings("restriction") public class LambdaRuntime { @@ -99,6 +100,13 @@ public class LambdaRuntime { } catch (Exception e) { throw new RuntimeException(e); } + + Signal.handle(new Signal("HUP"), (Signal signal) -> { + if (STAY_OPEN) { + systemErr("SIGHUP received, exiting runtime..."); + System.exit(2); + } + }); } public static void initRuntime() { @@ -144,7 +152,7 @@ public static InvokeRequest waitForInvoke() { throw new RuntimeException("Unexpected status code from invocation/next: " + responseCode); } } catch (ConnectException e) { - System.exit(errored ? 1 : 0); + System.exit(STAY_OPEN ? 2 : (errored ? 1 : 0)); } String requestId = conn.getHeaderField("Lambda-Runtime-Aws-Request-Id"); deadlineMs = Long.parseLong(conn.getHeaderField("Lambda-Runtime-Deadline-Ms")); diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index c77a6096..dec5ee15 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -34,6 +34,10 @@ var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) process.on('SIGINT', () => process.exit(0)) process.on('SIGTERM', () => process.exit(0)) +process.on('SIGHUP', () => { + systemErr("SIGHUP received, exiting runtime...") + process.exit(2) +}) // Don't think this can be done in the Docker image process.umask(2) @@ -134,7 +138,7 @@ module.exports = { }) }).on('error', err => { if (err.code === 'ECONNRESET') { - return process.exit(errored ? 1 : 0) + return process.exit(STAY_OPEN ? 2 : (errored ? 1 : 0)) } console.error(err) process.exit(1) diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index c77a6096..dec5ee15 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -34,6 +34,10 @@ var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) process.on('SIGINT', () => process.exit(0)) process.on('SIGTERM', () => process.exit(0)) +process.on('SIGHUP', () => { + systemErr("SIGHUP received, exiting runtime...") + process.exit(2) +}) // Don't think this can be done in the Docker image process.umask(2) @@ -134,7 +138,7 @@ module.exports = { }) }).on('error', err => { if (err.code === 'ECONNRESET') { - return process.exit(errored ? 1 : 0) + return process.exit(STAY_OPEN ? 2 : (errored ? 1 : 0)) } console.error(err) process.exit(1) diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index ba211303..aaeab76f 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -34,6 +34,10 @@ var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) process.on('SIGINT', () => process.exit(0)) process.on('SIGTERM', () => process.exit(0)) +process.on('SIGHUP', () => { + systemErr("SIGHUP received, exiting runtime...") + process.exit(2) +}) // Don't think this can be done in the Docker image process.umask(2) @@ -135,7 +139,7 @@ module.exports = { }) }).on('error', err => { if (err.code === 'ECONNRESET') { - return process.exit(errored ? 1 : 0) + return process.exit(STAY_OPEN ? 2 : (errored ? 1 : 0)) } console.error(err) process.exit(1) diff --git a/provided/run/go.mod b/provided/run/go.mod index 23a90256..e2aded75 100644 --- a/provided/run/go.mod +++ b/provided/run/go.mod @@ -3,6 +3,7 @@ module init require ( github.com/go-chi/chi v4.0.2+incompatible github.com/go-chi/render v1.0.1 + github.com/rjeczalik/notify v0.9.2 ) go 1.13 diff --git a/provided/run/go.sum b/provided/run/go.sum index 9efc7108..beef513a 100644 --- a/provided/run/go.sum +++ b/provided/run/go.sum @@ -2,3 +2,7 @@ github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAU github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= +github.com/rjeczalik/notify v0.9.2 h1:MiTWrPj55mNDHEiIX5YUSKefw/+lCQVoAFmD6oQm5w8= +github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM= +golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7 h1:bit1t3mgdR35yN0cX0G8orgLtOuyL9Wqxa1mccLB0ig= +golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/provided/run/init.go b/provided/run/init.go index 4526d235..cd0dcd66 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -28,6 +28,7 @@ import ( "github.com/go-chi/chi" "github.com/go-chi/render" + "github.com/rjeczalik/notify" ) var logDebug = os.Getenv("DOCKER_LAMBDA_DEBUG") != "" @@ -36,6 +37,7 @@ var noBootstrap = os.Getenv("DOCKER_LAMBDA_NO_BOOTSTRAP") != "" var apiPort = getEnv("DOCKER_LAMBDA_API_PORT", "9001") var useStdin = os.Getenv("DOCKER_LAMBDA_USE_STDIN") != "" var noModifyLogs = os.Getenv("DOCKER_LAMBDA_NO_MODIFY_LOGS") != "" +var watchMode = os.Getenv("DOCKER_LAMBDA_WATCH") != "" var curState = "STATE_INIT" @@ -52,7 +54,7 @@ var curContext *mockLambdaContext var bootstrapCmd *exec.Cmd var initPrinted bool var eventChan chan *mockLambdaContext -var exited bool +var bootstrapExitedGracefully bool var bootstrapIsRunning bool var bootstrapPath *string var bootstrapArgs []string @@ -171,6 +173,10 @@ func main() { serverInitEnd = time.Now() if stayOpen { + if watchMode { + setupFileWatchers() + } + setupSighupHandler() systemLog(fmt.Sprintf("Lambda API listening on port %s...", apiPort)) <-interrupt } else { @@ -202,6 +208,36 @@ func main() { exit(exitCode) } +func setupSighupHandler() { + sighupReceiver := make(chan os.Signal, 1) + signal.Notify(sighupReceiver, syscall.SIGHUP) + go func() { + for { + <-sighupReceiver + systemLog(fmt.Sprintf("SIGHUP received, restarting bootstrap...")) + reboot() + } + }() +} + +func setupFileWatchers() { + fileWatcher := make(chan notify.EventInfo, 1) + if err := notify.Watch("/var/task/...", fileWatcher, notify.All); err != nil { + log.Fatal(err) + } + if err := notify.Watch("/opt/...", fileWatcher, notify.All); err != nil { + log.Fatal(err) + } + go func() { + for { + ei := <-fileWatcher + debug("Received notify event: ", ei) + systemLog(fmt.Sprintf("Handler/layer file changed, restarting bootstrap...")) + reboot() + } + }() +} + func formatOneLineJSON(body []byte) string { payloadObj := &json.RawMessage{} if json.Unmarshal(body, payloadObj) == nil { @@ -263,6 +299,7 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { } bootstrapIsRunning = true + bootstrapExitedGracefully = false // Get an initial read of memory, and update when we finish context.MaxMem, _ = allProcsMemoryInMb() @@ -271,7 +308,7 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { bootstrapCmd.Wait() bootstrapIsRunning = false curState = "STATE_INIT" - if !exited { + if !bootstrapExitedGracefully { // context may have changed, use curContext instead curContext.SetError(fmt.Errorf("Runtime exited without providing a reason")) } @@ -281,11 +318,23 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { } func exit(exitCode int) { - exited = true + killBootstrap() + os.Exit(exitCode) +} + +func reboot() { + if noBootstrap { + os.Exit(2) + } else { + killBootstrap() + } +} + +func killBootstrap() { + bootstrapExitedGracefully = true if bootstrapCmd != nil && bootstrapCmd.Process != nil { syscall.Kill(-bootstrapCmd.Process.Pid, syscall.SIGKILL) } - os.Exit(exitCode) } func waitForContext(context *mockLambdaContext) { @@ -402,7 +451,7 @@ func createRuntimeRouter() *chi.Mux { r. With(updateState("STATE_INIT_ERROR")). Post("/init/error", func(w http.ResponseWriter, r *http.Request) { - debug("In /init/error...") + debug("In /init/error") curContext = <-eventChan handleErrorRequest(w, r) curContext.EndInvoke(nil) @@ -411,14 +460,28 @@ func createRuntimeRouter() *chi.Mux { r. With(updateState("STATE_INVOKE_NEXT")). Get("/invocation/next", func(w http.ResponseWriter, r *http.Request) { - debug("In /invocation/next...") + debug("In /invocation/next") + if curContext.Reply != nil { - debug("Reply is not nil...") + debug("Reply is not nil") curContext.EndInvoke(nil) } + + closeNotify := w.(http.CloseNotifier).CloseNotify() + go func() { + <-closeNotify + debug("Connection closed, sending ignore event") + eventChan <- &mockLambdaContext{Ignore: true} + }() + debug("Waiting for next event...") - curContext = <-eventChan - context := curContext + context := <-eventChan + if context.Ignore { + debug("Ignore event received, returning") + w.Write([]byte{}) + return + } + curContext = context context.LogStartRequest() w.Header().Set("Content-Type", "application/json") @@ -732,6 +795,7 @@ type mockLambdaContext struct { LogTail string // base64 encoded tail, no greater than 4096 bytes ErrorType string // Unhandled vs Handled Ended bool + Ignore bool } func (mc *mockLambdaContext) ParseTimeout() { diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index 21e65420..59f428cf 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -20,9 +20,6 @@ from httplib import HTTPConnection -signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) -signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) - ORIG_STDOUT = sys.stdout ORIG_STDERR = sys.stderr @@ -100,6 +97,15 @@ MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) +def sighup_handler(signum, frame): + eprint("SIGHUP received, exiting runtime...") + sys.exit(2) + +signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) +signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) +signal.signal(signal.SIGHUP, sighup_handler) + + def eprint(*args, **kwargs): print(*args, file=ORIG_STDERR, **kwargs) @@ -181,10 +187,8 @@ def receive_invoke(): if resp.status != 200: raise Exception("/invocation/next return status %d" % resp.status) except Exception: - if INVOKED and not STAY_OPEN: - sys.exit(1 if ERRORED else 0) - return () - raise + sys.exit(2 if STAY_OPEN else (1 if ERRORED else 0)) + return () INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') DEADLINE_MS = int(resp.getheader('Lambda-Runtime-Deadline-Ms')) diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index 21e65420..59f428cf 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -20,9 +20,6 @@ from httplib import HTTPConnection -signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) -signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) - ORIG_STDOUT = sys.stdout ORIG_STDERR = sys.stderr @@ -100,6 +97,15 @@ MOCKSERVER_CONN = HTTPConnection("127.0.0.1", 9001) +def sighup_handler(signum, frame): + eprint("SIGHUP received, exiting runtime...") + sys.exit(2) + +signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) +signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) +signal.signal(signal.SIGHUP, sighup_handler) + + def eprint(*args, **kwargs): print(*args, file=ORIG_STDERR, **kwargs) @@ -181,10 +187,8 @@ def receive_invoke(): if resp.status != 200: raise Exception("/invocation/next return status %d" % resp.status) except Exception: - if INVOKED and not STAY_OPEN: - sys.exit(1 if ERRORED else 0) - return () - raise + sys.exit(2 if STAY_OPEN else (1 if ERRORED else 0)) + return () INVOKEID = resp.getheader('Lambda-Runtime-Aws-Request-Id') DEADLINE_MS = int(resp.getheader('Lambda-Runtime-Deadline-Ms')) From 9120f60814877a116e7fd679fc90ebc8e7f8205c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 30 Nov 2019 22:43:42 -0500 Subject: [PATCH 088/234] Add documentation for watch mode to README --- README.md | 57 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 40516d57..ef4f8266 100644 --- a/README.md +++ b/README.md @@ -104,18 +104,51 @@ You can change the internal API port from `9001` by passing `-e DOCKER_LAMBDA_AP #### Developing in "stay-open" mode -While you're developing, you'll want the server to restart every time you make a change to your Lambda. -You can automate this with a file-watching utility like [entr](https://github.com/eradman/entr) or [nodemon](https://nodemon.io/): +docker-lambda can watch for changes to your handler (and layer) code and restart the internal bootstrap process +so you can always invoke the latest version of your code without needing to shutdown the container. -```sh -# you can `brew install entr` on macOS -find . | entr -r docker run --rm \ - -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ +To enable this, pass `-e DOCKER_LAMBDA_WATCH=1` to `docker run`: + +``` +docker run --rm \ + -e DOCKER_LAMBDA_WATCH=1 -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ -v "$PWD":/var/task:ro,delegated \ - lambci/lambda:go1.x handler + lambci/lambda:java11 handler ``` -Or +Then when you make changes to any file in the mounted directory, you'll see: + +``` +Handler/layer file changed, restarting bootstrap... +``` + +And the next invoke will reload your handler with the latest version of your code. + +NOTE: This doesn't work in exactly the same way with some of the older runtimes due to the way they're loaded. Specifically: `nodejs8.10` and earlier, `python3.6` and earlier, `dotnetcore2.1` and earlier, `java8` and `go1.x`. These runtimes will instead exit with error code 2 +when they are in watch mode and files in the handler or layer are changed. + +That way you can use the `--restart on-failure` capabilities of `docker run` to have the container automatically restart instead. + +So, for `nodejs8.10`, `nodejs6.10`, `nodejs4.3`, `python3.6`, `python2.7`, `dotnetcore2.1`, `dotnetcore2.0`, `java8` and `go1.x`, you'll +need to run watch mode like this instead: + +``` +docker run --restart on-failure \ + -e DOCKER_LAMBDA_WATCH=1 -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ + -v "$PWD":/var/task:ro,delegated \ + lambci/lambda:java8 handler +``` + +When you make changes to any file in the mounted directory, you'll see: + +``` +Handler/layer file changed, restarting bootstrap... +``` + +And then the docker container will restart. See the [Docker documentation](https://docs.docker.com/engine/reference/commandline/run/#restart-policies---restart) for more details. Your terminal may get detached, but the container should still be running and the +API should have restarted. You can do `docker ps` to find the container ID and then `docker attach ` to reattach if you wish. + +If none of the above strategies work for you, you can use a file-watching utility like [nodemon](https://nodemon.io/): ```sh # npm install -g nodemon @@ -125,14 +158,6 @@ nodemon -w ./ -e '' -s SIGINT -x docker -- run --rm \ lambci/lambda:go1.x handler ``` -Both commands above assume your handler is in the current directory, and the container -will restart whenever there are changes to any files in it or its subdirectories. - -Some other file-watching utilities include -[fswatch](https://github.com/emcrisostomo/fswatch), -[watchman](https://facebook.github.io/watchman/) and -[watchdog](https://github.com/gorakhargosh/watchdog#shell-utilities) (Python) - ### Building Lambda functions The build images have a [number of extra system packages installed](#build-environment) From 972e3e1fb117bd8c7ef2c43143e45db09e1824fb Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 30 Nov 2019 22:45:21 -0500 Subject: [PATCH 089/234] Exit go1.x runtime with error code 2 on SIGHUP or EOF --- go1.x/run/aws-lambda-mock.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index fde4d947..103a52d9 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -17,6 +17,7 @@ import ( "net/url" "os" "os/exec" + "os/signal" "reflect" "regexp" "strconv" @@ -90,6 +91,7 @@ func main() { os.Setenv("_HANDLER", handler) var err error + var errored bool var mockServerCmd = exec.Command("/var/runtime/mockserver") mockServerCmd.Env = append(os.Environ(), @@ -211,6 +213,14 @@ func main() { time.Sleep(5 * time.Millisecond) } + sighupReceiver := make(chan os.Signal, 1) + signal.Notify(sighupReceiver, syscall.SIGHUP) + go func() { + <-sighupReceiver + fmt.Fprintln(os.Stderr, ("SIGHUP received, exiting runtime...")) + os.Exit(2) + }() + var initEndSent bool var invoked bool var receivedInvokeAt time.Time @@ -227,6 +237,13 @@ func main() { if err != nil { if uerr, ok := err.(*url.Error); ok { if uerr.Unwrap().Error() == "EOF" { + if stayOpen { + os.Exit(2) + } else if errored { + os.Exit(1) + } else { + os.Exit(0) + } return } } @@ -278,12 +295,15 @@ func main() { initEnd = time.Now() } + errored = false + var reply *messages.InvokeResponse err = client.Call("Function.Invoke", invokeRequest, &reply) suffix := "/response" payload := reply.Payload if err != nil || reply.Error != nil { + errored = true suffix = "/error" var lambdaErr lambdaError if err != nil { From f84d18031b3ac8111dbdf243c029948446f3ee35 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 2 Dec 2019 18:37:51 -0500 Subject: [PATCH 090/234] Update aws-sam-cli to 0.35.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 83305d36..4188e4a7 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index ff70ac96..3175d1cd 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index c35c43f7..91c5030e 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 76921ccb..0e83a777 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index c2fdaec5..4e0cc761 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 3bc4ef93..35d3115a 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 6ab31d31..ec438a78 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 272a41fe..f0092af4 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 2b6b0342..38219ce0 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index c15050d7..930d7c24 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 1f99142d..d7c11be2 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index a2e8f77e..7462f471 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 84b5038a..73a379f1 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 5f8d24d5..ccd18729 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 3d0a6fcd..5982cfa0 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.34.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir From bd19d5f3b91831be87e4c3cad5dad1f7f3da3979 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 3 Dec 2019 19:35:14 -0500 Subject: [PATCH 091/234] Update aws-sam-cli to 0.36.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 4188e4a7..585d0528 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 3175d1cd..e92a01d7 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 91c5030e..5624f400 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 0e83a777..f06f3550 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 4e0cc761..aeffe33a 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 35d3115a..0756a384 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index ec438a78..59870301 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index f0092af4..3779cb9c 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 38219ce0..3188ec55 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 930d7c24..d6d4ad90 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index d7c11be2..98c98973 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 7462f471..d1242f22 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 73a379f1..6cc3ab8b 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index ccd18729..ad8b8cd3 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 5982cfa0..a908039f 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.35.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir From 691726ac698909717cdaee1c7d72c6aaf18d0578 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 4 Dec 2019 16:41:19 -0500 Subject: [PATCH 092/234] Update aws-sam-cli to 0.37.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 585d0528..79b7dafc 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e92a01d7..47c51392 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 5624f400..52946f19 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index f06f3550..3d39b7e9 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index aeffe33a..4924b255 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 0756a384..b09d8e02 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 59870301..a201770e 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 3779cb9c..21ed9226 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 3188ec55..206b01c2 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index d6d4ad90..fbae7dec 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 98c98973..550086c0 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index d1242f22..5c1d4850 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 6cc3ab8b..1a0226b6 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index ad8b8cd3..d3664528 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index a908039f..eebfe38f 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.36.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir From cd1ab148615c8bba2bffd1c748004206a3a41289 Mon Sep 17 00:00:00 2001 From: Walter Mesquita Date: Fri, 13 Dec 2019 08:21:57 -0300 Subject: [PATCH 093/234] Changing lambda API and server to listen in the same port --- provided/run/init.go | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index cd0dcd66..95e7541c 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -144,27 +144,16 @@ func main() { os.Setenv("AWS_DEFAULT_REGION", curContext.Region) os.Setenv("_X_AMZN_TRACE_ID", curContext.XAmznTraceID) - runtimeRouter := createRuntimeRouter() - - runtimeListener, err := net.Listen("tcp", ":9001") + runtimeListener, err := net.Listen("tcp", ":"+apiPort) if err != nil { log.Fatal(err) return } var runtimeServer *http.Server - if apiPort == "9001" { - runtimeServer = &http.Server{Handler: addAPIRoutes(runtimeRouter)} - } else { - runtimeServer = &http.Server{Handler: runtimeRouter} - apiListener, err := net.Listen("tcp", ":"+apiPort) - if err != nil { - log.Fatal(err) - return - } - apiServer := &http.Server{Handler: addAPIRoutes(chi.NewRouter())} - go apiServer.Serve(apiListener) - } + + runtimeRouter := createRuntimeRouter() + runtimeServer = &http.Server{Handler: addAPIRoutes(runtimeRouter)} go runtimeServer.Serve(runtimeListener) @@ -181,7 +170,7 @@ func main() { <-interrupt } else { res, err := http.Post( - "http://127.0.0.1:9001/2015-03-31/functions/"+curContext.FnName+"/invocations", + "http://127.0.0.1:"+apiPort+"/2015-03-31/functions/"+curContext.FnName+"/invocations", "application/json", bytes.NewBuffer(eventBody), ) @@ -272,7 +261,7 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { awsSessionToken := getEnv("AWS_SESSION_TOKEN", os.Getenv("AWS_SECURITY_TOKEN")) bootstrapCmd.Env = append(os.Environ(), - "AWS_LAMBDA_RUNTIME_API=127.0.0.1:9001", + "AWS_LAMBDA_RUNTIME_API=127.0.0.1:"+apiPort, "AWS_ACCESS_KEY_ID="+awsAccessKey, "AWS_SECRET_ACCESS_KEY="+awsSecretKey, ) From b8c8759ddb90688d4aabc37800c2c7221fe4c478 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 13 Dec 2019 11:18:25 -0500 Subject: [PATCH 094/234] Add DOCKER_LAMBDA_RUNTIME_PORT env var Also restrict runtime address to 127.0.0.1 if port different from Lambda API --- README.md | 5 ++++- provided/run/init.go | 12 +++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ef4f8266..f26612a5 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,9 @@ It also supports the [documented Lambda API headers](https://docs.aws.amazon.com If you want to change the exposed port, eg run on port 3000 on the host, use `-p 3000:9001` (then query `http://localhost:3000`). -You can change the internal API port from `9001` by passing `-e DOCKER_LAMBDA_API_PORT=` (it's unlikely that you'll need to do this). +You can change the internal Lambda API port from `9001` by passing `-e DOCKER_LAMBDA_API_PORT=`. +You can also change the [custom runtime](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html#runtimes-custom-build) +port from `9001` by passing `-e DOCKER_LAMBDA_RUNTIME_PORT=`. #### Developing in "stay-open" mode @@ -368,6 +370,7 @@ Administrative keys for lambci/lambda:provided - `DOCKER_LAMBDA_USE_STDIN` - `DOCKER_LAMBDA_STAY_OPEN` - `DOCKER_LAMBDA_API_PORT` + - `DOCKER_LAMBDA_RUNTIME_PORT` - `DOCKER_LAMBDA_DEBUG` - `DOCKER_LAMBDA_NO_MODIFY_LOGS` diff --git a/provided/run/init.go b/provided/run/init.go index 95e7541c..d2f33d37 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -35,6 +35,7 @@ var logDebug = os.Getenv("DOCKER_LAMBDA_DEBUG") != "" var stayOpen = os.Getenv("DOCKER_LAMBDA_STAY_OPEN") != "" var noBootstrap = os.Getenv("DOCKER_LAMBDA_NO_BOOTSTRAP") != "" var apiPort = getEnv("DOCKER_LAMBDA_API_PORT", "9001") +var runtimePort = getEnv("DOCKER_LAMBDA_RUNTIME_PORT", "9001") var useStdin = os.Getenv("DOCKER_LAMBDA_USE_STDIN") != "" var noModifyLogs = os.Getenv("DOCKER_LAMBDA_NO_MODIFY_LOGS") != "" var watchMode = os.Getenv("DOCKER_LAMBDA_WATCH") != "" @@ -144,7 +145,12 @@ func main() { os.Setenv("AWS_DEFAULT_REGION", curContext.Region) os.Setenv("_X_AMZN_TRACE_ID", curContext.XAmznTraceID) - runtimeListener, err := net.Listen("tcp", ":"+apiPort) + runtimeAddress := ":" + runtimePort + if apiPort != runtimePort { + // We can restrict runtime to 127.0.0.1 if we don't need the port for the Lambda API + runtimeAddress = "127.0.0.1" + runtimeAddress + } + runtimeListener, err := net.Listen("tcp", runtimeAddress) if err != nil { log.Fatal(err) return @@ -170,7 +176,7 @@ func main() { <-interrupt } else { res, err := http.Post( - "http://127.0.0.1:"+apiPort+"/2015-03-31/functions/"+curContext.FnName+"/invocations", + "http://127.0.0.1:"+runtimePort+"/2015-03-31/functions/"+curContext.FnName+"/invocations", "application/json", bytes.NewBuffer(eventBody), ) @@ -261,7 +267,7 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { awsSessionToken := getEnv("AWS_SESSION_TOKEN", os.Getenv("AWS_SECURITY_TOKEN")) bootstrapCmd.Env = append(os.Environ(), - "AWS_LAMBDA_RUNTIME_API=127.0.0.1:"+apiPort, + "AWS_LAMBDA_RUNTIME_API=127.0.0.1:"+runtimePort, "AWS_ACCESS_KEY_ID="+awsAccessKey, "AWS_SECRET_ACCESS_KEY="+awsSecretKey, ) From 185b76697d7133afaf11c7b6723d6f069d7dd5d4 Mon Sep 17 00:00:00 2001 From: shades of clay Date: Wed, 18 Dec 2019 00:36:25 +1100 Subject: [PATCH 095/234] updated DOTNET_SDK_VERSION to 2.1.701 (#237) --- dotnetcore2.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 47c51392..27ab895a 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore2.1 \ - DOTNET_SDK_VERSION=2.1.700 \ + DOTNET_SDK_VERSION=2.1.701 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 94a2257aa0c824ae223d0ad1b8091a5b4a0bf2c3 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 17 Dec 2019 20:57:02 -0500 Subject: [PATCH 096/234] Update aws-sam-cli to 0.38.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 79b7dafc..d4121622 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 27ab895a..43e4816f 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 52946f19..a9aa7813 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 3d39b7e9..06e6df2d 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 4924b255..83ba604d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index b09d8e02..75946730 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index a201770e..ac817cf3 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 21ed9226..435e4136 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 206b01c2..97d6bff3 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index fbae7dec..a6c86718 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 550086c0..da2a3b44 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 5c1d4850..baea9f91 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,4 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 1a0226b6..b79bfb61 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index d3664528..dc572318 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index eebfe38f..83d365f4 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.37.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir From 8bffe2035b76301d66a41b4b906121666a4273b2 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 22 Dec 2019 15:06:10 -0500 Subject: [PATCH 097/234] Add poetry to all python build images Fixes #240 --- README.md | 5 ++++- python2.7/build/Dockerfile | 3 +++ python3.6/build/Dockerfile | 3 +++ python3.7/build/Dockerfile | 3 +++ python3.8/build/Dockerfile | 3 +++ 5 files changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f26612a5..12b52cfd 100644 --- a/README.md +++ b/README.md @@ -225,10 +225,13 @@ To use the build images, for compilation, deployment, etc: # To compile native deps in node_modules docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs12.x npm rebuild +# To install defined poetry dependencies +docker run --rm -v "$PWD":/var/task lambci/lambda:build-python3.8 poetry install + # To resolve dependencies on go1.x (working directory is /go/src/handler) docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x go mod download -# For .NET Core 2.0, this will publish the compiled code to `./pub`, +# For .NET Core, this will publish the compiled code to `./pub`, # which you can then use to run with `-v "$PWD"/pub:/var/task` docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.1 dotnet publish -c Release -o pub diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index cc284b1d..c4494dd8 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,4 +9,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.6.0 --no-cache-dir + +ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index baea9f91..c2a36a9c 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,4 +19,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + +ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index b79bfb61..c1059b39 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,4 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + +ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index dc572318..5671f0d9 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,4 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + +ENV PATH=/root/.poetry/bin:$PATH From 843e679399f8807ac20e2b14805bd46906aec220 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 23 Dec 2019 19:25:55 -0500 Subject: [PATCH 098/234] Update aws-sam-cli to 0.39.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index d4121622..421bc264 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 43e4816f..c902cbd2 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index a9aa7813..492e2b8b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 06e6df2d..ec783df0 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 83ba604d..21082c6b 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 75946730..a05ae8aa 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index ac817cf3..12d113a7 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 435e4136..734bb816 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 97d6bff3..cf56a380 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index a6c86718..491018f6 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index da2a3b44..94e323ff 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index c2a36a9c..5909de7e 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index c1059b39..f797616c 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 5671f0d9..66380d9b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 83d365f4..3461ce72 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler && \ - pip install -U awscli boto3 aws-sam-cli==0.38.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir From 5b48a7c009141f6080835fdb06902c746a5d7eb8 Mon Sep 17 00:00:00 2001 From: eric brody Date: Tue, 7 Jan 2020 23:32:18 -0500 Subject: [PATCH 099/234] Set bundler to a specific version that matches what is in AWS (#243) * Set bundler to a specific version that matches what is in AWS * Switch to a fuzzy match on the bundler version --- ruby2.5/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 3461ce72..97a1d502 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -12,5 +12,5 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ - gem install --no-document bundler && \ + gem install --no-document bundler -v '~> 2.1' && \ pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir From 12c9ebacea53b3931ddc2036cc307d4388031fb4 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 8 Jan 2020 17:23:20 -0800 Subject: [PATCH 100/234] Update aws-sam-cli to 0.40.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 421bc264..06458ea2 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index c902cbd2..8999e53a 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 492e2b8b..c164c68c 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index ec783df0..dd1b78b6 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 21082c6b..b77ec48a 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index a05ae8aa..b051d837 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 12d113a7..88a7dbdb 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 734bb816..faf8b6eb 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index cf56a380..8e01e76c 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 491018f6..8e9b7cfa 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 94e323ff..e227de9d 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 5909de7e..c08d1400 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index f797616c..b41c4c1d 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 66380d9b..15c6519a 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 97a1d502..bab32ac5 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.39.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir From 674ec90eb2e063463988e20eee652c5468f7a59f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 10 Jan 2020 08:06:30 -0800 Subject: [PATCH 101/234] Update Python build images to Poetry 1.0.2 --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index c4494dd8..6d5f4726 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,7 +9,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index c08d1400..995655db 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,7 +19,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index b41c4c1d..6bbd1f2a 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,7 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 15c6519a..5104210a 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,7 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.0/get-poetry.py | POETRY_VERSION=1.0.0 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH From 30b35d3c9982d900bc6dcdd75f26c8321e767acb Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 31 Jan 2020 14:16:48 -0500 Subject: [PATCH 102/234] Update poetry to 1.0.3 on python build images --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 6d5f4726..a5b793c4 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,7 +9,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 995655db..6b3f0af9 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,7 +19,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 6bbd1f2a..19dbf44f 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,7 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 5104210a..946a72e9 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,7 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.2/get-poetry.py | POETRY_VERSION=1.0.2 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH From 590963934f5731733770e3325cf5326da4e9c82b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 4 Feb 2020 12:33:43 -0500 Subject: [PATCH 103/234] Update aws-lambda-builders to 0.7.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 06458ea2..d0941803 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 8999e53a..85d5d88f 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index c164c68c..9ba6611d 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index dd1b78b6..1249c612 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index b77ec48a..a150cf02 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index b051d837..a247e641 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 88a7dbdb..05270fcc 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index faf8b6eb..8277260a 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 8e01e76c..7578278e 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 8e9b7cfa..75ea5de1 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index e227de9d..f071aa57 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index a5b793c4..e419c140 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 6b3f0af9..c3a2fe5e 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 19dbf44f..521c0120 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 946a72e9..e437e52f 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index bab32ac5..7acb1464 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.6.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir From b4babc8be7ead3e98d526b5f6e28c64b02d575a1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 4 Feb 2020 13:05:27 -0500 Subject: [PATCH 104/234] Update maven to 3.6.3 and gradle to 6.1.1 in Java images --- java11/build/Dockerfile | 6 +++--- java8/build/Dockerfile | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 1249c612..7b491c80 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.0-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.1.1-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ - curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz | \ + curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index a150cf02..9e71f062 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.0-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.1.1-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ - curl -L http://mirror.metrocast.net/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz | \ + curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.0/bin:/usr/local/maven/apache-maven-3.6.2/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir From 003484917c2b95a29aaea891770289a5fd06846c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 5 Feb 2020 19:36:08 -0500 Subject: [PATCH 105/234] Update aws-sam-cli to 0.41.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index d0941803..8530d7ac 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 85d5d88f..00208798 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 9ba6611d..ea5bc185 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 7b491c80..00aa14ee 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 9e71f062..39a0e0f9 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index a247e641..2589de67 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 05270fcc..1dfa732e 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 8277260a..aaf38c52 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 7578278e..a5718e61 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 75ea5de1..17282d32 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index f071aa57..1d449885 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index c3a2fe5e..30065f56 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 521c0120..06e65f5b 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index e437e52f..697d6716 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 7acb1464..12a791ce 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.40.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir From b0011914b17bb97af58d0889e65094bbc69ae532 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 15 Jan 2020 14:12:57 -0800 Subject: [PATCH 106/234] Update build-dotnetcore2.1 SDK to 2.1.803 --- dotnetcore2.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 00208798..1e8fcf66 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore2.1 \ - DOTNET_SDK_VERSION=2.1.701 \ + DOTNET_SDK_VERSION=2.1.803 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 9edd2e959757c89ad46bcc4c6a6aa0f8f6148799 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 19 Feb 2020 14:55:05 -0500 Subject: [PATCH 107/234] Update base package list --- base/amazonlinux1.txt | 12 +++++------ base/base-2/amazonlinux2.txt | 42 ++++++++++++++++++------------------ base/base-2/packages.txt | 23 ++++++++++---------- base/packages.txt | 36 +++++++++++++++---------------- 4 files changed, 57 insertions(+), 56 deletions(-) diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt index f44f6cad..773aa0bc 100644 --- a/base/amazonlinux1.txt +++ b/base/amazonlinux1.txt @@ -1,7 +1,7 @@ basesystem-10.0-4.9.amzn1.noarch bash-4.2.46-28.37.amzn1.x86_64 bzip2-libs-1.0.6-8.12.amzn1.x86_64 -ca-certificates-2018.2.22-65.1.20.amzn1.noarch +ca-certificates-2018.2.22-65.1.21.amzn1.noarch chkconfig-1.3.49.3-2.14.amzn1.x86_64 coreutils-8.22-15.52.amzn1.x86_64 curl-7.61.1-12.93.amzn1.x86_64 @@ -10,7 +10,7 @@ db4-4.7.25-18.11.amzn1.x86_64 db4-utils-4.7.25-18.11.amzn1.x86_64 elfutils-libelf-0.168-8.19.amzn1.x86_64 expat-2.1.0-10.21.amzn1.x86_64 -file-libs-5.34-3.37.amzn1.x86_64 +file-libs-5.37-8.48.amzn1.x86_64 filesystem-2.4.30-3.8.amzn1.x86_64 gawk-3.1.7-10.10.amzn1.x86_64 gdbm-1.8.0-36.6.amzn1.x86_64 @@ -36,7 +36,7 @@ libgcc72-7.2.1-2.59.amzn1.x86_64 libgcrypt-1.5.3-12.19.amzn1.x86_64 libgpg-error-1.11-1.12.amzn1.x86_64 libicu-50.1.2-11.12.amzn1.x86_64 -libidn2-0.16-1.2.amzn1.x86_64 +libidn2-2.3.0-1.4.amzn1.x86_64 libnghttp2-1.31.1-2.5.amzn1.x86_64 libpsl-0.6.2-1.2.amzn1.x86_64 libselinux-2.1.10-3.22.amzn1.x86_64 @@ -70,11 +70,11 @@ pinentry-0.7.6-6.11.amzn1.x86_64 pkgconfig-0.27.1-2.7.amzn1.x86_64 popt-1.13-7.7.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.16-1.130.amzn1.x86_64 +python27-2.7.16-1.131.amzn1.x86_64 python27-chardet-2.0.1-7.7.amzn1.noarch python27-iniparse-0.3.1-2.1.9.amzn1.noarch python27-kitchen-1.1.1-5.6.amzn1.noarch -python27-libs-2.7.16-1.130.amzn1.x86_64 +python27-libs-2.7.16-1.131.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 @@ -93,7 +93,7 @@ sysctl-defaults-1.0-1.1.amzn1.noarch system-release-2018.03-0.0.noarch tar-1.26-31.22.amzn1.x86_64 tzdata-2019c-1.73.amzn1.noarch -xz-libs-5.1.2-12alpha.12.amzn1.x86_64 +xz-libs-5.2.2-1.13.amzn1.x86_64 yum-3.4.3-150.70.amzn1.noarch yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 yum-plugin-ovl-1.1.31-46.30.amzn1.noarch diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index e1d58cc0..9519274b 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -1,40 +1,40 @@ amazon-linux-extras-1.6.9-2.amzn2.noarch basesystem-10.0-7.amzn2.0.1.noarch -bash-4.2.46-30.amzn2.x86_64 +bash-4.2.46-33.amzn2.x86_64 bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 -ca-certificates-2018.2.22-70.0.amzn2.noarch +ca-certificates-2019.2.32-76.amzn2.0.1.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 -coreutils-8.22-21.amzn2.x86_64 +coreutils-8.22-24.amzn2.x86_64 cpio-2.11-27.amzn2.x86_64 curl-7.61.1-12.amzn2.0.1.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 -diffutils-3.3-4.amzn2.0.2.x86_64 +diffutils-3.3-5.amzn2.x86_64 elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 -file-libs-5.11-35.amzn2.0.1.x86_64 +file-libs-5.11-35.amzn2.0.2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 findutils-4.5.11-5.amzn2.0.2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 glib2-2.56.1-4.amzn2.x86_64 -glibc-2.26-32.amzn2.0.2.x86_64 -glibc-common-2.26-32.amzn2.0.2.x86_64 -glibc-langpack-en-2.26-32.amzn2.0.2.x86_64 -glibc-minimal-langpack-2.26-32.amzn2.0.2.x86_64 +glibc-2.26-34.amzn2.x86_64 +glibc-common-2.26-34.amzn2.x86_64 +glibc-langpack-en-2.26-34.amzn2.x86_64 +glibc-minimal-langpack-2.26-34.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 gnupg2-2.0.22-5.amzn2.0.3.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 keyutils-libs-1.5.8-3.amzn2.0.2.x86_64 -krb5-libs-1.15.1-20.amzn2.0.1.x86_64 +krb5-libs-1.15.1-37.amzn2.2.2.x86_64 libacl-2.2.51-14.amzn2.x86_64 libassuan-2.1.0-3.amzn2.0.2.x86_64 libattr-2.4.46-12.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 -libcrypt-2.26-32.amzn2.0.2.x86_64 +libcrypt-2.26-34.amzn2.x86_64 libcurl-7.61.1-12.amzn2.0.1.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 @@ -42,7 +42,7 @@ libffi-3.0.13-18.amzn2.0.2.x86_64 libgcc-7.3.1-6.amzn2.0.4.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 libgpg-error-1.12-3.amzn2.0.3.x86_64 -libidn2-2.0.4-1.amzn2.0.2.x86_64 +libidn2-2.3.0-1.amzn2.x86_64 libmetalink-0.1.2-7.amzn2.0.2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 libnghttp2-1.39.2-1.amzn2.x86_64 @@ -60,13 +60,13 @@ ncurses-6.0-8.20170212.amzn2.1.3.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.3.noarch ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 nspr-4.21.0-1.amzn2.0.2.x86_64 -nss-3.44.0-4.amzn2.0.2.x86_64 +nss-3.44.0-7.amzn2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.44.0-5.amzn2.0.2.x86_64 -nss-softokn-freebl-3.44.0-5.amzn2.0.2.x86_64 -nss-sysinit-3.44.0-4.amzn2.0.2.x86_64 -nss-tools-3.44.0-4.amzn2.0.2.x86_64 -nss-util-3.44.0-3.amzn2.0.2.x86_64 +nss-softokn-3.44.0-8.amzn2.x86_64 +nss-softokn-freebl-3.44.0-8.amzn2.x86_64 +nss-sysinit-3.44.0-7.amzn2.x86_64 +nss-tools-3.44.0-7.amzn2.x86_64 +nss-util-3.44.0-4.amzn2.x86_64 openldap-2.4.44-15.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.1.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 @@ -77,11 +77,11 @@ popt-1.13-16.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.16-4.amzn2.x86_64 +python-2.7.16-5.amzn2.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.16-4.amzn2.x86_64 +python-libs-2.7.16-5.amzn2.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 -python-urlgrabber-3.10-8.amzn2.noarch +python-urlgrabber-3.10-9.amzn2.0.1.noarch python2-rpm-4.11.3-40.amzn2.0.3.x86_64 pyxattr-0.5.1-5.amzn2.0.2.x86_64 readline-6.2-10.amzn2.0.2.x86_64 diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index 06d01f50..81a1640c 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -1,25 +1,26 @@ basesystem-10.0-7.amzn2.0.1.noarch bash-4.2.46-30.amzn2.x86_64 -ca-certificates-2018.2.22-70.0.amzn2.noarch +ca-certificates-2019.2.32-76.amzn2.0.1.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-21.amzn2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 -glibc-2.26-32.amzn2.0.2.x86_64 -glibc-all-langpacks-2.26-32.amzn2.0.2.x86_64 -glibc-common-2.26-32.amzn2.0.2.x86_64 -glibc-minimal-langpack-2.26-32.amzn2.0.2.x86_64 +glibc-2.26-34.amzn2.x86_64 +glibc-all-langpacks-2.26-34.amzn2.x86_64 +glibc-common-2.26-34.amzn2.x86_64 +glibc-minimal-langpack-2.26-34.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 keyutils-libs-1.5.8-3.amzn2.0.2.x86_64 -krb5-libs-1.15.1-20.amzn2.0.1.x86_64 +krb5-libs-1.15.1-37.amzn2.2.1.x86_64 libacl-2.2.51-14.amzn2.x86_64 libattr-2.4.46-12.amzn2.0.2.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 libgcc-7.3.1-6.amzn2.0.4.x86_64 +libicu-50.1.2-17.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 libstdc++-7.3.1-6.amzn2.0.4.x86_64 @@ -29,15 +30,15 @@ ncurses-6.0-8.20170212.amzn2.1.3.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.3.noarch ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 nspr-4.21.0-1.amzn2.0.2.x86_64 -nss-softokn-freebl-3.44.0-5.amzn2.0.2.x86_64 -nss-util-3.44.0-3.amzn2.0.2.x86_64 -openssl-libs-1.0.2k-16.amzn2.1.1.x86_64 +nss-softokn-freebl-3.44.0-8.amzn2.x86_64 +nss-util-3.44.0-4.amzn2.x86_64 +openssl-libs-1.0.2k-19.amzn2.0.1.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 popt-1.13-16.amzn2.0.2.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.noarch -system-release-2-10.amzn2.x86_64 -tzdata-2019b-1.amzn2.noarch +system-release-2-11.amzn2.x86_64 +tzdata-2019c-1.amzn2.noarch zlib-1.2.7-17.amzn2.0.2.x86_64 diff --git a/base/packages.txt b/base/packages.txt index 0123bbe9..e29e8ab5 100644 --- a/base/packages.txt +++ b/base/packages.txt @@ -7,7 +7,7 @@ bash-4.2.46-28.37.amzn1.x86_64 binutils-2.25.1-31.base.66.amzn1.x86_64 bzip2-1.0.6-8.12.amzn1.x86_64 bzip2-libs-1.0.6-8.12.amzn1.x86_64 -ca-certificates-2018.2.22-65.1.20.amzn1.noarch +ca-certificates-2018.2.22-65.1.21.amzn1.noarch cairo-1.12.14-6.8.amzn1.x86_64 chkconfig-1.3.49.3-2.14.amzn1.x86_64 compat-gmp4-4.3.2-1.14.amzn1.x86_64 @@ -28,8 +28,8 @@ dejavu-serif-fonts-2.33-6.6.amzn1.noarch diffutils-3.3-4.15.amzn1.x86_64 elfutils-libelf-0.168-8.19.amzn1.x86_64 expat-2.1.0-10.21.amzn1.x86_64 -file-5.34-3.37.amzn1.x86_64 -file-libs-5.34-3.37.amzn1.x86_64 +file-5.37-8.48.amzn1.x86_64 +file-libs-5.37-8.48.amzn1.x86_64 filesystem-2.4.30-3.8.amzn1.x86_64 findutils-4.4.2-6.9.amzn1.x86_64 fontconfig-2.8.0-5.8.amzn1.x86_64 @@ -40,8 +40,8 @@ gdbm-1.8.0-36.6.amzn1.x86_64 ghostscript-fonts-5.50-23.2.7.amzn1.noarch giflib-4.1.6-3.1.6.amzn1.x86_64 glib2-2.36.3-5.21.amzn1.x86_64 -glibc-2.17-260.175.amzn1.x86_64 -glibc-common-2.17-260.175.amzn1.x86_64 +glibc-2.17-292.178.amzn1.x86_64 +glibc-common-2.17-292.178.amzn1.x86_64 gmp-6.0.0-11.16.amzn1.x86_64 gnupg2-2.0.28-2.33.amzn1.x86_64 gnutls-2.12.23-21.18.amzn1.x86_64 @@ -95,7 +95,7 @@ libglvnd-glx-0.2.999-14.20170308git8e6e102.3.amzn1.x86_64 libgomp-6.4.1-1.45.amzn1.x86_64 libgpg-error-1.11-1.12.amzn1.x86_64 libicu-50.1.2-11.12.amzn1.x86_64 -libidn2-0.16-1.2.amzn1.x86_64 +libidn2-2.3.0-1.4.amzn1.x86_64 libjpeg-turbo-1.2.90-8.16.amzn1.x86_64 libmount-2.23.2-59.29.amzn1.x86_64 libnghttp2-1.31.1-2.5.amzn1.x86_64 @@ -181,23 +181,23 @@ popt-1.13-7.7.amzn1.x86_64 procps-3.2.8-45.16.amzn1.x86_64 psmisc-22.20-8.12.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.16-1.129.amzn1.x86_64 +python27-2.7.16-1.130.amzn1.x86_64 python27-iniparse-0.3.1-2.1.9.amzn1.noarch -python27-libs-2.7.16-1.129.amzn1.x86_64 +python27-libs-2.7.16-1.130.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 python27-pyxattr-0.5.0-1.6.amzn1.x86_64 python27-urlgrabber-3.10-8.16.amzn1.noarch -python36-3.6.8-1.14.amzn1.x86_64 -python36-libs-3.6.8-1.14.amzn1.x86_64 +python36-3.6.8-1.15.amzn1.x86_64 +python36-libs-3.6.8-1.15.amzn1.x86_64 python36-pip-9.0.3-1.26.amzn1.noarch python36-setuptools-36.2.7-1.33.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 -rpm-4.11.3-21.75.amzn1.x86_64 -rpm-build-libs-4.11.3-21.75.amzn1.x86_64 -rpm-libs-4.11.3-21.75.amzn1.x86_64 -rpm-python27-4.11.3-21.75.amzn1.x86_64 +rpm-4.11.3-40.76.amzn1.x86_64 +rpm-build-libs-4.11.3-40.76.amzn1.x86_64 +rpm-libs-4.11.3-40.76.amzn1.x86_64 +rpm-python27-4.11.3-40.76.amzn1.x86_64 sed-4.2.1-10.10.amzn1.x86_64 setup-2.8.14-20.12.amzn1.noarch shadow-utils-4.1.4.2-13.10.amzn1.x86_64 @@ -207,16 +207,16 @@ sysctl-defaults-1.0-1.1.amzn1.noarch system-release-2018.03-0.0.noarch tar-1.26-31.22.amzn1.x86_64 ttmkfdir-3.0.9-32.1.5.amzn1.x86_64 -tzdata-2019b-1.72.amzn1.noarch -tzdata-java-2019b-1.72.amzn1.noarch +tzdata-2019c-1.73.amzn1.noarch +tzdata-java-2019c-1.73.amzn1.noarch unzip-6.0-4.10.amzn1.x86_64 urw-fonts-2.4-10.7.amzn1.noarch util-linux-2.23.2-59.29.amzn1.x86_64 which-2.19-6.10.amzn1.x86_64 xorg-x11-font-utils-7.2-11.5.amzn1.x86_64 xorg-x11-fonts-Type1-7.2-9.1.5.amzn1.noarch -xz-5.1.2-12alpha.12.amzn1.x86_64 -xz-libs-5.1.2-12alpha.12.amzn1.x86_64 +xz-5.2.2-1.13.amzn1.x86_64 +xz-libs-5.2.2-1.13.amzn1.x86_64 yum-3.4.3-150.70.amzn1.noarch yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 yum-plugin-priorities-1.1.31-46.30.amzn1.noarch From f589da4398649456e1dd44262a6d476da06d0378 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 19 Feb 2020 14:58:20 -0500 Subject: [PATCH 108/234] Add ruby2.7 runtime --- README.md | 6 ++++-- base/build-all.sh | 2 +- base/dump-ruby27.rb | 30 ++++++++++++++++++++++++++++++ base/dump.sh | 2 +- base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 1 + examples/ruby/lambda_function.rb | 3 ++- ruby2.7/build/Dockerfile | 16 ++++++++++++++++ ruby2.7/run/Dockerfile | 21 +++++++++++++++++++++ 10 files changed, 78 insertions(+), 7 deletions(-) create mode 100644 base/dump-ruby27.rb create mode 100644 ruby2.7/build/Dockerfile create mode 100644 ruby2.7/run/Dockerfile diff --git a/README.md b/README.md index 12b52cfd..08b1dcde 100644 --- a/README.md +++ b/README.md @@ -185,8 +185,8 @@ docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:nodejs12.x app.my # Test a `lambda_handler` function in `lambda_function.py` with an empty event on Python 3.8 docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:python3.8 lambda_function.lambda_handler -# Similarly with Ruby 2.5 -docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:ruby2.5 lambda_function.lambda_handler +# Similarly with Ruby 2.7 +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:ruby2.7 lambda_function.lambda_handler # Test on Go 1.x with a compiled handler named my_handler and a custom event docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:go1.x my_handler '{"some": "event"}' @@ -306,6 +306,7 @@ These follow the Lambda runtime names: - `python3.7` - `python3.8` - `ruby2.5` + - `ruby2.7` - `java8` - `java11` - `go1.x` @@ -322,6 +323,7 @@ These follow the Lambda runtime names: - `build-python3.7` - `build-python3.8` - `build-ruby2.5` + - `build-ruby2.7` - `build-java8` - `build-java11` - `build-go1.x` diff --git a/base/build-all.sh b/base/build-all.sh index d743840c..6b6b2b5e 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 java11 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1" TOP_DIR="${PWD}/.." diff --git a/base/dump-ruby27.rb b/base/dump-ruby27.rb new file mode 100644 index 00000000..035f7988 --- /dev/null +++ b/base/dump-ruby27.rb @@ -0,0 +1,30 @@ +require 'json' +require 'aws-sdk-s3' + +S3_CLIENT = Aws::S3::Client.new({region: "us-east-1"}) + +def lambda_handler(event:, context:) + filename = 'ruby2.7.tgz' + + puts `tar -cpzf /tmp/#{filename} --numeric-owner --ignore-failed-read /var/runtime /var/lang /var/rapid` + + File.open("/tmp/#{filename}", 'rb') do |file| + S3_CLIENT.put_object({ + body: file, + bucket: 'lambci', + key: "fs/#{filename}", + acl: 'public-read', + }) + end + + info = { + 'ENV' => ENV.to_hash, + 'context' => context.instance_variables.each_with_object({}) { |k, h| h[k] = context.instance_variable_get k }, + 'ps aux' => `bash -O extglob -c 'for cmd in /proc/+([0-9])/cmdline; do echo $cmd; xargs -n 1 -0 < $cmd; done'`, + 'proc environ' => `xargs -n 1 -0 < /proc/1/environ`, + } + + print JSON.pretty_generate(info) + + return info +end diff --git a/base/dump.sh b/base/dump.sh index dd6e3896..32628a1f 100755 --- a/base/dump.sh +++ b/base/dump.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="node43 node610 node810 node10x node12x python27 python36 python37 python38 ruby25 java8 java11 go1x dotnetcore20 dotnetcore21 provided" +RUNTIMES="node43 node610 node810 node10x node12x python27 python36 python37 python38 ruby25 ruby27 java8 java11 go1x dotnetcore20 dotnetcore21 provided" for RUNTIME in $RUNTIMES; do echo $RUNTIME diff --git a/base/publish-all.sh b/base/publish-all.sh index decd3730..9c49e46a 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 java11 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index 6a738714..3aa38820 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 java8 java11 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index 1b299cc2..b00d7617 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -29,6 +29,7 @@ docker run --rm -it lambci/lambda:build-python3.8 pip install marisa-trie cd ${EXAMPLES_DIR}/ruby docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda_handler +docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.7 lambda_function.lambda_handler cd ${EXAMPLES_DIR}/java docker run --rm -v "$PWD":/app -w /app gradle gradle build diff --git a/examples/ruby/lambda_function.rb b/examples/ruby/lambda_function.rb index e8287485..9e09a34f 100644 --- a/examples/ruby/lambda_function.rb +++ b/examples/ruby/lambda_function.rb @@ -1,13 +1,14 @@ require 'pp' # docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda_handler +# docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.7 lambda_function.lambda_handler def lambda_handler(event:, context:) info = { 'event' => event, 'ENV' => ENV.to_hash, 'context' => context.instance_variables.each_with_object({}) { |k, h| h[k] = context.instance_variable_get k }, - 'ps aux' => `ps aux`, + 'ps aux' => `bash -O extglob -c 'for cmd in /proc/+([0-9])/cmdline; do echo $cmd; xargs -n 1 -0 < $cmd; done'`, 'proc environ' => `xargs -n 1 -0 < /proc/1/environ`, } diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile new file mode 100644 index 00000000..832065c8 --- /dev/null +++ b/ruby2.7/build/Dockerfile @@ -0,0 +1,16 @@ +FROM lambci/lambda-base-2:build + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_ruby2.7 \ + GEM_HOME=/var/runtime \ + GEM_PATH=/var/task/vendor/bundle/ruby/2.7.0:/opt/ruby/gems/2.7.0 \ + RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib + +RUN rm -rf /var/runtime /var/lang /var/rapid && \ + curl https://lambci.s3.amazonaws.com/fs/ruby2.7.tgz | tar -zx -C / + +# Add these as a separate layer as they get updated frequently +RUN gem update --system --no-document && \ + gem install --no-document bundler -v '~> 2.1' && \ + pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/ruby2.7/run/Dockerfile b/ruby2.7/run/Dockerfile new file mode 100644 index 00000000..f42a59e5 --- /dev/null +++ b/ruby2.7/run/Dockerfile @@ -0,0 +1,21 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/ruby2.7.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_ruby2.7 + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap", "--enable-msg-logs"] From 8c70a0789f967b4e5841357b353f71ecc8fd0d94 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 20 Feb 2020 16:28:13 -0500 Subject: [PATCH 109/234] Update build images to aws-sam-cli 0.42.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 8530d7ac..54bdf496 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 1e8fcf66..837f65ec 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index ea5bc185..3e14ef29 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 00aa14ee..f9ac6786 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 39a0e0f9..fd7e2887 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 2589de67..d389405e 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 1dfa732e..01e20522 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index aaf38c52..fcc1155c 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index a5718e61..81f0a713 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 17282d32..ca5f8913 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 1d449885..80d2bdc8 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 30065f56..7e666295 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 06e65f5b..021cb12c 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 697d6716..2434722e 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 12a791ce..55cc3420 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 832065c8..f41b892f 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.41.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir From 7b2b5f9bd344c3ebe5cad9d773d6449cb6e0c4d0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 21 Feb 2020 15:20:43 -0500 Subject: [PATCH 110/234] Update build images to aws-sam-cli 0.43.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 54bdf496..c806546a 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 837f65ec..6417ce20 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 3e14ef29..39c753fd 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index f9ac6786..a90cca9e 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index fd7e2887..83602dc7 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index d389405e..d0bc3cc3 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 01e20522..29c8c9b3 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index fcc1155c..c1d6a14a 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 81f0a713..9efa92de 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index ca5f8913..315cae3c 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 80d2bdc8..fe612b1c 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 7e666295..55ed5fd9 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 021cb12c..4ed70144 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 2434722e..52064715 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 55cc3420..10efa8b6 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index f41b892f..45843ca4 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.42.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir From 6499a8151c5d23971c13e2cc0b3a667639196381 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 19 Feb 2020 15:41:34 -0500 Subject: [PATCH 111/234] Get rid of diff scripts, they're out of date and confusing --- base/diff-2.sh | 59 ------------------------------ base/diff.sh | 99 -------------------------------------------------- 2 files changed, 158 deletions(-) delete mode 100755 base/diff-2.sh delete mode 100755 base/diff.sh diff --git a/base/diff-2.sh b/base/diff-2.sh deleted file mode 100755 index 8028371f..00000000 --- a/base/diff-2.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -RUNTIMES="nodejs10.x nodejs12.x python3.8 java11" - -rm -rf diff-2 -mkdir -p diff-2 - -for RUNTIME in $RUNTIMES; do - docker pull lambci/lambda:${RUNTIME} - - mkdir -p ./diff-2/${RUNTIME}/docker/var - CONTAINER=$(docker create lambci/lambda:${RUNTIME}) - docker cp ${CONTAINER}:/var/runtime ./diff-2/${RUNTIME}/docker/var - docker cp ${CONTAINER}:/var/lang ./diff-2/${RUNTIME}/docker/var - - curl https://lambci.s3.amazonaws.com/fs/${RUNTIME}.tgz > ./diff-2/${RUNTIME}.tgz - - mkdir -p ./diff-2/${RUNTIME}/lambda - tar -zxf ./diff-2/${RUNTIME}.tgz -C ./diff-2/${RUNTIME}/lambda -- var/runtime var/lang - - tar -ztf ./diff-2/${RUNTIME}.tgz | sed 's/\/$//' | sort > ./diff-2/${RUNTIME}/fs.lambda.txt -done - -curl https://lambci.s3.amazonaws.com/fs/base-2.tgz > ./diff-2/base-2.tgz - -{ tar -ztf ./diff-2/nodejs10.x.tgz; tar -ztf ./diff-2/base-2.tgz; } | grep -v '/$' \ - | grep -v '^dev/' | grep -v '^proc/' | grep -v '^sys/' | sort > ./diff-2/nodejs10.x/fs.lambda.txt - -docker run --rm --entrypoint bash lambci/lambda:nodejs10.x -c \ - 'find() { local d; for d in "$@"; do ls -1A "$d" | while read f; do i="$d/$f"; [ -d "$i" ] && [ ! -L "$i" ] && find "$i" || echo $i; done; done; }; find /' \ - | sed -E 's/^\/+//' | grep -v '^dev/' | grep -v '^proc/' | grep -v '^sys/' | sort > ./diff-2/nodejs10.x/fs.docker.txt - -DIFF_DIR="${PWD}/diff-2" - -cd ${DIFF_DIR}/nodejs10.x -pwd -diff fs.docker.txt fs.lambda.txt | grep -v 'var/runtime/' | grep -v 'var/lang' -echo -diff docker/var/runtime lambda/var/runtime -echo -diff -qr docker lambda - -cd ${DIFF_DIR}/nodejs12.x -pwd -diff docker/var/runtime lambda/var/runtime -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/python3.8 -pwd -diff docker/var/runtime lambda/var/runtime -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/java11 -pwd -diff docker/var/runtime lambda/var/runtime -diff -qr docker lambda -echo diff --git a/base/diff.sh b/base/diff.sh deleted file mode 100755 index c0370c9f..00000000 --- a/base/diff.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/bash - -RUNTIMES="provided nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 go1.x dotnetcore2.0 dotnetcore2.1" - -rm -rf diff -mkdir -p diff - -for RUNTIME in $RUNTIMES; do - docker pull lambci/lambda:${RUNTIME} - - mkdir -p ./diff/${RUNTIME}/docker/var - CONTAINER=$(docker create lambci/lambda:${RUNTIME}) - docker cp ${CONTAINER}:/var/runtime ./diff/${RUNTIME}/docker/var - docker cp ${CONTAINER}:/var/lang ./diff/${RUNTIME}/docker/var - - curl https://lambci.s3.amazonaws.com/fs/${RUNTIME}.tgz > ./diff/${RUNTIME}.tgz - - mkdir -p ./diff/${RUNTIME}/lambda - tar -zxf ./diff/${RUNTIME}.tgz -C ./diff/${RUNTIME}/lambda -- var/runtime var/lang - - tar -ztf ./diff/${RUNTIME}.tgz | sed 's/\/$//' | sort > ./diff/${RUNTIME}/fs.lambda.txt - - curl https://lambci.s3.amazonaws.com/fs/${RUNTIME}.fs.txt > ./diff/${RUNTIME}/fs.full.lambda.txt -done - -curl https://lambci.s3.amazonaws.com/fs/base.tgz > ./diff/base.tgz - -{ tar -ztf ./diff/python2.7.tgz; tar -ztf ./diff/base.tgz; } | sed 's/\/$//' | sort > ./diff/python2.7/fs.lambda.txt - -docker run --rm --entrypoint find lambci/lambda:python2.7 / | sed 's/^\///' | sort > ./diff/python2.7/fs.docker.txt - -DIFF_DIR="${PWD}/diff" - -cd ${DIFF_DIR}/python2.7 -pwd -diff fs.docker.txt fs.lambda.txt | grep -v '^< dev/' | grep -v '^< proc/' | grep -v '^< sys/' | grep -v 'var/runtime/' -echo -diff docker/var/runtime/awslambda/bootstrap.py lambda/var/runtime/awslambda/bootstrap.py -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/nodejs4.3 -pwd -diff docker/var/runtime/node_modules/awslambda/index.js lambda/var/runtime/node_modules/awslambda/index.js -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/nodejs6.10 -pwd -diff docker/var/runtime/node_modules/awslambda/index.js lambda/var/runtime/node_modules/awslambda/index.js -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/nodejs8.10 -pwd -diff docker/var/runtime/node_modules/awslambda/index.js lambda/var/runtime/node_modules/awslambda/index.js -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/python3.6 -pwd -diff docker/var/runtime/awslambda/bootstrap.py lambda/var/runtime/awslambda/bootstrap.py -diff -qr docker lambda | grep -v __pycache__ -echo - -cd ${DIFF_DIR}/python3.7 -pwd -diff docker/var/runtime/bootstrap lambda/var/runtime/bootstrap -diff docker/var/runtime/bootstrap.py lambda/var/runtime/bootstrap.py -diff docker/var/runtime/lambda_runtime_client.py lambda/var/runtime/lambda_runtime_client.py -diff -qr docker lambda | grep -v __pycache__ -echo - -cd ${DIFF_DIR}/ruby2.5 -pwd -diff docker/var/runtime/bootstrap lambda/var/runtime/bootstrap -diff docker/var/runtime/lib lambda/var/runtime/lib -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/java8 -pwd -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/go1.x -pwd -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/dotnetcore2.0 -pwd -diff -qr docker lambda -echo - -cd ${DIFF_DIR}/dotnetcore2.1 -pwd -diff -qr docker lambda -echo From e4e6effe5ada88d61d1a5258a89113adee28756d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 23 Feb 2020 14:36:07 -0500 Subject: [PATCH 112/234] Drop aws-lambda-builders back to 0.4.0 on build-python2.7 image --- python2.7/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index e419c140..d14a60e1 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python && \ - pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH From 4fa75bbbae85813a82c8951726708e3b29760efc Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 23 Feb 2020 14:48:47 -0500 Subject: [PATCH 113/234] Lock virtualenv in build-python2.7 image --- python2.7/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index d14a60e1..cdf9be6f 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U virtualenv pipenv --no-cache-dir && \ + pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir From 9dc4f4020183954b483ed4911d8cf743b2667da3 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 23 Feb 2020 14:53:41 -0500 Subject: [PATCH 114/234] Update build-python3.6 to Python 3.6.10 --- python3.6/build/Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 55ed5fd9..1632b33e 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -7,14 +7,15 @@ ENV PATH=/var/lang/bin:$PATH \ PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig RUN rm -rf /var/runtime /var/lang && \ + export PYTHON_VERSION=3.6.10 && \ curl https://lambci.s3.amazonaws.com/fs/python3.6.tgz | tar -xz -C / && \ sed -i '/^prefix=/c\prefix=/var/lang' /var/lang/lib/pkgconfig/python-3.6.pc && \ - curl https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz | tar -xJ && \ - cd Python-3.6.9 && \ + curl https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz | tar -xJ && \ + cd Python-${PYTHON_VERSION} && \ LIBS="$LIBS -lutil -lrt" ./configure --prefix=/var/lang && \ make -j$(getconf _NPROCESSORS_ONLN) libinstall libainstall inclinstall && \ cd .. && \ - rm -rf Python-3.6.9 + rm -rf Python-${PYTHON_VERSION} # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ From 28b32fed2d8445ce091e7347904c76b300d66acc Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 25 Feb 2020 16:50:19 -0500 Subject: [PATCH 115/234] Update to Go 1.14 for build-go1.x image --- base/dump-go1x/go.mod | 2 +- examples/go1.x/go.mod | 2 +- go1.x/build/Dockerfile | 2 +- go1.x/run/go.mod | 2 +- provided/run/go.mod | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/base/dump-go1x/go.mod b/base/dump-go1x/go.mod index 6e9e6186..54262d7d 100644 --- a/base/dump-go1x/go.mod +++ b/base/dump-go1x/go.mod @@ -5,4 +5,4 @@ require ( github.com/aws/aws-sdk-go-v2 v0.17.0 ) -go 1.13 +go 1.14 diff --git a/examples/go1.x/go.mod b/examples/go1.x/go.mod index 6130d509..258e8af4 100644 --- a/examples/go1.x/go.mod +++ b/examples/go1.x/go.mod @@ -2,4 +2,4 @@ module handler require github.com/aws/aws-lambda-go v1.13.3 -go 1.13 +go 1.14 diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 39c753fd..2ea015d9 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html -ENV GOLANG_VERSION=1.13.4 \ +ENV GOLANG_VERSION=1.14 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x diff --git a/go1.x/run/go.mod b/go1.x/run/go.mod index d5a93364..21bd0b6d 100644 --- a/go1.x/run/go.mod +++ b/go1.x/run/go.mod @@ -2,4 +2,4 @@ module aws-lambda-mock require github.com/aws/aws-lambda-go v1.13.3 -go 1.13 +go 1.14 diff --git a/provided/run/go.mod b/provided/run/go.mod index e2aded75..d5e3372d 100644 --- a/provided/run/go.mod +++ b/provided/run/go.mod @@ -6,4 +6,4 @@ require ( github.com/rjeczalik/notify v0.9.2 ) -go 1.13 +go 1.14 From 238109c838206e67dd1691bfb5fb94babaf48c1f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 5 Mar 2020 13:49:59 -0500 Subject: [PATCH 116/234] Update aws-lambda-builders to 0.8.0 - update gradle to 6.2.2 for java build images - update poetry to 1.0.5 for python build images --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 6 +++--- java8/build/Dockerfile | 6 +++--- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 4 ++-- python3.7/build/Dockerfile | 4 ++-- python3.8/build/Dockerfile | 4 ++-- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 24 insertions(+), 24 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index c806546a..56300a39 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 6417ce20..128fa38c 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 2ea015d9..a489f848 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index a90cca9e..1dc9ceef 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.1.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.2.2-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 83602dc7..0af152d3 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.1.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.2.2-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.1.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index d0bc3cc3..af82ae5b 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 29c8c9b3..4ae5068b 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index c1d6a14a..1ac6c54f 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 9efa92de..1def5379 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 315cae3c..e9cdccdd 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index fe612b1c..d3e29468 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index cdf9be6f..0a1980fd 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,7 +9,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 1632b33e..0aa12a29 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 4ed70144..feb94d15 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,7 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 52064715..de7940c4 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,7 +12,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.3/get-poetry.py | POETRY_VERSION=1.0.3 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 10efa8b6..6f5d79f8 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 45843ca4..987b398a 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.7.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir From 46030e15d30d5a536d564bec5fd54644994bebec Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 10 Mar 2020 13:02:03 -0400 Subject: [PATCH 117/234] Update aws-sam-cli to 0.44.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 56300a39..854745e2 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 128fa38c..a8c07c1d 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index a489f848..c1c51bbf 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 1dc9ceef..bd63bd8e 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 0af152d3..c9d23864 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index af82ae5b..b8f26751 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 4ae5068b..108a1933 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 1ac6c54f..0251db72 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 1def5379..0dabd4b4 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index e9cdccdd..54046c81 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index d3e29468..d0c3e177 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 0aa12a29..36167458 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index feb94d15..b3a98dc0 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index de7940c4..bf63fd4a 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 6f5d79f8..6225e25f 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 987b398a..50c12f7a 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.43.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir From ec4828c9c8b9e280bc1cb301d49084069021043e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 26 Mar 2020 22:25:31 -0400 Subject: [PATCH 118/234] Update aws-sam-cli in build images to 0.46.2 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 854745e2..20f1ef4a 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index a8c07c1d..0113e36c 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index c1c51bbf..62eb348c 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index bd63bd8e..b2d2a3d7 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index c9d23864..cf02f804 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index b8f26751..155d0209 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 108a1933..7c5a5745 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 0251db72..0533b0ba 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 0dabd4b4..4d786f0f 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 54046c81..4aa6ff11 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index d0c3e177..e252cd69 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 36167458..9dd9e2ba 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index b3a98dc0..de86449f 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index bf63fd4a..026ce47b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 6225e25f..fbce4a60 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 50c12f7a..76c179f7 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.44.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir From ab9d48d0bc2f3edfe95bde2ea7bb56fb91e031ad Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 27 Mar 2020 16:04:57 -0400 Subject: [PATCH 119/234] Add dotnetcore3.1 runtime --- .gitignore | 5 + README.md | 8 +- base/build-all.sh | 2 +- base/dump-dotnetcore31/Function.cs | 78 +++++++++++++++ .../aws-lambda-tools-defaults.json | 8 ++ .../dump-dotnetcore31.csproj | 20 ++++ base/dump.sh | 2 +- base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 4 + dotnetcore3.1/build/Dockerfile | 26 +++++ dotnetcore3.1/run/Dockerfile | 21 ++++ examples/dotnetcore3.1/Function.cs | 30 ++++++ examples/dotnetcore3.1/README.md | 9 ++ examples/dotnetcore3.1/test.csproj | 13 +++ examples/dotnetcore3.1/test.sln | 17 ++++ project.code-workspace | 98 ++++++++++--------- 17 files changed, 292 insertions(+), 53 deletions(-) create mode 100644 base/dump-dotnetcore31/Function.cs create mode 100644 base/dump-dotnetcore31/aws-lambda-tools-defaults.json create mode 100644 base/dump-dotnetcore31/dump-dotnetcore31.csproj create mode 100644 dotnetcore3.1/build/Dockerfile create mode 100644 dotnetcore3.1/run/Dockerfile create mode 100644 examples/dotnetcore3.1/Function.cs create mode 100644 examples/dotnetcore3.1/README.md create mode 100644 examples/dotnetcore3.1/test.csproj create mode 100644 examples/dotnetcore3.1/test.sln diff --git a/.gitignore b/.gitignore index 69e3ff9d..4525d854 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ base/dump-dotnetcore20/bin base/dump-dotnetcore20/obj base/dump-dotnetcore21/bin base/dump-dotnetcore21/obj +base/dump-dotnetcore31/bin +base/dump-dotnetcore31/obj dotnetcore2.0/run/MockBootstraps/bin dotnetcore2.0/run/MockBootstraps/obj dotnetcore2.1/run/MockBootstraps/bin @@ -25,6 +27,9 @@ examples/dotnetcore2.0/pub examples/dotnetcore2.1/bin examples/dotnetcore2.1/obj examples/dotnetcore2.1/pub +examples/dotnetcore3.1/bin +examples/dotnetcore3.1/obj +examples/dotnetcore3.1/pub examples/java/bin examples/java/build examples/go1.x/handler diff --git a/README.md b/README.md index 08b1dcde..907bfaf2 100644 --- a/README.md +++ b/README.md @@ -197,9 +197,9 @@ docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:go1.x my_handler # http://docs.aws.amazon.com/lambda/latest/dg/create-deployment-pkg-zip-java.html docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:java11 org.myorg.MyHandler -# Test on .NET Core 2.1 given a test.dll assembly in the current directory, +# Test on .NET Core 3.1 given a test.dll assembly in the current directory, # a class named Function with a FunctionHandler method, and a custom event -docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:dotnetcore2.1 test::test.Function::FunctionHandler '{"some": "event"}' +docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:dotnetcore3.1 test::test.Function::FunctionHandler '{"some": "event"}' # Test with a provided runtime (assumes you have a `bootstrap` executable in the current directory) docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:provided handler '{"some": "event"}' @@ -233,7 +233,7 @@ docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x go mod downl # For .NET Core, this will publish the compiled code to `./pub`, # which you can then use to run with `-v "$PWD"/pub:/var/task` -docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.1 dotnet publish -c Release -o pub +docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore3.1 dotnet publish -c Release -o pub # Run custom commands on a build container docker run --rm lambci/lambda:build-python3.8 aws --version @@ -312,6 +312,7 @@ These follow the Lambda runtime names: - `go1.x` - `dotnetcore2.0` - `dotnetcore2.1` + - `dotnetcore3.1` - `provided` - `build-nodejs4.3` - `build-nodejs6.10` @@ -329,6 +330,7 @@ These follow the Lambda runtime names: - `build-go1.x` - `build-dotnetcore2.0` - `build-dotnetcore2.1` + - `build-dotnetcore3.1` - `build-provided` ## Verifying images diff --git a/base/build-all.sh b/base/build-all.sh index 6b6b2b5e..92556d58 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1 dotnetcore3.1" TOP_DIR="${PWD}/.." diff --git a/base/dump-dotnetcore31/Function.cs b/base/dump-dotnetcore31/Function.cs new file mode 100644 index 00000000..6cf55546 --- /dev/null +++ b/base/dump-dotnetcore31/Function.cs @@ -0,0 +1,78 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Threading.Tasks; + +using Amazon.Lambda.Core; +using Amazon.S3; + +[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))] + +namespace dump_dotnetcore31 +{ + public class Function + { + /// + /// Lambda function to dump the container directories /var/lang + /// and /var/runtime and upload the resulting archive to S3 + /// + /// + public async Task FunctionHandler(object invokeEvent, ILambdaContext context) + { + string filename = "dotnetcore3.1.tgz"; + string cmd = $"tar -cpzf /tmp/{filename} --numeric-owner --ignore-failed-read /var/runtime /var/lang"; + + Console.WriteLine($"invokeEvent: {invokeEvent}"); + Console.WriteLine($"context.RemainingTime: {context.RemainingTime}"); + + Console.WriteLine("Parent cmdline:"); + Console.WriteLine(File.ReadAllText("/proc/1/cmdline").Replace("\0", " ")); + + Console.WriteLine("Parent env:"); + RunShell("xargs --null --max-args=1 < /proc/1/environ"); + + Console.WriteLine("This cmdline:"); + Console.WriteLine(File.ReadAllText($"/proc/{Process.GetCurrentProcess().Id}/cmdline").Replace("\0", " ")); + + Console.WriteLine("This env:"); + RunShell($"xargs --null --max-args=1 < /proc/{Process.GetCurrentProcess().Id}/environ"); + + Console.WriteLine($"Current working directory: {Directory.GetCurrentDirectory()}"); + + RunShell(cmd); + + Console.WriteLine("Zipping done! Uploading..."); + + var s3Client = new AmazonS3Client(); + var response = await s3Client.PutObjectAsync(new Amazon.S3.Model.PutObjectRequest + { + BucketName = "lambci", + Key = $"fs/{filename}", + FilePath = $"/tmp/{filename}", + CannedACL = S3CannedACL.PublicRead, + }); + + Console.WriteLine("Uploading done!"); + + return response.HttpStatusCode.ToString(); + } + + private static Process RunShell(string cmd) + { + var escapedArgs = cmd.Replace("\"", "\\\""); + var process = new Process + { + StartInfo = new ProcessStartInfo + { + FileName = "/bin/sh", + Arguments = $"-c \"{escapedArgs}\"", + UseShellExecute = false, + CreateNoWindow = true, + } + }; + process.Start(); + process.WaitForExit(); + return process; + } + } +} diff --git a/base/dump-dotnetcore31/aws-lambda-tools-defaults.json b/base/dump-dotnetcore31/aws-lambda-tools-defaults.json new file mode 100644 index 00000000..426ac9cb --- /dev/null +++ b/base/dump-dotnetcore31/aws-lambda-tools-defaults.json @@ -0,0 +1,8 @@ +{ + "configuration": "Release", + "framework": "netcoreapp3.1", + "function-runtime": "dotnetcore3.1", + "function-memory-size": 3008, + "function-timeout": 60, + "function-handler": "dump_dotnetcore31::dump_dotnetcore31.Function::FunctionHandler" +} diff --git a/base/dump-dotnetcore31/dump-dotnetcore31.csproj b/base/dump-dotnetcore31/dump-dotnetcore31.csproj new file mode 100644 index 00000000..8785cb12 --- /dev/null +++ b/base/dump-dotnetcore31/dump-dotnetcore31.csproj @@ -0,0 +1,20 @@ + + + + netcoreapp3.1 + dump_dotnetcore31 + true + dump_dotnetcore31 + + + + + + + + + + + + + diff --git a/base/dump.sh b/base/dump.sh index 32628a1f..608e2bae 100755 --- a/base/dump.sh +++ b/base/dump.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="node43 node610 node810 node10x node12x python27 python36 python37 python38 ruby25 ruby27 java8 java11 go1x dotnetcore20 dotnetcore21 provided" +RUNTIMES="node43 node610 node810 node10x node12x python27 python36 python37 python38 ruby25 ruby27 java8 java11 go1x dotnetcore20 dotnetcore21 dotnetcore31 provided" for RUNTIME in $RUNTIMES; do echo $RUNTIME diff --git a/base/publish-all.sh b/base/publish-all.sh index 9c49e46a..f2bc7842 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1 dotnetcore3.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index 3aa38820..2e36b3e0 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1 dotnetcore3.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index b00d7617..13656d00 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -44,6 +44,10 @@ cd ${EXAMPLES_DIR}/dotnetcore2.1 docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore2.1 dotnet publish -c Release -o pub docker run --rm -v "$PWD"/pub:/var/task lambci/lambda:dotnetcore2.1 test::test.Function::FunctionHandler '{"some": "event"}' +cd ${EXAMPLES_DIR}/dotnetcore3.1 +docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore3.1 dotnet publish -c Release -o pub +docker run --rm -v "$PWD"/pub:/var/task lambci/lambda:dotnetcore3.1 test::test.Function::FunctionHandler '{"some": "event"}' + cd ${EXAMPLES_DIR}/go1.x docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'go mod download && go build handler.go' docker run --rm -v "$PWD":/var/task lambci/lambda:go1.x handler '{"Records": []}' diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile new file mode 100644 index 00000000..fce33dd9 --- /dev/null +++ b/dotnetcore3.1/build/Dockerfile @@ -0,0 +1,26 @@ +FROM lambci/lambda-base-2:build + +# Run: docker run --rm --entrypoint dotnet lambci/lambda:dotnetcore3.1 --info +# Check https://dotnet.microsoft.com/download/dotnet-core/3.1 for versions +ENV DOTNET_ROOT=/var/lang/bin +ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ + DOTNET_SDK_VERSION=3.1.201 \ + DOTNET_CLI_TELEMETRY_OPTOUT=1 \ + NUGET_XMLDOC_MODE=skip + +RUN rm -rf /var/runtime /var/lang && \ + curl https://lambci.s3.amazonaws.com/fs/dotnetcore3.1.tgz | tar -zx -C / && \ + curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ + mkdir /tmp/warmup && \ + cd /tmp/warmup && \ + dotnet new && \ + cd / && \ + rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet + +# Add these as a separate layer as they get updated frequently +RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir && \ + dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 + +CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/run/Dockerfile b/dotnetcore3.1/run/Dockerfile new file mode 100644 index 00000000..8209ebd4 --- /dev/null +++ b/dotnetcore3.1/run/Dockerfile @@ -0,0 +1,21 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/dotnetcore3.1.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap", "--enable-msg-logs"] diff --git a/examples/dotnetcore3.1/Function.cs b/examples/dotnetcore3.1/Function.cs new file mode 100644 index 00000000..4a4ea534 --- /dev/null +++ b/examples/dotnetcore3.1/Function.cs @@ -0,0 +1,30 @@ +// Compile with: +// docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore3.1 dotnet publish -c Release -o pub + +// Run with: +// docker run --rm -v "$PWD"/pub:/var/task lambci/lambda:dotnetcore3.1 test::test.Function::FunctionHandler '{"some": "event"}' + +using System; +using System.Collections; +using Amazon.Lambda.Core; + +[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))] + +namespace test +{ + public class Function + { + public string FunctionHandler(object inputEvent, ILambdaContext context) + { + Console.WriteLine($"inputEvent: {inputEvent}"); + Console.WriteLine($"RemainingTime: {context.RemainingTime}"); + + foreach (DictionaryEntry kv in Environment.GetEnvironmentVariables()) + { + Console.WriteLine($"{kv.Key}={kv.Value}"); + } + + return "Hello World!"; + } + } +} diff --git a/examples/dotnetcore3.1/README.md b/examples/dotnetcore3.1/README.md new file mode 100644 index 00000000..cdc506a2 --- /dev/null +++ b/examples/dotnetcore3.1/README.md @@ -0,0 +1,9 @@ +# .NET Core 3.1 docker-lambda example + +```sh +# Will place the compiled code in `./pub` +docker run --rm -v "$PWD":/var/task lambci/lambda:build-dotnetcore3.1 dotnet publish -c Release -o pub + +# Then you can run using that as the task directory +docker run --rm -v "$PWD"/pub:/var/task lambci/lambda:dotnetcore3.1 test::test.Function::FunctionHandler '{"some": "event"}' +``` diff --git a/examples/dotnetcore3.1/test.csproj b/examples/dotnetcore3.1/test.csproj new file mode 100644 index 00000000..ade4bc4c --- /dev/null +++ b/examples/dotnetcore3.1/test.csproj @@ -0,0 +1,13 @@ + + + + netcoreapp3.1 + true + + + + + + + + diff --git a/examples/dotnetcore3.1/test.sln b/examples/dotnetcore3.1/test.sln new file mode 100644 index 00000000..2de30541 --- /dev/null +++ b/examples/dotnetcore3.1/test.sln @@ -0,0 +1,17 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test", "test.csproj", "{0A83D120-2336-4F30-86F1-DC045C3C9B90}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A83D120-2336-4F30-86F1-DC045C3C9B90}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/project.code-workspace b/project.code-workspace index 00529d7f..32ca28b3 100644 --- a/project.code-workspace +++ b/project.code-workspace @@ -1,51 +1,57 @@ { "folders": [ - { - "path": "." - }, - { - "path": "go1.x/run" - }, - { - "path": "provided/run" - }, - { - "path": "examples/go1.x" - }, - { - "path": "base/dump-go1x" - }, - { - "path": "base/dump-java11" - }, - { - "path": "base/dump-java8" - }, - { - "path": "examples/java" - }, - { - "path": "java8/run/lambda-runtime-mock" - }, - { - "path": "base/dump-dotnetcore20" - }, - { - "path": "base/dump-dotnetcore21" - }, - { - "path": "examples/dotnetcore2.0" - }, - { - "path": "examples/dotnetcore2.1" - }, - { - "path": "dotnetcore2.0/run/MockBootstraps" - }, - { - "path": "dotnetcore2.1/run/MockBootstraps" - } - ], + { + "path": "." + }, + { + "path": "go1.x/run" + }, + { + "path": "provided/run" + }, + { + "path": "examples/go1.x" + }, + { + "path": "base/dump-go1x" + }, + { + "path": "base/dump-java11" + }, + { + "path": "base/dump-java8" + }, + { + "path": "examples/java" + }, + { + "path": "java8/run/lambda-runtime-mock" + }, + { + "path": "base/dump-dotnetcore20" + }, + { + "path": "base/dump-dotnetcore21" + }, + { + "path": "base/dump-dotnetcore31" + }, + { + "path": "examples/dotnetcore2.0" + }, + { + "path": "examples/dotnetcore2.1" + }, + { + "path": "examples/dotnetcore3.1" + }, + { + "path": "dotnetcore2.0/run/MockBootstraps" + }, + { + "path": "dotnetcore2.1/run/MockBootstraps" + } + ], "settings": { "java.configuration.updateBuildConfiguration": "automatic" } From dfff6bc24ce342aaa197034fa4dedcb9b29ceb5f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 1 Apr 2020 10:13:11 -0400 Subject: [PATCH 120/234] Update aws-sam-cli to 0.47.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 20f1ef4a..c63c947e 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 0113e36c..e6ab925d 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index fce33dd9..df7611e9 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 62eb348c..217751d1 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index b2d2a3d7..5e81fc19 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index cf02f804..1c71f507 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 155d0209..9abd8136 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 7c5a5745..f6906a83 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 0533b0ba..529f29ff 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 4d786f0f..e65d50f5 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 4aa6ff11..428577fa 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index e252cd69..1e04e95b 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 9dd9e2ba..b4d3f860 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index de86449f..e5d1caad 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 026ce47b..7802847a 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index fbce4a60..d35ccbd3 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 76c179f7..4c7d0dea 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.46.2 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir From 33ddef3a536d356520f8f27747d20b0671c2ab28 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 1 Apr 2020 17:46:41 -0400 Subject: [PATCH 121/234] Update nodejs-native-module to nodejs12.x --- README.md | 2 +- base/test-all.sh | 1 + .../nodejs-native-module/package-lock.json | 493 ++++++++++++++++++ examples/nodejs-native-module/package.json | 4 +- examples/nodejs-native-module/test.js | 4 +- 5 files changed, 499 insertions(+), 5 deletions(-) create mode 100644 examples/nodejs-native-module/package-lock.json diff --git a/README.md b/README.md index 907bfaf2..324dc5c0 100644 --- a/README.md +++ b/README.md @@ -223,7 +223,7 @@ To use the build images, for compilation, deployment, etc: ```sh # To compile native deps in node_modules -docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs12.x npm rebuild +docker run --rm -v "$PWD":/var/task lambci/lambda:build-nodejs12.x npm rebuild --build-from-source # To install defined poetry dependencies docker run --rm -v "$PWD":/var/task lambci/lambda:build-python3.8 poetry install diff --git a/base/test-all.sh b/base/test-all.sh index 13656d00..4d8f75e7 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -13,6 +13,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.handler docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs12.x index.handler cd ${EXAMPLES_DIR}/nodejs-native-module +npm install npm run build npm test diff --git a/examples/nodejs-native-module/package-lock.json b/examples/nodejs-native-module/package-lock.json new file mode 100644 index 00000000..4efd95c6 --- /dev/null +++ b/examples/nodejs-native-module/package-lock.json @@ -0,0 +1,493 @@ +{ + "name": "module-native", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-4.0.1.tgz", + "integrity": "sha512-hSIZHkUxIDS5zA2o00Kf2O5RfVbQ888n54xQoF/eIaquU4uaLxK8vhhBdktd0B3n2MjkcAWzv4mnhogykBKOUQ==", + "requires": { + "node-addon-api": "^2.0.0", + "node-pre-gyp": "0.14.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "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=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "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=" + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "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.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "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=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "needle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.3.tgz", + "integrity": "sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-addon-api": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.0.tgz", + "integrity": "sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA==" + }, + "node-pre-gyp": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz", + "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "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", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "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=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "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=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "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==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "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", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } +} diff --git a/examples/nodejs-native-module/package.json b/examples/nodejs-native-module/package.json index c6fbc20c..7a043bda 100644 --- a/examples/nodejs-native-module/package.json +++ b/examples/nodejs-native-module/package.json @@ -3,10 +3,10 @@ "version": "1.0.0", "main": "index.js", "scripts": { - "build": "docker run --rm -v \"$PWD\":/var/task lambci/lambda:build-nodejs6.10 npm rebuild", + "build": "docker run --rm -v \"$PWD\":/var/task lambci/lambda:build-nodejs12.x npm rebuild --build-from-source", "test": "node test.js" }, "dependencies": { - "bcrypt": "^0.8.6" + "bcrypt": "^4.0.1" } } diff --git a/examples/nodejs-native-module/test.js b/examples/nodejs-native-module/test.js index 3fc5775d..539cbcf7 100644 --- a/examples/nodejs-native-module/test.js +++ b/examples/nodejs-native-module/test.js @@ -1,9 +1,9 @@ var dockerLambda = require('../..') -var match = dockerLambda({ event: { password: 'lambda-docker' }, dockerImage: 'lambci/lambda:nodejs6.10' }) +var match = dockerLambda({ event: { password: 'lambda-docker' }, dockerImage: 'lambci/lambda:nodejs12.x' }) console.log(match === 'Matches!' ? 'Match Passed' : 'Match Failed: ' + match) -var nonMatch = dockerLambda({ event: { password: 'lambda-mocker' }, dockerImage: 'lambci/lambda:nodejs6.10' }) +var nonMatch = dockerLambda({ event: { password: 'lambda-mocker' }, dockerImage: 'lambci/lambda:nodejs12.x' }) console.log(nonMatch === 'NopeNopeNope' ? 'Non-Match Passed' : 'Non-Match Failed: ' + nonMatch) From 20bcae1af655c22796ccf7dd11772a4b5defff66 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 9 Apr 2020 09:55:40 -0400 Subject: [PATCH 122/234] Update build-go1.x image to Go 1.14.2 --- go1.x/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 217751d1..0de6bff6 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html -ENV GOLANG_VERSION=1.14 \ +ENV GOLANG_VERSION=1.14.2 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x From 3399da3b483ae5f1c3cd127036ccdb180e91e81a Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 22 Apr 2020 13:03:37 -0400 Subject: [PATCH 123/234] Rename VSCode workspace --- project.code-workspace => docker-lambda.code-workspace | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename project.code-workspace => docker-lambda.code-workspace (100%) diff --git a/project.code-workspace b/docker-lambda.code-workspace similarity index 100% rename from project.code-workspace rename to docker-lambda.code-workspace From fab2c2563b19eb3788b6c681fe123f526bd8f753 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 29 Apr 2020 11:43:48 -0400 Subject: [PATCH 124/234] Ensure we reinstall glibc in build images --- base/build-2/Dockerfile | 3 ++- base/build-all.sh | 4 ++-- base/build/Dockerfile | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/base/build-2/Dockerfile b/base/build-2/Dockerfile index fb4d2a1d..3c303ea7 100644 --- a/base/build-2/Dockerfile +++ b/base/build-2/Dockerfile @@ -11,7 +11,8 @@ ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin COPY --from=0 /installroot/etc /etc/ COPY --from=0 /installroot/usr /usr/ -RUN yum install -y glibc-langpack-en && \ +RUN yum reinstall -y filesystem setup glibc-common glibc; \ + yum install -y glibc-langpack-en && \ yum groupinstall -y development && \ yum install -y which clang cmake python-devel python3-devel amazon-linux-extras && \ amazon-linux-extras install -y docker && \ diff --git a/base/build-all.sh b/base/build-all.sh index 92556d58..9b23660d 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -11,7 +11,7 @@ for RUNTIME in $RUNTIMES; do [ -x ./update_libs.sh ] && ./update_libs.sh - docker build -t lambci/lambda:${RUNTIME} . + docker build --no-cache -t lambci/lambda:${RUNTIME} . done for RUNTIME in $RUNTIMES; do @@ -19,5 +19,5 @@ for RUNTIME in $RUNTIMES; do cd ${TOP_DIR}/${RUNTIME}/build - docker build -t lambci/lambda:build-${RUNTIME} . + docker build --no-cache -t lambci/lambda:build-${RUNTIME} . done diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 9f0e95dd..89e47e59 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -14,7 +14,7 @@ yum_conf.write(f); \ f.close();" && \ rpm --rebuilddb && \ yum install -y yum-plugin-ovl && \ - yum reinstall -y setup pam shadow-utils audit-libs && \ + yum reinstall -y setup pam shadow-utils audit-libs openssl glibc-common glibc && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ ImageMagick-devel cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ From 3a329c9195848e1508d661e877d7435be875c6da Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 30 Apr 2020 15:42:41 -0400 Subject: [PATCH 125/234] Update aws-sam-cli to 0.48.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index c63c947e..7494b250 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e6ab925d..153188a4 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index df7611e9..bf6431b0 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 0de6bff6..67b9e6e2 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 5e81fc19..cd471b8c 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 1c71f507..af9cfc54 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 9abd8136..f892cb15 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index f6906a83..9b7f9d69 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 529f29ff..c4727d3a 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index e65d50f5..c7383946 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 428577fa..cfaa3291 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 1e04e95b..5df95270 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index b4d3f860..16cd8837 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index e5d1caad..a5326e98 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 7802847a..edbf910b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index d35ccbd3..93240147 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 4c7d0dea..c6c505cd 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.47.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir From 50af6ebe3788dd1251ad1d6f885112e40f93d944 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 8 May 2020 08:50:50 -0400 Subject: [PATCH 126/234] Explicitly add wheel back to python build images --- base/build-2/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/base/build-2/Dockerfile b/base/build-2/Dockerfile index 3c303ea7..a0d07fbd 100644 --- a/base/build-2/Dockerfile +++ b/base/build-2/Dockerfile @@ -16,6 +16,6 @@ RUN yum reinstall -y filesystem setup glibc-common glibc; \ yum groupinstall -y development && \ yum install -y which clang cmake python-devel python3-devel amazon-linux-extras && \ amazon-linux-extras install -y docker && \ - pip3 install -U pip setuptools --no-cache-dir && \ + pip3 install -U pip setuptools wheel --no-cache-dir && \ yum clean all && \ rm -rf /var/cache/yum diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 16cd8837..c801b216 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -18,7 +18,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf Python-${PYTHON_VERSION} # Add these as a separate layer as they get updated frequently -RUN pip install -U pip setuptools --no-cache-dir && \ +RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index a5326e98..51e6385b 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -10,7 +10,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/python3.7.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U pip setuptools --no-cache-dir && \ +RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index edbf910b..d44812dd 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -10,7 +10,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/python3.8.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U pip setuptools --no-cache-dir && \ +RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir From b6d847dc0f40ea87f1f06f39b700a5afaa718a42 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 8 May 2020 09:21:20 -0400 Subject: [PATCH 127/234] Also add wheel and setuptools to base build image --- base/build/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 89e47e59..6ddad545 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -23,5 +23,6 @@ f.close();" && \ alternatives --set g++ /usr/bin/g++48 && \ alternatives --set cpp /usr/bin/cpp48 && \ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ + pip install -U setuptools wheel --no-cache-dir && \ yum clean all && \ rm -rf /var/cache/yum From 10669019540cec7171b2057239aa8359ef40f9b8 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 8 May 2020 09:30:47 -0400 Subject: [PATCH 128/234] Add wheel to python2.7 build image, just in case --- base/test-all.sh | 3 ++- python2.7/build/Dockerfile | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/base/test-all.sh b/base/test-all.sh index 4d8f75e7..0bded02f 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -23,6 +23,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 docker run --rm -v "$PWD":/var/task lambci/lambda:python3.7 lambda_function.lambda_handler docker run --rm -v "$PWD":/var/task lambci/lambda:python3.8 lambda_function.lambda_handler +cd ${EXAMPLES_DIR}/python docker run --rm -it lambci/lambda:build-python2.7 pip install marisa-trie docker run --rm -it lambci/lambda:build-python3.6 pip install marisa-trie docker run --rm -it lambci/lambda:build-python3.7 pip install marisa-trie @@ -58,4 +59,4 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:provided handler '{"some": "ev # To invoke and keep open: # docker run --rm -v $PWD:/var/task -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ - # lambci/lambda:ruby2.5 lambda_function.lambda_handler +# lambci/lambda:ruby2.5 lambda_function.lambda_handler diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 0a1980fd..9c0a2a15 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ - pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv --no-cache-dir && \ + pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir From efbb6a296f9cd7c5a84bf01b254d12b0f727d684 Mon Sep 17 00:00:00 2001 From: Dave Lahn Date: Wed, 29 Apr 2020 16:51:57 -0400 Subject: [PATCH 129/234] Fix GEM_PATH to use correct Ruby installation --- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 93240147..cc1b3aab 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -4,7 +4,7 @@ ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_ruby2.5 \ GEM_HOME=/var/runtime \ - GEM_PATH=/var/task/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.0 \ + GEM_PATH=/var/task/vendor/bundle/ruby/2.5.0:/var/lang/lib/ruby/gems/2.5.0 \ RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib RUN rm -rf /var/runtime /var/lang /var/rapid && \ diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index c6c505cd..2566d9c3 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -4,7 +4,7 @@ ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_ruby2.7 \ GEM_HOME=/var/runtime \ - GEM_PATH=/var/task/vendor/bundle/ruby/2.7.0:/opt/ruby/gems/2.7.0 \ + GEM_PATH=/var/task/vendor/bundle/ruby/2.7.0:/var/lang/lib/ruby/gems/2.7.0 \ RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib RUN rm -rf /var/runtime /var/lang /var/rapid && \ From 84b8574e84b22fafb944b7328a1941320f7e2221 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 11 May 2020 14:36:19 -0400 Subject: [PATCH 130/234] Add /opt gem path back in to ruby gem images --- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index cc1b3aab..941036b5 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -4,7 +4,7 @@ ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_ruby2.5 \ GEM_HOME=/var/runtime \ - GEM_PATH=/var/task/vendor/bundle/ruby/2.5.0:/var/lang/lib/ruby/gems/2.5.0 \ + GEM_PATH=/var/task/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.0:/var/lang/lib/ruby/gems/2.5.0 \ RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib RUN rm -rf /var/runtime /var/lang /var/rapid && \ diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 2566d9c3..5bbada9f 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -4,7 +4,7 @@ ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_ruby2.7 \ GEM_HOME=/var/runtime \ - GEM_PATH=/var/task/vendor/bundle/ruby/2.7.0:/var/lang/lib/ruby/gems/2.7.0 \ + GEM_PATH=/var/task/vendor/bundle/ruby/2.7.0:/opt/ruby/gems/2.7.0:/var/lang/lib/ruby/gems/2.7.0 \ RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib RUN rm -rf /var/runtime /var/lang /var/rapid && \ From 4b7e20ab4d9bae5806428dda288bd6ad26db396d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 12 May 2020 12:50:44 -0400 Subject: [PATCH 131/234] Update aws-lambda-builders to 0.9.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 7494b250..076d6f80 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 153188a4..4b12926f 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index bf6431b0..f1a0690f 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir && \ +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 67b9e6e2..431c1b37 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index cd471b8c..d2457726 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index af9cfc54..767f1298 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index f892cb15..930962a5 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 9b7f9d69..bb180070 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index c4727d3a..f483e18f 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index c7383946..879db7d8 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index cfaa3291..7ff6f7c6 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 5df95270..820d4389 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index c801b216..7557bf7a 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 51e6385b..862bcc79 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index d44812dd..5c7a423f 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -13,6 +13,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 941036b5..271d0be0 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 5bbada9f..89ad80f8 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.8.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir From e69aa8b1f5ed85938e2be61db0ed9f574e17dd58 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 14 May 2020 20:56:57 -0400 Subject: [PATCH 132/234] Remove PYTHONPATH from python build images This seems to interfere with virtualenv/pipenv and prevents it from installing packages if they already exist in /var/runtime * Fixes 271 * Fixes 272 --- python2.7/build/Dockerfile | 3 +-- python3.6/build/Dockerfile | 1 - python3.7/build/Dockerfile | 1 - python3.8/build/Dockerfile | 1 - 4 files changed, 1 insertion(+), 5 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 9c0a2a15..07b2c7a7 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -1,7 +1,6 @@ FROM lambci/lambda-base:build -ENV AWS_EXECUTION_ENV=AWS_Lambda_python2.7 \ - PYTHONPATH=/var/runtime +ENV AWS_EXECUTION_ENV=AWS_Lambda_python2.7 RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/python2.7.tgz | tar -zx -C / diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 7557bf7a..f956f917 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -3,7 +3,6 @@ FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_python3.6 \ - PYTHONPATH=/var/runtime \ PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig RUN rm -rf /var/runtime /var/lang && \ diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 862bcc79..c9612896 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -3,7 +3,6 @@ FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_python3.7 \ - PYTHONPATH=/var/runtime \ PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig RUN rm -rf /var/runtime /var/lang /var/rapid && \ diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 5c7a423f..e7facf49 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -3,7 +3,6 @@ FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_python3.8 \ - PYTHONPATH=/var/runtime \ PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig RUN rm -rf /var/runtime /var/lang /var/rapid && \ From 1016f89556130b3e095a10ed8300d2cd650daafd Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 15 May 2020 17:05:20 -0400 Subject: [PATCH 133/234] Update aws-sam-cli to 0.49.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 076d6f80..ec783934 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 4b12926f..14d6f02a 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ +RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index f1a0690f..89277385 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 431c1b37..909345fa 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index d2457726..ecc0b2e5 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 767f1298..5643ad27 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 930962a5..f77f596d 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index bb180070..7e774355 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index f483e18f..8d424fe7 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 879db7d8..0233f899 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 7ff6f7c6..e6ce174f 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 820d4389..e621b590 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index f956f917..28d13c78 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index c9612896..9e76a0ad 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index e7facf49..aafd0ecc 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 271d0be0..2cff6fce 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 89ad80f8..016d3027 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.48.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir From 33e48ce90b08a03fcfdd0b967dc2ba3e0f2d8549 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 15 May 2020 17:40:53 -0400 Subject: [PATCH 134/234] Rearrange order of pip installs to try and reduce conflicts --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index ec783934..2242ec73 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 virtualenv pipenv --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 14d6f02a..6cf1b50f 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U virtualenv pipenv awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 89277385..a258efa7 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 909345fa..8a08b14f 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index ecc0b2e5..54b9ab8c 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 5643ad27..c91db2a6 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index f77f596d..d77a3946 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 7e774355..2c00b689 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 8d424fe7..2a2548a1 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 0233f899..0b51f10c 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index e6ce174f..7fdefe8b 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index e621b590..74513e59 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 28d13c78..ca08cdad 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 9e76a0ad..f6b0886a 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index aafd0ecc..5cc5a030 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 2cff6fce..a6520203 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 016d3027..2af196f9 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U awscli boto3 aws-sam-cli==0.49.0 aws-lambda-builders==0.9.0 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir From 32315e5a08112da752af218655874a4ac4253cf0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 19 May 2020 18:54:10 -0400 Subject: [PATCH 135/234] Update aws-sam-cli to 0.50.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 2242ec73..f60771f0 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 virtualenv pipenv --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 virtualenv pipenv --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 6cf1b50f..d79ed49c 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index a258efa7..ec42cf91 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 8a08b14f..d175f90b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 54b9ab8c..bc90ac39 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index c91db2a6..4128e26d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index d77a3946..9c565e04 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 2c00b689..8b117301 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 2a2548a1..fa635afc 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 0b51f10c..c7e96b41 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 7fdefe8b..2d974c8d 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 74513e59..505a58bc 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index ca08cdad..413e5d9a 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index f6b0886a..6b75d423 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 5cc5a030..6d602516 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index a6520203..6c683641 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 2af196f9..05657c17 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.49.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir From 1fcfb22c3ef3705b5f40f993be2544813967df7f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 20 May 2020 16:05:53 -0400 Subject: [PATCH 136/234] Update .NET 3.1 SDK to 3.1.300 https://github.com/dotnet/core/blob/master/release-notes/3.1/3.1.4/3.1.300-sdk.md --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index ec42cf91..0aafcdda 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.201 \ + DOTNET_SDK_VERSION=3.1.300 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 2fa7765f3f41bb4683eb1969a728914f3555d90f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 20 May 2020 16:11:55 -0400 Subject: [PATCH 137/234] Update Amazon.Lambda.Tools to 4.0.0 on dotnetcore3.1 runtime --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 0aafcdda..7a9654e9 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -21,6 +21,6 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir && \ - dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 + dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] From c1487e9aa1f38ded7414f6a243fc898f598a9632 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 21 May 2020 15:44:21 -0400 Subject: [PATCH 138/234] Update aws-sam-cli to 0.51.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index f60771f0..9a1c9825 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 virtualenv pipenv --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 virtualenv pipenv --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index d79ed49c..5301a1b0 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 7a9654e9..cbd1aa7d 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index d175f90b..3ad1ae13 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index bc90ac39..2386109a 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 4128e26d..3e0b4a01 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 9c565e04..ce2c8314 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 8b117301..463ee7ea 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index fa635afc..79e811b6 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index c7e96b41..6d460917 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 2d974c8d..3492801d 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 505a58bc..1f6be2f7 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 413e5d9a..c6a1e12a 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 6b75d423..206ca81a 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 6d602516..e1c9eefe 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 6c683641..afc1b594 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 05657c17..c637481d 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.50.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir From 7c50177e29ca8e1b6f549d0d15292849cf2b2857 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 27 May 2020 16:46:48 -0400 Subject: [PATCH 139/234] Update aws-sam-cli to 0.52.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 9a1c9825..f9636093 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 virtualenv pipenv --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 virtualenv pipenv --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 5301a1b0..bbc0dcca 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index cbd1aa7d..0aa663c8 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 3ad1ae13..c0dcc42c 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 2386109a..104df4f6 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 3e0b4a01..3c844335 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index ce2c8314..09efadec 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 463ee7ea..9106bf5c 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 79e811b6..742bdf58 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 6d460917..7b7046ff 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 3492801d..c6fce8a8 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 1f6be2f7..9ab4e660 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index c6a1e12a..f813226e 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 206ca81a..e495adb9 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index e1c9eefe..bf59fc8c 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index afc1b594..10d642fb 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index c637481d..7bbaacc8 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.51.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir From 1c7797c67302e201234f2f29d663d089ca0b5e28 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 28 May 2020 18:47:29 -0400 Subject: [PATCH 140/234] Add note about AWS CLI v2 and raw-in-base64-out --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 324dc5c0..484d3257 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,8 @@ aws lambda invoke --endpoint http://localhost:9001 --no-sign-request \ --function-name myfunction --payload '{}' output.json ``` +(if you're using [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration.html#cliv2-migration-binaryparam), you'll need to add `--cli-binary-format raw-in-base64-out` to the above command) + Or just: ```sh From 966b646f986e8c9888512b7e260b853fe1125b65 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 2 Jun 2020 09:25:48 -0400 Subject: [PATCH 141/234] Update go to 1.14.4 on build image --- go1.x/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index c0dcc42c..2c1fb509 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html -ENV GOLANG_VERSION=1.14.2 \ +ENV GOLANG_VERSION=1.14.4 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x From 4143ed38a2882a45d6945085cb3895d142d1df11 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 2 Jun 2020 09:27:14 -0400 Subject: [PATCH 142/234] Update gradle to 6.4.1 on java build images --- java11/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 104df4f6..3010e0d7 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.2.2-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.4.1-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.4.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 3c844335..6cf637fe 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.2.2-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.4.1-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.2.2/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.4.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir From 1f60db68a64ea5952f6b7e014999c9ca3b8050ed Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 3 Jun 2020 08:05:07 -0400 Subject: [PATCH 143/234] Pin ImageMagick-devel version in build images - Fixes #280 --- base/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 6ddad545..99fa4bc2 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -17,7 +17,7 @@ f.close();" && \ yum reinstall -y setup pam shadow-utils audit-libs openssl glibc-common glibc && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ - ImageMagick-devel cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ + ImageMagick-devel-6.7.8.9 cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ libffi-devel expat-devel libicu-devel lua-devel gdbm-devel sqlite-devel pcre-devel libcurl-devel && \ alternatives --set gcc /usr/bin/gcc48 && \ alternatives --set g++ /usr/bin/g++48 && \ From be8acf4fce3072abf976e1ea734bdab0848b3b4a Mon Sep 17 00:00:00 2001 From: Adam Lewis Date: Tue, 9 Jun 2020 11:02:26 +0100 Subject: [PATCH 144/234] Add null check to Log method --- dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 5 +++++ dotnetcore2.1/run/MockBootstraps/MockRuntime.cs | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index ca930389..d6038738 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -231,6 +231,11 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi private byte[] LogsTail4k() { + if (logs == null) + { + return new byte[4096]; + } + var logBuf = Encoding.UTF8.GetBytes(logs); if (logBuf.Length <= 4096) { diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 95635487..4acf0332 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -232,6 +232,11 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi private byte[] LogsTail4k() { + if (logs == null) + { + return new byte[4096]; + } + var logBuf = Encoding.UTF8.GetBytes(logs); if (logBuf.Length <= 4096) { From 5ca3009aebfe1fe05e5c5aebec4a96b4648beb08 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 9 Jun 2020 10:14:10 -0400 Subject: [PATCH 145/234] Initialize strings instead of null check Also reset StartTime each time we receive an invoke --- dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 8 ++------ dotnetcore2.1/run/MockBootstraps/MockRuntime.cs | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index d6038738..daa1df4d 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -30,7 +30,7 @@ internal class MockRuntime : ILambdaRuntime private DateTimeOffset receivedInvokeAt = DateTimeOffset.MinValue; - private string logs; + private string logs = ""; private Exception invokeError; @@ -145,6 +145,7 @@ unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVar var body = result.Content.ReadAsStringAsync().Result; + context.StartTime = DateTime.Now; context.RequestId = requestId; context.DeadlineMs = long.Parse(deadlineMs); context.Body = body; @@ -231,11 +232,6 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi private byte[] LogsTail4k() { - if (logs == null) - { - return new byte[4096]; - } - var logBuf = Encoding.UTF8.GetBytes(logs); if (logBuf.Length <= 4096) { diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index 4acf0332..c3827321 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -30,7 +30,7 @@ internal class MockRuntime : ILambdaRuntime private DateTimeOffset receivedInvokeAt = DateTimeOffset.MinValue; - private string logs; + private string logs = ""; private Exception invokeError; @@ -146,6 +146,7 @@ unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVar var body = result.Content.ReadAsStringAsync().Result; + context.StartTime = DateTime.Now; context.RequestId = requestId; context.DeadlineMs = long.Parse(deadlineMs); context.Body = body; @@ -232,11 +233,6 @@ public unsafe void ReportDone(string invokeId, string errorType, bool waitForExi private byte[] LogsTail4k() { - if (logs == null) - { - return new byte[4096]; - } - var logBuf = Encoding.UTF8.GetBytes(logs); if (logBuf.Length <= 4096) { From ae8d83ddec48f20b5beddbc79da4020ebad5baf3 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 9 Jun 2020 11:53:32 -0400 Subject: [PATCH 146/234] Reorder runtimes in build scripts to make it clearer which are amzn1 and which are amzn2 --- base/build-all.sh | 2 +- base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/base/build-all.sh b/base/build-all.sh index 9b23660d..12d7c0f5 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java11 dotnetcore3.1" TOP_DIR="${PWD}/.." diff --git a/base/publish-all.sh b/base/publish-all.sh index f2bc7842..b5f5027c 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java11 dotnetcore3.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index 2e36b3e0..8b9c0827 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 nodejs10.x nodejs12.x python2.7 python3.6 python3.7 python3.8 ruby2.5 ruby2.7 java8 java11 dotnetcore2.0 dotnetcore2.1 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java11 dotnetcore3.1" git tag -f latest From 74991ec6344ca8a8868ac93180c4afc17efb693b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 9 Jun 2020 12:02:29 -0400 Subject: [PATCH 147/234] Update poetry to 1.0.8 on python build images --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 07b2c7a7..d3c0b8ba 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index f813226e..76008eaa 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,7 +19,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python3 && \ pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index e495adb9..06728d49 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python3 && \ pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index bf59fc8c..b6842b89 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.5/get-poetry.py | POETRY_VERSION=1.0.5 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python3 && \ pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH From ca4c77254c9e73f0626f5a658616d81360e76f52 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 9 Jun 2020 14:54:16 -0400 Subject: [PATCH 148/234] Update dotnetcore3.1 SDK to 3.1.301 --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 0aa663c8..a442debe 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.300 \ + DOTNET_SDK_VERSION=3.1.301 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 74bc9c4f70cf595e6bc482dcb67d15ce5dbec48c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 9 Jun 2020 15:42:03 -0400 Subject: [PATCH 149/234] Update poetry to 1.0.9 on python build images --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index d3c0b8ba..dc20f283 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 76008eaa..f9961b63 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -19,7 +19,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 06728d49..790c9b74 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index b6842b89..7cf8533e 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.8/get-poetry.py | POETRY_VERSION=1.0.8 python3 && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH From 77e51481fd8db43fcb66d905a3051d5d0f3d4469 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 16 Jun 2020 21:32:24 -0400 Subject: [PATCH 150/234] Update aws-sam-cli to 0.53.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index f9636093..4e4b138d 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 virtualenv pipenv --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 virtualenv pipenv --no-cache-dir CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index bbc0dcca..be936a46 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index a442debe..e2cfdcf9 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -20,7 +20,7 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir && \ +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 2c1fb509..258b3216 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 3010e0d7..a4953ff8 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.4.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 6cf637fe..eb5a62c7 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,4 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.4.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 09efadec..4f41af70 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 9106bf5c..51dfeb4e 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 742bdf58..c6420f90 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 7b7046ff..c9eb1b24 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index c6fce8a8..b6b4a8bc 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,6 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 9ab4e660..ec3bf89d 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,4 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir +RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index f9961b63..d458b5ee 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 790c9b74..dcada8e1 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 7cf8533e..dcf83d6b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -12,6 +12,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install -U virtualenv pipenv --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 10d642fb..79bfcec0 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 7bbaacc8..8cb421e9 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,4 +13,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.52.0 awscli boto3 --no-cache-dir + pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir From ab8c916f85ee057dad80b98231602a0c0e202d5c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 16 Jun 2020 21:48:30 -0400 Subject: [PATCH 151/234] Use docker cache for build images --- base/build-all.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/build-all.sh b/base/build-all.sh index 12d7c0f5..88ad7919 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -19,5 +19,5 @@ for RUNTIME in $RUNTIMES; do cd ${TOP_DIR}/${RUNTIME}/build - docker build --no-cache -t lambci/lambda:build-${RUNTIME} . + docker build -t lambci/lambda:build-${RUNTIME} . done From a03bff0038d6ae2bcfdddc4e61d156b535f9606e Mon Sep 17 00:00:00 2001 From: Timo Schilling Date: Sun, 21 Jun 2020 19:19:05 +0200 Subject: [PATCH 152/234] set BUNDLE_SILENCE_ROOT_WARNING=1 for all ruby container (#286) --- ruby2.5/build/Dockerfile | 3 ++- ruby2.7/build/Dockerfile | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 79bfcec0..f6d5cbd0 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -5,7 +5,8 @@ ENV PATH=/var/lang/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_ruby2.5 \ GEM_HOME=/var/runtime \ GEM_PATH=/var/task/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.0:/var/lang/lib/ruby/gems/2.5.0 \ - RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib + RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib \ + BUNDLE_SILENCE_ROOT_WARNING=1 RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/ruby2.5.tgz | tar -zx -C / diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 8cb421e9..3728daf2 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -5,7 +5,8 @@ ENV PATH=/var/lang/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_ruby2.7 \ GEM_HOME=/var/runtime \ GEM_PATH=/var/task/vendor/bundle/ruby/2.7.0:/opt/ruby/gems/2.7.0:/var/lang/lib/ruby/gems/2.7.0 \ - RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib + RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib \ + BUNDLE_SILENCE_ROOT_WARNING=1 RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/ruby2.7.tgz | tar -zx -C / From c1af16ade5fe7b6b0cf094202e7aa5793d7b0320 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 23 Jun 2020 14:34:14 -0400 Subject: [PATCH 153/234] Create FUNDING.yml --- .github/FUNDING.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..b7fdd974 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: mhart From 38f12c4df00ba1ed48d12c0318494a975a5f04d0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 24 Jun 2020 11:28:28 -0400 Subject: [PATCH 154/234] yum-plugin-ovl is now included in Amazon Linux 1 Lambdas --- base/build/Dockerfile | 9 --------- 1 file changed, 9 deletions(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 99fa4bc2..e2a6fa1d 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -4,16 +4,7 @@ ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin # A couple of packages are either missing critical-ish files, or didn't make it into the tar RUN chmod 1777 /tmp && \ - /usr/bin/python3 -c "from configparser import SafeConfigParser; \ -yum_conf = SafeConfigParser(); \ -yum_conf.read('/etc/yum.conf'); \ -yum_conf.has_section('main') or yum_conf.add_section('main'); \ -yum_conf.set('main', 'plugins', '1'); \ -f = open('/etc/yum.conf', 'w'); \ -yum_conf.write(f); \ -f.close();" && \ rpm --rebuilddb && \ - yum install -y yum-plugin-ovl && \ yum reinstall -y setup pam shadow-utils audit-libs openssl glibc-common glibc && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ From a88dcb4162d4e85e0d59db7f9735f704e976b3f1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 24 Jun 2020 11:33:14 -0400 Subject: [PATCH 155/234] Update amzn1 packages --- base/amazonlinux1.txt | 36 ++++++++++++++++----------------- base/packages.txt | 47 ++++++++++++++++++++++--------------------- 2 files changed, 42 insertions(+), 41 deletions(-) diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt index 773aa0bc..dbb5fa6d 100644 --- a/base/amazonlinux1.txt +++ b/base/amazonlinux1.txt @@ -1,7 +1,7 @@ basesystem-10.0-4.9.amzn1.noarch bash-4.2.46-28.37.amzn1.x86_64 bzip2-libs-1.0.6-8.12.amzn1.x86_64 -ca-certificates-2018.2.22-65.1.21.amzn1.noarch +ca-certificates-2018.2.22-65.1.22.amzn1.noarch chkconfig-1.3.49.3-2.14.amzn1.x86_64 coreutils-8.22-15.52.amzn1.x86_64 curl-7.61.1-12.93.amzn1.x86_64 @@ -9,14 +9,14 @@ cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 db4-4.7.25-18.11.amzn1.x86_64 db4-utils-4.7.25-18.11.amzn1.x86_64 elfutils-libelf-0.168-8.19.amzn1.x86_64 -expat-2.1.0-10.21.amzn1.x86_64 -file-libs-5.37-8.48.amzn1.x86_64 +expat-2.1.0-11.22.amzn1.x86_64 +file-libs-5.37-8.49.amzn1.x86_64 filesystem-2.4.30-3.8.amzn1.x86_64 gawk-3.1.7-10.10.amzn1.x86_64 gdbm-1.8.0-36.6.amzn1.x86_64 glib2-2.36.3-5.21.amzn1.x86_64 -glibc-2.17-292.178.amzn1.x86_64 -glibc-common-2.17-292.178.amzn1.x86_64 +glibc-2.17-292.180.amzn1.x86_64 +glibc-common-2.17-292.180.amzn1.x86_64 gmp-6.0.0-11.16.amzn1.x86_64 gnupg2-2.0.28-2.33.amzn1.x86_64 gpgme-1.4.3-5.15.amzn1.x86_64 @@ -24,7 +24,7 @@ grep-2.20-3.18.amzn1.x86_64 gzip-1.5-9.19.amzn1.x86_64 info-5.1-4.10.amzn1.x86_64 keyutils-libs-1.5.8-3.12.amzn1.x86_64 -krb5-libs-1.15.1-34.44.amzn1.x86_64 +krb5-libs-1.15.1-46.48.amzn1.x86_64 libacl-2.2.49-6.11.amzn1.x86_64 libassuan-2.0.3-3.3.amzn1.x86_64 libattr-2.4.46-12.10.amzn1.x86_64 @@ -35,7 +35,7 @@ libffi-3.0.13-16.5.amzn1.x86_64 libgcc72-7.2.1-2.59.amzn1.x86_64 libgcrypt-1.5.3-12.19.amzn1.x86_64 libgpg-error-1.11-1.12.amzn1.x86_64 -libicu-50.1.2-11.12.amzn1.x86_64 +libicu-50.2-4.0.amzn1.x86_64 libidn2-2.3.0-1.4.amzn1.x86_64 libnghttp2-1.31.1-2.5.amzn1.x86_64 libpsl-0.6.2-1.2.amzn1.x86_64 @@ -53,16 +53,16 @@ make-3.82-21.10.amzn1.x86_64 ncurses-5.7-4.20090207.14.amzn1.x86_64 ncurses-base-5.7-4.20090207.14.amzn1.x86_64 ncurses-libs-5.7-4.20090207.14.amzn1.x86_64 -nspr-4.19.0-1.43.amzn1.x86_64 -nss-3.36.0-5.82.amzn1.x86_64 +nspr-4.21.0-1.43.amzn1.x86_64 +nss-3.44.0-7.84.amzn1.x86_64 nss-pem-1.0.3-4.3.amzn1.x86_64 -nss-softokn-3.36.0-5.42.amzn1.x86_64 -nss-softokn-freebl-3.36.0-5.42.amzn1.x86_64 -nss-sysinit-3.36.0-5.82.amzn1.x86_64 -nss-tools-3.36.0-5.82.amzn1.x86_64 -nss-util-3.36.0-1.54.amzn1.x86_64 +nss-softokn-3.44.0-8.44.amzn1.x86_64 +nss-softokn-freebl-3.44.0-8.44.amzn1.x86_64 +nss-sysinit-3.44.0-7.84.amzn1.x86_64 +nss-tools-3.44.0-7.84.amzn1.x86_64 +nss-util-3.44.0-4.56.amzn1.x86_64 openldap-2.4.40-16.31.amzn1.x86_64 -openssl-1.0.2k-16.150.amzn1.x86_64 +openssl-1.0.2k-16.151.amzn1.x86_64 p11-kit-0.18.5-2.3.amzn1.x86_64 p11-kit-trust-0.18.5-2.3.amzn1.x86_64 pcre-8.21-7.8.amzn1.x86_64 @@ -70,11 +70,11 @@ pinentry-0.7.6-6.11.amzn1.x86_64 pkgconfig-0.27.1-2.7.amzn1.x86_64 popt-1.13-7.7.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.16-1.131.amzn1.x86_64 +python27-2.7.18-1.137.amzn1.x86_64 python27-chardet-2.0.1-7.7.amzn1.noarch python27-iniparse-0.3.1-2.1.9.amzn1.noarch python27-kitchen-1.1.1-5.6.amzn1.noarch -python27-libs-2.7.16-1.131.amzn1.x86_64 +python27-libs-2.7.18-1.137.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 @@ -94,7 +94,7 @@ system-release-2018.03-0.0.noarch tar-1.26-31.22.amzn1.x86_64 tzdata-2019c-1.73.amzn1.noarch xz-libs-5.2.2-1.13.amzn1.x86_64 -yum-3.4.3-150.70.amzn1.noarch +yum-3.4.3-150.71.amzn1.noarch yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 yum-plugin-ovl-1.1.31-46.30.amzn1.noarch yum-plugin-priorities-1.1.31-46.30.amzn1.noarch diff --git a/base/packages.txt b/base/packages.txt index e29e8ab5..a4d5ef92 100644 --- a/base/packages.txt +++ b/base/packages.txt @@ -7,7 +7,7 @@ bash-4.2.46-28.37.amzn1.x86_64 binutils-2.25.1-31.base.66.amzn1.x86_64 bzip2-1.0.6-8.12.amzn1.x86_64 bzip2-libs-1.0.6-8.12.amzn1.x86_64 -ca-certificates-2018.2.22-65.1.21.amzn1.noarch +ca-certificates-2018.2.22-65.1.22.amzn1.noarch cairo-1.12.14-6.8.amzn1.x86_64 chkconfig-1.3.49.3-2.14.amzn1.x86_64 compat-gmp4-4.3.2-1.14.amzn1.x86_64 @@ -27,21 +27,21 @@ dejavu-sans-fonts-2.33-6.6.amzn1.noarch dejavu-serif-fonts-2.33-6.6.amzn1.noarch diffutils-3.3-4.15.amzn1.x86_64 elfutils-libelf-0.168-8.19.amzn1.x86_64 -expat-2.1.0-10.21.amzn1.x86_64 -file-5.37-8.48.amzn1.x86_64 -file-libs-5.37-8.48.amzn1.x86_64 +expat-2.1.0-11.22.amzn1.x86_64 +file-5.37-8.49.amzn1.x86_64 +file-libs-5.37-8.49.amzn1.x86_64 filesystem-2.4.30-3.8.amzn1.x86_64 findutils-4.4.2-6.9.amzn1.x86_64 fontconfig-2.8.0-5.8.amzn1.x86_64 fontpackages-filesystem-1.41-1.1.2.amzn1.noarch -freetype-2.3.11-15.14.amzn1.x86_64 +freetype-2.3.11-19.15.amzn1.x86_64 gawk-3.1.7-10.10.amzn1.x86_64 gdbm-1.8.0-36.6.amzn1.x86_64 ghostscript-fonts-5.50-23.2.7.amzn1.noarch giflib-4.1.6-3.1.6.amzn1.x86_64 glib2-2.36.3-5.21.amzn1.x86_64 -glibc-2.17-292.178.amzn1.x86_64 -glibc-common-2.17-292.178.amzn1.x86_64 +glibc-2.17-292.180.amzn1.x86_64 +glibc-common-2.17-292.180.amzn1.x86_64 gmp-6.0.0-11.16.amzn1.x86_64 gnupg2-2.0.28-2.33.amzn1.x86_64 gnutls-2.12.23-21.18.amzn1.x86_64 @@ -60,7 +60,7 @@ jpackage-utils-1.7.5-27.17.amzn1.noarch keyutils-libs-1.5.8-3.12.amzn1.x86_64 kmod-14-10.10.amzn1.x86_64 kmod-libs-14-10.10.amzn1.x86_64 -krb5-libs-1.15.1-34.44.amzn1.x86_64 +krb5-libs-1.15.1-46.48.amzn1.x86_64 lcms2-2.6-2.5.amzn1.x86_64 libICE-1.0.6-1.4.amzn1.x86_64 libSM-1.2.1-2.6.amzn1.x86_64 @@ -94,7 +94,7 @@ libglvnd-0.2.999-14.20170308git8e6e102.3.amzn1.x86_64 libglvnd-glx-0.2.999-14.20170308git8e6e102.3.amzn1.x86_64 libgomp-6.4.1-1.45.amzn1.x86_64 libgpg-error-1.11-1.12.amzn1.x86_64 -libicu-50.1.2-11.12.amzn1.x86_64 +libicu-50.2-4.0.amzn1.x86_64 libidn2-2.3.0-1.4.amzn1.x86_64 libjpeg-turbo-1.2.90-8.16.amzn1.x86_64 libmount-2.23.2-59.29.amzn1.x86_64 @@ -132,16 +132,16 @@ mesa-libglapi-17.1.5-2.41.amzn1.x86_64 ncurses-5.7-4.20090207.14.amzn1.x86_64 ncurses-base-5.7-4.20090207.14.amzn1.x86_64 ncurses-libs-5.7-4.20090207.14.amzn1.x86_64 -nspr-4.19.0-1.43.amzn1.x86_64 -nss-3.36.0-5.82.amzn1.x86_64 +nspr-4.21.0-1.43.amzn1.x86_64 +nss-3.44.0-7.84.amzn1.x86_64 nss-pem-1.0.3-4.3.amzn1.x86_64 -nss-softokn-3.36.0-5.42.amzn1.x86_64 -nss-softokn-freebl-3.36.0-5.42.amzn1.x86_64 -nss-sysinit-3.36.0-5.82.amzn1.x86_64 -nss-tools-3.36.0-5.82.amzn1.x86_64 -nss-util-3.36.0-1.54.amzn1.x86_64 +nss-softokn-3.44.0-8.44.amzn1.x86_64 +nss-softokn-freebl-3.44.0-8.44.amzn1.x86_64 +nss-sysinit-3.44.0-7.84.amzn1.x86_64 +nss-tools-3.44.0-7.84.amzn1.x86_64 +nss-util-3.44.0-4.56.amzn1.x86_64 openldap-2.4.40-16.31.amzn1.x86_64 -openssl-1.0.2k-16.150.amzn1.x86_64 +openssl-1.0.2k-16.151.amzn1.x86_64 p11-kit-0.18.5-2.3.amzn1.x86_64 p11-kit-trust-0.18.5-2.3.amzn1.x86_64 pam-1.1.8-12.33.amzn1.x86_64 @@ -181,17 +181,17 @@ popt-1.13-7.7.amzn1.x86_64 procps-3.2.8-45.16.amzn1.x86_64 psmisc-22.20-8.12.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.16-1.130.amzn1.x86_64 +python27-2.7.18-1.137.amzn1.x86_64 python27-iniparse-0.3.1-2.1.9.amzn1.noarch -python27-libs-2.7.16-1.130.amzn1.x86_64 +python27-libs-2.7.18-1.137.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 python27-pyxattr-0.5.0-1.6.amzn1.x86_64 python27-urlgrabber-3.10-8.16.amzn1.noarch -python36-3.6.8-1.15.amzn1.x86_64 -python36-libs-3.6.8-1.15.amzn1.x86_64 -python36-pip-9.0.3-1.26.amzn1.noarch +python36-3.6.10-1.16.amzn1.x86_64 +python36-libs-3.6.10-1.16.amzn1.x86_64 +python36-pip-9.0.3-1.27.amzn1.noarch python36-setuptools-36.2.7-1.33.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 rpm-4.11.3-40.76.amzn1.x86_64 @@ -217,7 +217,8 @@ xorg-x11-font-utils-7.2-11.5.amzn1.x86_64 xorg-x11-fonts-Type1-7.2-9.1.5.amzn1.noarch xz-5.2.2-1.13.amzn1.x86_64 xz-libs-5.2.2-1.13.amzn1.x86_64 -yum-3.4.3-150.70.amzn1.noarch +yum-3.4.3-150.71.amzn1.noarch yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 +yum-plugin-ovl-1.1.31-46.30.amzn1.noarch yum-plugin-priorities-1.1.31-46.30.amzn1.noarch zlib-1.2.8-7.18.amzn1.x86_64 From 178462ae977e424f3b9bb929a5a8eec256f22bcb Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 24 Jun 2020 11:39:31 -0400 Subject: [PATCH 156/234] Update amzn2 packages --- base/base-2/amazonlinux2.txt | 32 +++++++++++++------------- base/base-2/diff.txt | 44 ++++++++++++++++++------------------ base/base-2/packages.txt | 16 ++++++------- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index 9519274b..b6f2420b 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -1,8 +1,8 @@ -amazon-linux-extras-1.6.9-2.amzn2.noarch +amazon-linux-extras-1.6.11-1.amzn2.noarch basesystem-10.0-7.amzn2.0.1.noarch bash-4.2.46-33.amzn2.x86_64 bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 -ca-certificates-2019.2.32-76.amzn2.0.1.noarch +ca-certificates-2019.2.32-76.amzn2.0.2.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-24.amzn2.x86_64 cpio-2.11-27.amzn2.x86_64 @@ -13,16 +13,16 @@ elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 file-libs-5.11-35.amzn2.0.2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 -findutils-4.5.11-5.amzn2.0.2.x86_64 +findutils-4.5.11-6.amzn2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 -glib2-2.56.1-4.amzn2.x86_64 +glib2-2.56.1-5.amzn2.0.1.x86_64 glibc-2.26-34.amzn2.x86_64 glibc-common-2.26-34.amzn2.x86_64 glibc-langpack-en-2.26-34.amzn2.x86_64 glibc-minimal-langpack-2.26-34.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 -gnupg2-2.0.22-5.amzn2.0.3.x86_64 +gnupg2-2.0.22-5.amzn2.0.4.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 @@ -68,7 +68,7 @@ nss-sysinit-3.44.0-7.amzn2.x86_64 nss-tools-3.44.0-7.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 openldap-2.4.44-15.amzn2.x86_64 -openssl-libs-1.0.2k-19.amzn2.0.1.x86_64 +openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 @@ -77,27 +77,27 @@ popt-1.13-16.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.16-5.amzn2.x86_64 +python-2.7.18-1.amzn2.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.16-5.amzn2.x86_64 +python-libs-2.7.18-1.amzn2.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-9.amzn2.0.1.noarch -python2-rpm-4.11.3-40.amzn2.0.3.x86_64 +python2-rpm-4.11.3-40.amzn2.0.4.x86_64 pyxattr-0.5.1-5.amzn2.0.2.x86_64 readline-6.2-10.amzn2.0.2.x86_64 -rpm-4.11.3-40.amzn2.0.3.x86_64 -rpm-build-libs-4.11.3-40.amzn2.0.3.x86_64 -rpm-libs-4.11.3-40.amzn2.0.3.x86_64 +rpm-4.11.3-40.amzn2.0.4.x86_64 +rpm-build-libs-4.11.3-40.amzn2.0.4.x86_64 +rpm-libs-4.11.3-40.amzn2.0.4.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 -setup-2.8.71-10.amzn2.noarch +setup-2.8.71-10.amzn2.0.1.noarch shared-mime-info-1.8-4.amzn2.x86_64 -sqlite-3.7.17-8.amzn2.0.2.x86_64 +sqlite-3.7.17-8.amzn2.1.1.x86_64 system-release-2-11.amzn2.x86_64 tzdata-2019c-1.amzn2.noarch vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 -yum-3.4.3-158.amzn2.0.3.noarch +yum-3.4.3-158.amzn2.0.4.noarch yum-metadata-parser-1.1.4-10.amzn2.0.2.x86_64 yum-plugin-ovl-1.1.31-46.amzn2.0.1.noarch yum-plugin-priorities-1.1.31-46.amzn2.0.1.noarch -zlib-1.2.7-17.amzn2.0.2.x86_64 +zlib-1.2.7-18.amzn2.x86_64 diff --git a/base/base-2/diff.txt b/base/base-2/diff.txt index cb9feacb..02234165 100644 --- a/base/base-2/diff.txt +++ b/base/base-2/diff.txt @@ -1,27 +1,27 @@ -amazon-linux-extras-1.6.9-2.amzn2.noarch +amazon-linux-extras-1.6.11-1.amzn2.noarch bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 cpio-2.11-27.amzn2.x86_64 curl-7.61.1-12.amzn2.0.1.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 -diffutils-3.3-4.amzn2.0.2.x86_64 +diffutils-3.3-5.amzn2.x86_64 elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 -file-libs-5.11-33.amzn2.0.2.x86_64 -findutils-4.5.11-5.amzn2.0.2.x86_64 +file-libs-5.11-35.amzn2.0.2.x86_64 +findutils-4.5.11-6.amzn2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 -glib2-2.56.1-4.amzn2.x86_64 -glibc-langpack-en-2.26-32.amzn2.0.2.x86_64 -gnupg2-2.0.22-5.amzn2.0.3.x86_64 +glib2-2.56.1-5.amzn2.0.1.x86_64 +glibc-langpack-en-2.26-34.amzn2.x86_64 +gnupg2-2.0.22-5.amzn2.0.4.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 libassuan-2.1.0-3.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 -libcrypt-2.26-32.amzn2.0.2.x86_64 +libcrypt-2.26-34.amzn2.x86_64 libcurl-7.61.1-12.amzn2.0.1.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 libgpg-error-1.12-3.amzn2.0.3.x86_64 -libidn2-2.0.4-1.amzn2.0.2.x86_64 +libidn2-2.3.0-1.amzn2.x86_64 libmetalink-0.1.2-7.amzn2.0.2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 libnghttp2-1.39.2-1.amzn2.x86_64 @@ -30,32 +30,32 @@ libunistring-0.9.3-9.amzn2.0.2.x86_64 libuuid-2.30.2-2.amzn2.0.4.x86_64 libxml2-2.9.1-6.amzn2.3.3.x86_64 lua-5.1.4-15.amzn2.0.2.x86_64 -nss-3.44.0-4.amzn2.0.2.x86_64 +nss-3.44.0-7.amzn2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.44.0-5.amzn2.0.2.x86_64 -nss-sysinit-3.44.0-4.amzn2.0.2.x86_64 -nss-tools-3.44.0-4.amzn2.0.2.x86_64 +nss-softokn-3.44.0-8.amzn2.x86_64 +nss-sysinit-3.44.0-7.amzn2.x86_64 +nss-tools-3.44.0-7.amzn2.x86_64 openldap-2.4.44-15.amzn2.x86_64 pinentry-0.8.1-17.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.16-3.amzn2.0.1.x86_64 +python-2.7.18-1.amzn2.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.16-3.amzn2.0.1.x86_64 +python-libs-2.7.18-1.amzn2.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 -python-urlgrabber-3.10-8.amzn2.noarch +python-urlgrabber-3.10-9.amzn2.0.1.noarch +python2-rpm-4.11.3-40.amzn2.0.4.x86_64 pyxattr-0.5.1-5.amzn2.0.2.x86_64 readline-6.2-10.amzn2.0.2.x86_64 -rpm-4.11.3-25.amzn2.0.3.x86_64 -rpm-build-libs-4.11.3-25.amzn2.0.3.x86_64 -rpm-libs-4.11.3-25.amzn2.0.3.x86_64 -rpm-python-4.11.3-25.amzn2.0.3.x86_64 +rpm-4.11.3-40.amzn2.0.4.x86_64 +rpm-build-libs-4.11.3-40.amzn2.0.4.x86_64 +rpm-libs-4.11.3-40.amzn2.0.4.x86_64 shared-mime-info-1.8-4.amzn2.x86_64 -sqlite-3.7.17-8.amzn2.0.2.x86_64 +sqlite-3.7.17-8.amzn2.1.1.x86_64 vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 -yum-3.4.3-158.amzn2.0.2.noarch +yum-3.4.3-158.amzn2.0.4.noarch yum-metadata-parser-1.1.4-10.amzn2.0.2.x86_64 yum-plugin-ovl-1.1.31-46.amzn2.0.1.noarch yum-plugin-priorities-1.1.31-46.amzn2.0.1.noarch diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index 81a1640c..7c3c164e 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -1,8 +1,8 @@ basesystem-10.0-7.amzn2.0.1.noarch -bash-4.2.46-30.amzn2.x86_64 -ca-certificates-2019.2.32-76.amzn2.0.1.noarch +bash-4.2.46-33.amzn2.x86_64 +ca-certificates-2019.2.32-76.amzn2.0.2.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 -coreutils-8.22-21.amzn2.x86_64 +coreutils-8.22-24.amzn2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 glibc-2.26-34.amzn2.x86_64 @@ -13,14 +13,14 @@ gmp-6.0.0-15.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 keyutils-libs-1.5.8-3.amzn2.0.2.x86_64 -krb5-libs-1.15.1-37.amzn2.2.1.x86_64 +krb5-libs-1.15.1-37.amzn2.2.2.x86_64 libacl-2.2.51-14.amzn2.x86_64 libattr-2.4.46-12.amzn2.0.2.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 libgcc-7.3.1-6.amzn2.0.4.x86_64 -libicu-50.1.2-17.amzn2.x86_64 +libicu-50.2-4.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 libstdc++-7.3.1-6.amzn2.0.4.x86_64 @@ -32,13 +32,13 @@ ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 nspr-4.21.0-1.amzn2.0.2.x86_64 nss-softokn-freebl-3.44.0-8.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 -openssl-libs-1.0.2k-19.amzn2.0.1.x86_64 +openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 p11-kit-0.23.5-3.amzn2.0.2.x86_64 p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 popt-1.13-16.amzn2.0.2.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 -setup-2.8.71-10.amzn2.noarch +setup-2.8.71-10.amzn2.0.1.noarch system-release-2-11.amzn2.x86_64 tzdata-2019c-1.amzn2.noarch -zlib-1.2.7-17.amzn2.0.2.x86_64 +zlib-1.2.7-18.amzn2.x86_64 From 1a5ef29741961444212b663868e7ba90a7a0d7c6 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 24 Jun 2020 12:18:25 -0400 Subject: [PATCH 157/234] Update dotnetcore2.1 Bootstrap --- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 147456 -> 147456 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 44980 -> 44964 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 4880d8fd9ec88680c4407c7cbd7228fbbb51f489..1e9e0796febf86a99471027dc5c25741e5b11b97 100644 GIT binary patch delta 114 zcmZo@;B08%oY29tc(3o##-6P`j2G?;h`O(@3!2{U-{hS0tn-JY*Y=zTj3yy0Y7@Nn zPG4fe6d;iH>D;vdZX=h@z0G|)Ua)ML&SJ`xsQ?u{;t3T6s<-X%D}DK{iuFhBlK*+z Jdrg^&xd3}cGyebp delta 114 zcmZo@;B08%oY2AY!~Oin#-6P`j2G?;=mzr67jc>3ye8mUxVhb`t=n@RFq(w0WIes| zdHNC)rT~H4E?u)pyJ6b4=`5y9nF>(R1-wvEkowHTKT6Z4`Do6lJ)66| J*OaN43jn_?G~@sP diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb index 3f913c8b3c16410e70ff8393a9e04193f32497a7..83172b95b8b62266fdb0f0bd914158cf75822fad 100644 GIT binary patch delta 8591 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 delta 8605 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 From fe5454bf980d062e0a87c2fd16d7f57d343c3bbd Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 24 Jun 2020 12:32:05 -0400 Subject: [PATCH 158/234] Update gradle to 6.5.0 in java build images --- base/test-all.sh | 2 +- java11/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/base/test-all.sh b/base/test-all.sh index 0bded02f..563f2671 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -34,7 +34,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.5 lambda_function.lambda docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.7 lambda_function.lambda_handler cd ${EXAMPLES_DIR}/java -docker run --rm -v "$PWD":/app -w /app gradle gradle build +docker run --rm -v "$PWD":/app -w /app lambci/lambda:build-java8 gradle build docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java11 org.lambci.lambda.ExampleHandler '{"some": "event"}' diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index a4953ff8..8262f998 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.4.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.4.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.5/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index eb5a62c7..03e72f3c 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://downloads.gradle-dn.com/distributions/gradle-6.4.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.4.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.5/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir From 20fca7e5121e4b8e40fe68d6a826220d0389d012 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 26 Jun 2020 16:51:03 -0400 Subject: [PATCH 159/234] Add CORS headers to Lambda API --- provided/run/init.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/provided/run/init.go b/provided/run/init.go index d2f33d37..b3b3aa66 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -342,9 +342,20 @@ func waitForContext(context *mockLambdaContext) { } func addAPIRoutes(r *chi.Mux) *chi.Mux { + r.Options("/*", func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("x-amzn-requestid", fakeGUID()) + w.Header().Set("access-control-allow-origin", "*") + w.Header().Set("access-control-expose-headers", "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date,x-amz-log-result,x-amz-function-error") + w.Header().Set("access-control-max-age", "172800") + w.WriteHeader(200) + }) + r.Post("/2015-03-31/functions/{function}/invocations", func(w http.ResponseWriter, r *http.Request) { context := newContext() + w.Header().Set("access-control-allow-origin", "*") + w.Header().Set("access-control-expose-headers", "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date,x-amz-log-result,x-amz-function-error") + if r.Header.Get("X-Amz-Invocation-Type") != "" { context.InvocationType = r.Header.Get("X-Amz-Invocation-Type") } From 858a1f742e0d535a0ad2fb71a73260c148860a14 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 26 Jun 2020 17:42:29 -0400 Subject: [PATCH 160/234] Roll back dotnetcore2.1 Bootstrap --- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 147456 -> 147456 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 44964 -> 44980 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 1e9e0796febf86a99471027dc5c25741e5b11b97..4880d8fd9ec88680c4407c7cbd7228fbbb51f489 100644 GIT binary patch delta 114 zcmZo@;B08%oY2AY!~Oin#-6P`j2G?;=mzr67jc>3ye8mUxVhb`t=n@RFq(w0WIes| zdHNC)rT~H4E?u)pyJ6b4=`5y9nF>(R1-wvEkowHTKT6Z4`Do6lJ)66| J*OaN43jn_?G~@sP delta 114 zcmZo@;B08%oY29tc(3o##-6P`j2G?;h`O(@3!2{U-{hS0tn-JY*Y=zTj3yy0Y7@Nn zPG4fe6d;iH>D;vdZX=h@z0G|)Ua)ML&SJ`xsQ?u{;t3T6s<-X%D}DK{iuFhBlK*+z Jdrg^&xd3}cGyebp diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb index 83172b95b8b62266fdb0f0bd914158cf75822fad..3f913c8b3c16410e70ff8393a9e04193f32497a7 100644 GIT binary patch delta 8605 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 delta 8591 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 From a90b26718834d51ac407b7cb7d2493f64641f0a5 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 26 Jun 2020 19:29:28 -0400 Subject: [PATCH 161/234] Fix stay-open test --- base/test-all.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/base/test-all.sh b/base/test-all.sh index 563f2671..aa0e1a8c 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -58,5 +58,6 @@ cd ${EXAMPLES_DIR}/provided docker run --rm -v "$PWD":/var/task lambci/lambda:provided handler '{"some": "event"}' # To invoke and keep open: +# cd ${EXAMPLES_DIR}/ruby # docker run --rm -v $PWD:/var/task -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ # lambci/lambda:ruby2.5 lambda_function.lambda_handler From 4190ed1cfd599c778f5b3388b82f0a996e1860c3 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 27 Jun 2020 13:02:16 -0400 Subject: [PATCH 162/234] Revert "yum-plugin-ovl is now included in Amazon Linux 1 Lambdas" This reverts commit 38f12c4df00ba1ed48d12c0318494a975a5f04d0. --- base/build/Dockerfile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index e2a6fa1d..99fa4bc2 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -4,7 +4,16 @@ ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin # A couple of packages are either missing critical-ish files, or didn't make it into the tar RUN chmod 1777 /tmp && \ + /usr/bin/python3 -c "from configparser import SafeConfigParser; \ +yum_conf = SafeConfigParser(); \ +yum_conf.read('/etc/yum.conf'); \ +yum_conf.has_section('main') or yum_conf.add_section('main'); \ +yum_conf.set('main', 'plugins', '1'); \ +f = open('/etc/yum.conf', 'w'); \ +yum_conf.write(f); \ +f.close();" && \ rpm --rebuilddb && \ + yum install -y yum-plugin-ovl && \ yum reinstall -y setup pam shadow-utils audit-libs openssl glibc-common glibc && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ From fd4b833af83b0e3b8693ae10c13f818dfaa54717 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 30 Jun 2020 08:13:38 -0400 Subject: [PATCH 163/234] Update gradle to 6.5.1 in java build images --- java11/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 8262f998..9418442b 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5.1-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.5/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 03e72f3c..708c3f54 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5.1-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.5/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir From 46ff80e2fe3bbb3fab4fa18ac2fb05d7167f064e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 30 Jun 2020 14:24:06 -0400 Subject: [PATCH 164/234] Add headers and methods CORS headers to OPTIONS call --- provided/run/init.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index b3b3aa66..584f2489 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -343,18 +343,30 @@ func waitForContext(context *mockLambdaContext) { func addAPIRoutes(r *chi.Mux) *chi.Mux { r.Options("/*", func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("Origin") == "" { + w.WriteHeader(403) + return + } w.Header().Set("x-amzn-requestid", fakeGUID()) w.Header().Set("access-control-allow-origin", "*") w.Header().Set("access-control-expose-headers", "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date,x-amz-log-result,x-amz-function-error") w.Header().Set("access-control-max-age", "172800") + if r.Header.Get("Access-Control-Request-Headers") != "" { + w.Header().Set("access-control-allow-headers", r.Header.Get("Access-Control-Request-Headers")) + } + if r.Header.Get("Access-Control-Request-Method") != "" { + w.Header().Set("access-control-allow-methods", r.Header.Get("Access-Control-Request-Method")) + } w.WriteHeader(200) }) r.Post("/2015-03-31/functions/{function}/invocations", func(w http.ResponseWriter, r *http.Request) { context := newContext() - w.Header().Set("access-control-allow-origin", "*") - w.Header().Set("access-control-expose-headers", "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date,x-amz-log-result,x-amz-function-error") + if r.Header.Get("Origin") != "" { + w.Header().Set("access-control-allow-origin", "*") + w.Header().Set("access-control-expose-headers", "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date,x-amz-log-result,x-amz-function-error") + } if r.Header.Get("X-Amz-Invocation-Type") != "" { context.InvocationType = r.Header.Get("X-Amz-Invocation-Type") From 187542add179d199825090c10d6bbb387d76fea1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 1 Jul 2020 14:25:29 -0400 Subject: [PATCH 165/234] Nicer error output for java8 --- .../java/lambdainternal/LambdaRuntime.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index d2b9df1a..4737a67d 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -11,6 +11,7 @@ import java.net.URL; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Arrays; import java.util.Base64; import java.util.Date; @@ -20,6 +21,7 @@ import java.util.UUID; import com.google.gson.Gson; +import com.google.gson.JsonObject; import sun.misc.Unsafe; import sun.misc.Signal; @@ -42,6 +44,7 @@ public class LambdaRuntime { private static long deadlineMs; private static boolean invoked = false; private static boolean errored = false; + private static String errorMsg = ""; private static boolean initEndSent = false; private static long initEnd; private static long receivedInvokeAt; @@ -216,6 +219,13 @@ public static void reportDone(final String invokeid, final byte[] result, final byte[] resultCopy = result == null ? new byte[0] : new String(result, 0, resultLength).getBytes(StandardCharsets.UTF_8); + + if (errored && resultCopy.length == 0) { + JsonObject errObject = new JsonObject(); + errObject.addProperty("errorMessage", !isNullOrEmpty(errorMsg) ? errorMsg : "Unknown error"); + resultCopy = errObject.toString().getBytes(StandardCharsets.UTF_8); + } + try (OutputStream os = conn.getOutputStream()) { os.write(resultCopy); } @@ -231,7 +241,20 @@ public static void reportDone(final String invokeid, final byte[] result, final public static void reportFault(final String invokeid, final String msg, final String exceptionClass, final String stack) { errored = true; - systemErr(stack); + ArrayList errorPieces = new ArrayList(); + if (exceptionClass != null) { + systemErr(exceptionClass); + errorPieces.add(exceptionClass); + } + if (msg != null) { + systemErr(msg); + errorPieces.add(msg); + } + if (stack != null) { + systemErr(stack); + errorPieces.add(stack); + } + errorMsg = String.join("\n", errorPieces); } public static int getRemainingTime() { From ed7e7e9d7b7b7dc7563f215db8aadb079e04aa9d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 20 Jul 2020 17:04:07 -0400 Subject: [PATCH 166/234] Use pipx for all global python binaries (#297) * Use pipx for all global python binaries - Add /root/.local/bin to PATH - Add pipx to base build images - Update aws-lambda-builders to 1.0.0 - Update dotnetcore3.1 build SDK to 3.1.302 * Also publish tag with date --- base/build-2/Dockerfile | 3 ++- base/build/Dockerfile | 7 ++++--- base/publish-all.sh | 6 ++++++ dotnetcore2.0/build/Dockerfile | 8 +++++++- dotnetcore2.1/build/Dockerfile | 8 +++++++- dotnetcore3.1/build/Dockerfile | 6 ++++-- go1.x/build/Dockerfile | 6 +++++- java11/build/Dockerfile | 4 +++- java8/build/Dockerfile | 6 +++++- nodejs10.x/build/Dockerfile | 4 +++- nodejs12.x/build/Dockerfile | 4 +++- nodejs4.3/build/Dockerfile | 6 +++++- nodejs6.10/build/Dockerfile | 6 +++++- nodejs8.10/build/Dockerfile | 6 +++++- provided/build/Dockerfile | 6 +++++- python3.6/build/Dockerfile | 11 ++++++++--- python3.7/build/Dockerfile | 11 ++++++++--- python3.8/build/Dockerfile | 11 ++++++++--- ruby2.5/build/Dockerfile | 10 +++++++--- ruby2.7/build/Dockerfile | 8 +++++--- 20 files changed, 105 insertions(+), 32 deletions(-) diff --git a/base/build-2/Dockerfile b/base/build-2/Dockerfile index a0d07fbd..1c807711 100644 --- a/base/build-2/Dockerfile +++ b/base/build-2/Dockerfile @@ -6,7 +6,7 @@ RUN yum list yum && \ FROM lambci/lambda-base-2 -ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin +ENV PATH=/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin COPY --from=0 /installroot/etc /etc/ COPY --from=0 /installroot/usr /usr/ @@ -17,5 +17,6 @@ RUN yum reinstall -y filesystem setup glibc-common glibc; \ yum install -y which clang cmake python-devel python3-devel amazon-linux-extras && \ amazon-linux-extras install -y docker && \ pip3 install -U pip setuptools wheel --no-cache-dir && \ + pip3 install --user pipx --no-cache-dir && \ yum clean all && \ rm -rf /var/cache/yum diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 99fa4bc2..6e22c0df 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -1,6 +1,6 @@ FROM lambci/lambda-base -ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin +ENV PATH=/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin # A couple of packages are either missing critical-ish files, or didn't make it into the tar RUN chmod 1777 /tmp && \ @@ -22,7 +22,8 @@ f.close();" && \ alternatives --set gcc /usr/bin/gcc48 && \ alternatives --set g++ /usr/bin/g++48 && \ alternatives --set cpp /usr/bin/cpp48 && \ - curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python3 && \ - pip install -U setuptools wheel --no-cache-dir && \ + python3 -m pip install -U pip setuptools wheel --no-cache-dir && \ + pip install --user pipx --no-cache-dir && \ + pipx run awscli==1.* 2>/dev/null || true && \ yum clean all && \ rm -rf /var/cache/yum diff --git a/base/publish-all.sh b/base/publish-all.sh index b5f5027c..53bfce6b 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -9,12 +9,16 @@ echo export DOCKER_CONTENT_TRUST=1 export DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE +export PUBLISH_DATE=$(date "+%Y%m%d") + docker push lambci/lambda-base docker push lambci/lambda-base-2 for RUNTIME in $RUNTIMES; do echo $RUNTIME + docker tag lambci/lambda:${RUNTIME} lambci/lambda:${PUBLISH_DATE}-${RUNTIME} docker push lambci/lambda:${RUNTIME} + docker push lambci/lambda:${PUBLISH_DATE}-${RUNTIME} done docker push lambci/lambda-base:build @@ -22,5 +26,7 @@ docker push lambci/lambda-base-2:build for RUNTIME in $RUNTIMES; do echo build-${RUNTIME} + docker tag lambci/lambda:build-${RUNTIME} lambci/lambda:${PUBLISH_DATE}-build-${RUNTIME} docker push lambci/lambda:build-${RUNTIME} + docker push lambci/lambda:${PUBLISH_DATE}-build-${RUNTIME} done diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 4e4b138d..9defe440 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -20,6 +20,12 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 virtualenv pipenv --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install virtualenv && \ + pipx install pipenv && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index be936a46..15f91876 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -21,7 +21,13 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 virtualenv pipenv --no-cache-dir && \ +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install virtualenv && \ + pipx install pipenv && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index e2cfdcf9..95c1bf17 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.301 \ + DOTNET_SDK_VERSION=3.1.302 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip @@ -20,7 +20,9 @@ RUN rm -rf /var/runtime /var/lang && \ rm -rf /tmp/warmup /tmp/NuGetScratch /tmp/.dotnet # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir && \ +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 258b3216..a0f6e31b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -16,6 +16,10 @@ RUN rm -rf /var/runtime /var/lang && \ go get golang.org/x/vgo # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 9418442b..7cb2d76e 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -14,4 +14,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 708c3f54..8b65a22d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -15,4 +15,8 @@ RUN rm -rf /var/runtime /var/lang && \ ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 4f41af70..1ec80353 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -9,4 +9,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 51dfeb4e..07df5cd9 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -9,4 +9,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index c6420f90..46fa9698 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -10,6 +10,10 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index c9eb1b24..d5cf1744 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -10,6 +10,10 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index b6b4a8bc..5be7cd38 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -10,6 +10,10 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index ec3bf89d..97cca041 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,4 +1,8 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently -RUN pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index d458b5ee..f6f94d72 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -18,8 +18,13 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ - pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir + rm -rf /root/.local && \ + pip install --user pipx --no-cache-dir && \ + pipx install virtualenv && \ + pipx install pipenv && \ + pipx install poetry==1.0.9 && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index dcada8e1..aa5b0b7f 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -10,8 +10,13 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ - pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir + rm -rf /root/.local && \ + pip install --user pipx --no-cache-dir && \ + pipx install virtualenv && \ + pipx install pipenv && \ + pipx install poetry==1.0.9 && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index dcf83d6b..5b47e407 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -10,8 +10,13 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ - pip install -U virtualenv pipenv --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python3 && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir + rm -rf /root/.local && \ + pip install --user pipx --no-cache-dir && \ + pipx install virtualenv && \ + pipx install pipenv && \ + pipx install poetry==1.0.9 && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index f6d5cbd0..bc06ecc0 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -12,6 +12,10 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/ruby2.5.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN gem update --system --no-document && \ - gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +# The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 +RUN source ~/.local/pipx/shared/bin/activate && \ + pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 && \ + gem update --system --no-document && \ + gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 3728daf2..c31ecf1a 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -12,6 +12,8 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/ruby2.7.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently -RUN gem update --system --no-document && \ - gem install --no-document bundler -v '~> 2.1' && \ - pip install -U aws-lambda-builders==0.9.0 aws-sam-cli==0.53.0 awscli boto3 --no-cache-dir +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==0.53.0 && \ + gem update --system --no-document && \ + gem install --no-document bundler -v '~> 2.1' From 5133701db94bf2ee28e4134bb742df51a5819c4f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 21 Jul 2020 09:22:49 -0400 Subject: [PATCH 167/234] Use /usr/local for pipx Fixes #298 --- base/build-2/Dockerfile | 6 ++++-- base/build/Dockerfile | 6 ++++-- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 9 ++++----- python3.7/build/Dockerfile | 9 ++++----- python3.8/build/Dockerfile | 9 ++++----- ruby2.5/build/Dockerfile | 2 +- 14 files changed, 29 insertions(+), 28 deletions(-) diff --git a/base/build-2/Dockerfile b/base/build-2/Dockerfile index 1c807711..e41381b5 100644 --- a/base/build-2/Dockerfile +++ b/base/build-2/Dockerfile @@ -6,7 +6,9 @@ RUN yum list yum && \ FROM lambci/lambda-base-2 -ENV PATH=/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin \ + PIPX_BIN_DIR=/usr/local/bin \ + PIPX_HOME=/usr/local/pipx COPY --from=0 /installroot/etc /etc/ COPY --from=0 /installroot/usr /usr/ @@ -17,6 +19,6 @@ RUN yum reinstall -y filesystem setup glibc-common glibc; \ yum install -y which clang cmake python-devel python3-devel amazon-linux-extras && \ amazon-linux-extras install -y docker && \ pip3 install -U pip setuptools wheel --no-cache-dir && \ - pip3 install --user pipx --no-cache-dir && \ + pip3 install pipx --no-cache-dir && \ yum clean all && \ rm -rf /var/cache/yum diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 6e22c0df..2d8fbc8b 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -1,6 +1,8 @@ FROM lambci/lambda-base -ENV PATH=/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin \ + PIPX_BIN_DIR=/usr/local/bin \ + PIPX_HOME=/usr/local/pipx # A couple of packages are either missing critical-ish files, or didn't make it into the tar RUN chmod 1777 /tmp && \ @@ -23,7 +25,7 @@ f.close();" && \ alternatives --set g++ /usr/bin/g++48 && \ alternatives --set cpp /usr/bin/cpp48 && \ python3 -m pip install -U pip setuptools wheel --no-cache-dir && \ - pip install --user pipx --no-cache-dir && \ + pip install pipx --no-cache-dir && \ pipx run awscli==1.* 2>/dev/null || true && \ yum clean all && \ rm -rf /var/cache/yum diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 9defe440..c47040a1 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -21,7 +21,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install awscli==1.* && \ diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 15f91876..b0da831b 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install awscli==1.* && \ diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index a0f6e31b..7e0d730b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -17,7 +17,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 8b65a22d..ed8631cd 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -16,7 +16,7 @@ ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 46fa9698..4688f91f 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index d5cf1744..ce7b8616 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 5be7cd38..93c0e8c2 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -11,7 +11,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 97cca041..5b885549 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -2,7 +2,7 @@ FROM lambci/lambda-base:build # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index f6f94d72..19de2812 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -3,7 +3,9 @@ FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_python3.6 \ - PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig + PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig \ + PIPX_BIN_DIR=/var/lang/bin \ + PIPX_HOME=/var/lang/pipx RUN rm -rf /var/runtime /var/lang && \ export PYTHON_VERSION=3.6.10 && \ @@ -18,13 +20,10 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ - rm -rf /root/.local && \ - pip install --user pipx --no-cache-dir && \ + pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install poetry==1.0.9 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 - -ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index aa5b0b7f..cbb8a404 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -3,20 +3,19 @@ FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_python3.7 \ - PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig + PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig \ + PIPX_BIN_DIR=/var/lang/bin \ + PIPX_HOME=/var/lang/pipx RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/python3.7.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ - rm -rf /root/.local && \ - pip install --user pipx --no-cache-dir && \ + pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install poetry==1.0.9 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 - -ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 5b47e407..83e7a77c 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -3,20 +3,19 @@ FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_python3.8 \ - PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig + PKG_CONFIG_PATH=/var/lang/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig \ + PIPX_BIN_DIR=/var/lang/bin \ + PIPX_HOME=/var/lang/pipx RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/python3.8.tgz | tar -zx -C / # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ - rm -rf /root/.local && \ - pip install --user pipx --no-cache-dir && \ + pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install poetry==1.0.9 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 - -ENV PATH=/root/.poetry/bin:$PATH diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index bc06ecc0..ae3c93dc 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -13,7 +13,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 -RUN source ~/.local/pipx/shared/bin/activate && \ +RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==0.53.0 && \ From f6dd2b4ac594fe51517700ec68b73f759d73cdaf Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 21 Jul 2020 17:27:35 -0400 Subject: [PATCH 168/234] Update aws-sam-cli to 1.0.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 147456 -> 147456 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 44980 -> 44964 bytes dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index c47040a1..34c89f9c 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -26,6 +26,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index b0da831b..7f52d4b8 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -27,7 +27,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 && \ + pipx install aws-sam-cli==1.0.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 4880d8fd9ec88680c4407c7cbd7228fbbb51f489..1e9e0796febf86a99471027dc5c25741e5b11b97 100644 GIT binary patch delta 114 zcmZo@;B08%oY29tc(3o##-6P`j2G?;h`O(@3!2{U-{hS0tn-JY*Y=zTj3yy0Y7@Nn zPG4fe6d;iH>D;vdZX=h@z0G|)Ua)ML&SJ`xsQ?u{;t3T6s<-X%D}DK{iuFhBlK*+z Jdrg^&xd3}cGyebp delta 114 zcmZo@;B08%oY2AY!~Oin#-6P`j2G?;=mzr67jc>3ye8mUxVhb`t=n@RFq(w0WIes| zdHNC)rT~H4E?u)pyJ6b4=`5y9nF>(R1-wvEkowHTKT6Z4`Do6lJ)66| J*OaN43jn_?G~@sP diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb index 3f913c8b3c16410e70ff8393a9e04193f32497a7..83172b95b8b62266fdb0f0bd914158cf75822fad 100644 GIT binary patch delta 8591 zcmZu%30PCd_MZt663B&wY>JVOcup%>zq+#OZ?zF&a}S zK*xbE0?#eNsI^FdZUg@Ue7zW>?}`QJA0-%_EfJvSN->&LDj@EF>0PmYH^k0~L#?O| za0>8Gz(v4SKxnKLeF}UFa2N1sD0BnGqlUtG+~320+c0@?=H1L!J3K_IjvuGo$g#pFfK>TH3>rNxOzSdxf>0HJ_z zfDzCgkO9aAwvES_W_Rpj{)6=`ymdX98MedLwX-u89(U^ zYlp)R2vI0epRG>IO5+EIr190|- zpCN$ZfHFW8U=m;kpb^jvXaTeVmIKy4HK;_JM=H?{z&^l1CRd_2pVn*8J0msd9N-Gz z6DHT7TZ|)+5Oy5=i(s&nMj$&N4Uoes0#JTwchua~CH*Qp?uVgmptc0i4(I@2&nj11X~biEnr`|&h@QN$2NhGL#ZFybm?)QYv5k$DoMn3;?$b7cuw zh>)V0Of9qHHnOhFUb0>u0Qxf5X2w$2R>qubC*xq(9-n-_kKbTyavhh^_l&N$e0)x( z^+QPIxD=PrUm zm{24_Y60vyEO1bpHmxEYA#X12JJ<-;=tH{y{RoFzRRQf8PzN2?f zCnqY@cozAnVh!F#W{goe_jA+@TK7R8ANBD`AHT!Npgz)lo(se^0#OhO_jgc<$$ga* z^O7)L65+l9l1d@y#EO`X!Trq>NgOZ9cK^tQ;%chHOM0Lj4|*ap@Jc36&@-kb(3sVu z<~TY;qX>=|kAY;4HOAVwAnNoW>TfngIuNTTg>^jDlffm6p_`sw#633IS;&T=_msjg zD(Ns3e5ZAuanROSDv|S&aL*)=lu=0(FVT2rK9QK8Nap`dqV;&6NPKp5o+TjhSvIh# z4D+nyL`Y7%`=rlwhSi?+q-2~5ze1ewyNmvY9e`1o|E{R=90o;&Q|+O%6Z&j59lOl) zE=Rp3^_+uh@D>%yJy+P!)t-NYzn(NpYb>4{%vI5zTTH|3xdTpqqCw|a?|A?QpOqLq zKXMZNQxR=V;d#sj;C@1641~q%?MB8_8gVFDP^r@EIWaN{L=vPEI>g8XPq;zou)<3^ zZyY&LX~mi3)5_?G0h}M06bWECJ48q&fHkcVI$XEmtd)9)6GPQ)`D$>SLj zX75rtSVTE3HVQcK7U5FG%zQJx6CCUkB_gu znDOvV_S*Vy>Pm0N?|)S+oAO$!gyskVswld%hr%V)^PgrrSejg!d5iR19#F8icrj31Fblh5FO zq+v>KH#cX*rR3BUJ-ITaA^a0qDZS`Qi4{76sjJ-|sv#nJzUmq~^+SxCNXm4Rb0H}4 zvw&;7ZJZ<=q3+&gu=wiedPxi7qvktz;C$qmRK$%P`at1bgCB)96C@JTXm#?SayGOFGh z6%6VD0uiR`BLFFA%n0`F1=p84SRC%~uC4VPcG|Y}uAb#REw>z9lGc6N`MYoKSbmpv zELTofNlG7?l7?Hh5tzJy^-Ve8uf-C~AL!CzRwLt=k(n;R#L>LJsGAiPu%+VZ5s)N+ zWJ@H3{$l}2YVc2}1@FVy44@TFHy#Yj55?2ft)#v8sXEG`UO$hFZ>YdK$f<@@e26@1 zNS2?0q3Q%8Iar$+3pr7O>paPt6&rjN<{0Km3roc2`VXm}rNdv6_F3Da4bQwl}cGRG|$%J{=_v$N%qb5$3^7eY%3l|J_G4w^80M9eik&s z31BD*LKqZ;8yJaz*)X`9N$Q+vyqJ{1?;5b7#aqaF_}xbi&q;;ZxT~?cJX6n*Vp$>e)(PZAzS~`x1##gWa@ZTCUdVki#a}tilTCu$ehbWgV^-s z@#$0nBL%MFmRF9TTiYu55pbAvS46;&BWX!k*((3uXEnEKX@2hwq@|W zb<#+LN~D|_WedP}Z2l3d=EQWz$jTsIv1837bkHg3H%e?JHy7y1JdqnxNA*Az*CU(3h03-Ko-b;;e>?~TO&ZjEpRO!O>V3xB$b|S;PDBb za?PP{&piCHwB_E*wxk1}ei(b_XU(I5vtq!Ug?!?fg~yO0?>y@^E*Nn_qzy)>zw31_ zgr=a|w+q1!9O7 z5}NU{d?nZysWRda%9N6tmW&W{1RG?umXU?*Zm}iqbH6l5)$7>|kz5K0@nMqX~op!x} zOno8U(s^;`S{JdL+jnMV<2Td4G8~_nHH$_A zm8IT&@7RW&jpG*xd4uc}7iuF}DU#?G#^X3LVBzzc5aF0v8BxvqAKqQIe8<)eGuP!U zeU*A4JCxj5sIlp3z9C@wKz<}=dh%?G;pNm^Tr#AC2+b4|^P=7w&6kq{E=Rr7E@}?X z4QlxM{Vl_LzG9DubiqItEK0=PyY?-TVNA%W7gO;b;%>M3QyaM)iD^wApSLkS@W8{R z8TBcj{v0dl%J@V-@DR0aQiaeHZvgFBuTVIu3IZWMvMbAz3l1AtL;}@NnjkiDLfD7U zbGilLvV?^*X%%NDr&~4ZOgJ5+bVLApc%G-D$onSU&3d_qn+P^=kWx`BMgLX*fVtBTYRhB}L{@GDIa)(wkXSHbtj0 zp@j*JF>L4QViTz_A+9$iot2g1;@OTh+IW=&Ce+y(X%k^r!luzACD1oC-FZr8GEsHIo{1CF$i21>&F|ku_`*ck?h6;zMYc_zO|BJ9gTP_d9ULb z-c4S3sUI}?{!4=)Yg8>A?pz-G!EgBZifIcf&a^IGIHPP_uT`JWHiSXZJh2vq93RX$ zK469Lu`nb)Xkgvs+5M_!SJ}tU;u6u6x_Pc;u9b%(4z(%lsT~bPme4yl{!vxcF#AEi zLa^vx%wmX%k%DcqaY985D~9uXE}SnJ_>E}j&g#tk8)gePu&!~&)Y|{A!T%||i$==d z+;#ZDnX>;bKVQ);@aE6cze!}_zh+r9mXgKG4EkucPK42H4GFFMFs$*$Oh~d*$-B#p zIEQ?_ESf8#_XL5XM^A`zWh8ug4?KeuEjMBZsb6l9wdT<4oY2*p*CPvFbhVQm%iq_; z{ha#l`@K?=Zhk?&klUrTnIB$Dqnjy1N!o}eDVBXv5!%?{Ah9uj%9EK;lEFg5h+Ytk zq1C2r$b<68Rr0*C9g>^`L9iZ87B+Ec7`=SMX#l&_lmlVbwVKRaVS<#5tQdrk!&xv2 zUnglR6Q{Tnvo9#azMJ}8eg52;4@b921`KTFoz9LQiGn|Vlm#MB?Z{Dl*a~Y-3o8yzDP)H9V5J#HlOI=BSz2!krbvQZS;q6PH*YPv zpM7}al^ZlFCCd18kXlbrk)~CG8p4jw*!FA*;>q9Ktxsup) ze&Qyq?#U(F;Sz!hp*g?&EV6HPEG{P3R)Id#{c&9;eoXA0RxBfG$X_7flzeEJ;hJxgSpOya5t+DwUOG3mJ}RVNOp zU-i|Z$BA>RzuKO3{V~41YKNXVBP2x!%U4HsYzh&Dac1}gX)u!$o6ITI=bf(m^~Qg?wa)HepR=F6C*}8$l;1-#e)GsI0ltZ&p<!GpdHZr^SR%L3I|4$IhK3}Y?+BqQLSca*8p{?lQrO_Ry8zMlxn#(9k~x7$2HRjJ zy_5uJknJz`O;cVz=ooTcBHOk8zYAX_C2idY2dw2?WS}Go;WI8N-y^AoZaZ@*iP$pG z*>(PQ+NF7SX4MY)_2$_HJMX=^UB+i{DZFxug|@8j0sTxBillV^u`Xsqw+8yU*cYCM z`kn_oBQJz!_=^hb`Uu)}U(adt!DS%O3(4&*xuyBn9i#6BBsb2rT$y|}V$$m+TfVr& zx*x~)A&&JyAOH70By;}Vgg*Pd{%${ye7;3VmcDXV+hVG$i~Gsl9(b%j*X{0@t&N)w zzUJzB4n9YOl9gM#@N;C~wwgS1+5>4#$>gL*pD%VS{WWpJqf-Y;w%FPE)hEDTt-Hd@3$3<{-F7-ko|t`{SD*JUpP=QadfWSo5lts=5t|j z0xJda@jQrMD;!_P@pU15DTFV{_>zn)-JVhO+Rt^GRRe;`25p`GzXdN{{Zl;V_%&uv z&fAmo_LTfPO5TE+r*K{vp5TX%{L!lnp;SGI-cgmCqBwKm_||tH-97)?nHT&g9hfln zr$zhE@V(^sNDzO{aQv~ru^=f7@ew(*Bf0;2#f3qOUVQof1Y1t$)k`MHareT^ys^wi zD6bdF$5aJxL&XbKx!vg2_`?p_LXw7L@3cccIdx~j;2OpM+P+Cx-En=*Y?*!8-R427 z4h#A%WA?=SViw1-QXoI5z=Y5~)2rsssIw2LnqFN~WzU<@P#b_xp`xSY@lLbzs=^q4 zsmGN&p_RWY1*;ouKXqmgSJ&$H2#*WOC}&=bY~- z_F6mM9rVel$CpJvOpNQ;v3dTw>P|YY{$|$XfN0iMzJ-+vViKfqudGavML^yOml8Rj z9!96KJ}7%IEpr;1En_~B) ze1>th=Nw~;=Q3lpcZrVLQF~YTc%6<8QtN$78A`oGD~;X@O6opy4d;(SeeUyjf+TdR zn$EnjUZxxeD`XDXgu5;LNtDjCjlZ#L7O<8yuFYy{EY`*MIM214$!)IvjFVgk8E3nW zGS<3ID_PH6?}6tK3UpnjA7+Ges8H*=re@6|T?Oi;=F|KEB5|!u364 zgXg^tvi@;xLeLR(j6v?s)E0QyY(_L5(@$aG+#>=kQsYb zkR~nM8|$QhokA$zox<4W&R{QE-Mtta-F+D+xC>Z)ta}LKM0W|}QSMU4T6a0~rl^9& zMg16dlBmYAQeZAS7NdF_sl&_E(;0uh$Z&uRwWv_?k@hbg52rD7D zKdTJRFQKZEf?`GkcpAtkq%Zqu&_7Q{>$pZO?W@>zj9ov>bD4DLZ00GE>trOY)w@oa zD63qjBaQGsBH~;(;o54Xm(LWDllBWQ%ND!w|nH1dDg{K<~(f{ s%4XN+Wd3U!Q=vj@Q&0XfD|Gi8%fmnXUblVbJ^4d_s^L0VOFv@%9{?Qc>Hq)$ delta 8605 zcmZu%30Ra>_rG_Tm>HONm|-@Ug_&W70R{#TkWEApQAq(2L`6UrR}@hcX>ysF7u3h6G7*|oiIJyLMEsKGuDGD9GVifs7kVG? z5#Su)3g9{*JkEu_1HKKo2M8*GZlDC@D@i~L0V@FO0Gk2ZSzRK!U6P3I0qz58auZQ- zX(HkP20&3Mecz3qFLk3Xz!AV(r6>r5WEJP~)(=fW69H=gTZSg1@UmnS39tfU0ZD*9 zfB}GFKm}klpaC!m&{md$z6bmY2pUG)>i!pmG{b_B4Uh!r1sDVv4rlA5K0Je7US;DP?n&+ zz;{&-0*@vr8!h^B~r484h96&x`5TF#`t%RQ%z*xX! zKr6rl@BtPARshxkHUqW;_B=4CMF)m!(ILQ_fcKbOi#~c#Z$RgU8_*TNSAbhgZa{Y# zM>4|2CM-P zCc8}DDpqSx4}B6!n*f^uPqCWaUEdbp5A{|_?q`(lpE8Np#H^XI|3a^C#(nXAFeuoP z)Rdx98Cf$JS#lVe@)()>2{eFF)T4|nB?1js)N6;~Z2$9P7uEsUIPDmNA*q?t`7 zS0&-aIH-R9pdRlnBK<0hIm$nL6iprG*GBhyCfVkDptAwpE7@hhO96(JFFi%=Mn zi_l;ggT}8Vdq)qBNQ6qG7|BqiNXj9r*pmzmYy3TlqB^;}NEVD>NIE)k{$eOZh^11b z7lE%~k%x*c{&EoO#ZuP91F^|J3d9;JHi?k5TifIxLsnJmBE~_bHc*h3{Y{~1muNFoGD zl>Z7y>cpTECuKSo|BY@*ydcT-|ICHs2C5@SdZIl4U)>^$pk(7^51E!jV=i9Hade1Q zDI6`lnPk^m<6K-Qo%B#T-)x9v%e!!KKQen|v?guTAw1VZ$)<6)=oCIt-1_ zX%k-qZPikVT98EY<3UnIC3Zn#;9I&Sj&8|g|Bx7Yf43xH$HXrINx-s&EoB5xI4M%o z?soT?uCShel9Y|n;cdhVzt7R%i2X1M$3GQy{Hvg-@#=ZHI^hpj)3K}g;~bqWCI10b z!)#HZn*WpyUC*C~`RZ<#);ReqY^q}TFPVme{{|+xTZ68#nZE@FAC_47pEZP7rbQZh$RQ=TsV_l zsf&pkzy*OxsR*{SM~ZYJ*wY5F$M;PrjHRQDSn9t~uY-w`i(%rdViW@gxQ;C(q9F$F zC3y|iva4Jh$aEdo$@YdetR<0+F0%s$7eU{Mq(2t=15=V62Jdzzle)(2z7=Y)i1Io| zspKdXCKC$w&M|7rF`bQSm;pSia{@S$IT(5rm`{7>G&aeRoo(dv#)O8MZ{;{&+FOui z=C6C>Nb^~HaOWG)ZzR#!sb?3%GoBL3=@1U~z_TdM%IOi7(r5g5EPW2h-CRUKjuh!V zpgnO9YR8gI#*gK_o*|cfEz5rSdDD;8mWhqu4rn@!Ta-{8=~5|ZV1W%SrZ$l_1>ze< zi8P2R)74a@>d8b7DhkVHB4rK}MKcpc|1?qhw+U@I)3@m=m@J9f2p`F0>QPJ-Hx5Jv z?PSro@pvEkaolYD8JRr(Bn}}N6V~G-^3jAbxTq^>;#`dHkmo18i~Et*raq5&IV-Lt z$C}LKOjB#*=de?H)14A0_9*C7`_JkjBJ$U}YA2t?*hA8qZQf2$5>^3^?O4poBN6J+ zu@W}lRJynb*LAFC8`{bcn?el80*m6Id*0e{mJ6XOLg91rLvx<@t0jMJ863al?rq*a zeDbFTr{m1XYC2uU{%pETg=#r0Ob!(}inK z;g&f9lNYkSX$SnhSro#7t}J0SDq$Nr=oU;KAKTF8k>@;iNF_e>RO1t%WgrEQoAEVL|M(D*|1Z*awpL<XwHFh zMKE`4{Sj)g$f(Dtra-)6$C^#-p-a+#lFUV}%`=lv=WQ@vI%!MZ>^biFI_KA%3p=KM zdga*JDgFU=XjIkJ=^cdeN^;tl<<%UL6--l|yZio~)OV)j{uF*^*x7PwORRAUl)y*} zhYbj|ag21i0_8K(v%oLb$Fovonm}2M3@jXRhCZxhV&PqEN(;dl?^NQo7o^xY&Vf)* zD_Q0rXL}T83UXc%JrG663E3~4uyA4XsL=N!7e>=o5o!+hgwR7- zPGe3ujLmmUOKx}M_1w~a4V zk5IOPjP1+{i;iN0v>O>Y$llJx~y?OH!?+ZJF|CAJE?mzX)t4oi+(iNVxHpHLFJIJ0s5;VqIK*|skW>RxdSnY_)t z?x1cTwQbXc(GzbF?O1Om990A1$}L=3x-U3vU?w-!&{`liaboa8=s9&kxGZ7ubXvtF zlD8Hc^qFuvDCw2}M`h8KzTHnjeqNkp(+(-l{6@cL$-*>`YnIBc9E`h8(`rqaIt{2- zILTj3z3-eF zRgisYVcLLStQ%i>@q|-$WppD|jkffplwvKQWU-}EGDowhY_q2`p@RvnG0gK!&SWZd z$M&UUieshtc;>NIm!Oisgr-DBMmKmRIE^96P2Vsi3zWjBb|~xVq$-Y{i4)Sv_e)n8 zUOn{Gy%%nu*?RZJ-rww(>!ueEj$G6)1)-_wge>ca%gOm=8F&iemM6oR)O&dWoJRiT zsgS(AyxfWplXJ^$)t{{1zqWGBtxL@(Cf$52zqa)1*|oxkE};f-h~S2T52%j9wYUxWYCe7y47r>fyM!Xv70969w_ z#Dde7+(;6+rYCMDrE9FXolINfR4vS-*Ez9oVL{Ivc+t0%>{@fuurH%IWLSQm*Xr(^ zikd#KSvhWL$UN#yS!%MB7*d?HM`eXR{rGP3qjd<4#d5%@C6SeM*X`&wSe z$vrEd{c_vDQ?E0eGRp zRS6O`@C&&DlntjGo+n1L;InipzmD|XJPX=8xVZw~BJ!uwA>+w^sv2jJEl+vD$)dKH zaTCei@}}b!ZMDh9MA2r-_(i1G)^yW{`#R<&o%5#_ zs}kogyRkNZRNs&4U zzo6;#{-6F>z}Mz&ed(9&Z)X?Z4`CfrGar?!1^XIiSgvu>e;LsPp$m7qjCSUtg7$XeND=Rv^6~)VqW5;lFxUA(U<;`d#(;`I=Mi6W8jlhm5p;^~b#W-6cPsd171} zYeOb@jI0MMg$jp6C<~clE6`v5$Y~~B|!#}57Kj**s9{y$6 zF!WnR_5>-jClxlhl${!4nJ_e&J3PO+{_&QnNki(J8^+cr6|}UDli*{h^aT0wIme{y zn)eGnnp}GSsm~8TVHkVy;6se@w)k4=aa(Zbw1l&sDc&L~#RB675b zX^ZNb?0^4#cHqZ- z+h3g6mH)33%a73Z3!|CwL3Udh;V~^AOvgV@e@u0^lEWcg-u4F=v z`<%9I(huL#S5%zv3Vn_Z7qWHg70Fs~Mi~uUV2^%uO62=%nTybZn=g7$z+?FmEoA?~ zhbs8stz~@>)J8EiFSFq0YahIXlK95I3vPbm-vuMz{I`WfzV+{#M7~`p(9^@g`{2(U z@MVi%z&M6q7T`4j`Gx>*QNf=Jsp5`+U=L##|03fg{vhL6{*3^?!#J1!fU%SRn6bWN ziHX|LcdQBU1`{2mvE!IFoX!%hw04}*(&=-|;(}3lVETf+APJwVX9_-Er5giV#J3Qv z!re9qF7dF|iS%<5B-_4KtTBV{C8i$dJH*NbKB04ozPDL9#rHnrT;GR`jlMHl);Zs0 zm^_3+eAnrh8F3pG8oj=6nKhg5KdO*AkZ`ElcZaqP37{<|lm&#rbfByC-t7J$f3K2oVMn=C7318mJUNDfAFDSfy zndJfgLdJ>yN7f6ZD5vgxIW3z9AnO5u4M^cK;UmFMB;aUr^}>Lf8$80#>Q$Uq;`M z7Y=1KK%jw)!uqm|wJ_gA>$sUl+EN0MqAS___r>JVL|+WD@(czaT6sMpYKCo^S#mt-!}gbuDtDv diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 95c1bf17..3a5613a4 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 && \ + pipx install aws-sam-cli==1.0.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 7e0d730b..d2bcafb2 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 7cb2d76e..72e3053f 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index ed8631cd..a63cc78e 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -19,4 +19,4 @@ ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 1ec80353..8e3603e5 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 07df5cd9..f9389348 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 4688f91f..38c8bd39 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index ce7b8616..43562b51 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 93c0e8c2..551d0df0 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 CMD ["npm", "rebuild"] diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 5b885549..6c83f670 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -5,4 +5,4 @@ FROM lambci/lambda-base:build RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 19de2812..30bc24fa 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -26,4 +26,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.9 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index cbb8a404..4986c137 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.9 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 83e7a77c..b6fcd43b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.9 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 + pipx install aws-sam-cli==1.0.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index ae3c93dc..6acd3477 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 && \ + pipx install aws-sam-cli==1.0.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index c31ecf1a..4c3d059e 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==0.53.0 && \ + pipx install aws-sam-cli==1.0.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From f263e1664c4f82883849bbefddfd84644003374f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 21 Jul 2020 17:27:54 -0400 Subject: [PATCH 169/234] Remove yum-plugin-ovl from base build, it's now installed on the OS --- base/build/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 2d8fbc8b..4bafa8f4 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -15,7 +15,6 @@ f = open('/etc/yum.conf', 'w'); \ yum_conf.write(f); \ f.close();" && \ rpm --rebuilddb && \ - yum install -y yum-plugin-ovl && \ yum reinstall -y setup pam shadow-utils audit-libs openssl glibc-common glibc && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ From 8207111ffc8d5cde604fd8df761c6fb7b65e4e2f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 21 Jul 2020 17:49:37 -0400 Subject: [PATCH 170/234] Update poetry to 1.0.10 in python build images --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index dc20f283..ed8e9abe 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.9/get-poetry.py | POETRY_VERSION=1.0.9 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.10/get-poetry.py | POETRY_VERSION=1.0.10 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 30bc24fa..197e3afe 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -23,7 +23,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.0.9 && \ + pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==1.0.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 4986c137..e0275280 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -15,7 +15,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.0.9 && \ + pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==1.0.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index b6fcd43b..70f9ec9d 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -15,7 +15,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.0.9 && \ + pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ pipx install aws-sam-cli==1.0.0 From 72a47daca351fd2d58f08ea5a4642812a0dac4af Mon Sep 17 00:00:00 2001 From: jakub-bochenski Date: Mon, 3 Aug 2020 14:11:46 +0200 Subject: [PATCH 171/234] docs: update broken link (#302) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 484d3257..ce2b5d1a 100644 --- a/README.md +++ b/README.md @@ -196,7 +196,7 @@ docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:go1.x my_handler # Test a function from the current directory on Java 11 # The directory must be laid out in the same way the Lambda zip file is, # with top-level package source directories and a `lib` directory for third-party jars -# http://docs.aws.amazon.com/lambda/latest/dg/create-deployment-pkg-zip-java.html +# https://docs.aws.amazon.com/lambda/latest/dg/java-package.html docker run --rm -v "$PWD":/var/task:ro,delegated lambci/lambda:java11 org.myorg.MyHandler # Test on .NET Core 3.1 given a test.dll assembly in the current directory, From 7c40c85468107fa2d82bd15f728b537d6bdab23f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 31 Jul 2020 17:05:03 -0400 Subject: [PATCH 172/234] Rework base images to make them less hobbled - Reinstall all yum packages that require reinstalling - Fix filesystem breakages - Remove plugin enabling, should be always enabled now --- base/Dockerfile | 18 +++++++++++++----- base/base-2/Dockerfile | 18 +++++++++++------- base/build-2/Dockerfile | 17 +++++++++-------- base/build/Dockerfile | 20 +++++--------------- 4 files changed, 38 insertions(+), 35 deletions(-) diff --git a/base/Dockerfile b/base/Dockerfile index ab3ea957..6d447adc 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -1,9 +1,16 @@ -FROM scratch +FROM amazonlinux:1 # Docker doesn't support unpacking from remote URLs with ADD, # and we don't want to 'docker import' because we can't squash into a small layer # So this is expected to be downloaded from https://lambci.s3.amazonaws.com/fs/base.tgz -ADD ./base.tgz / +ADD ./base.tgz /opt/ + +RUN yum --installroot=/opt reinstall -y filesystem-2.4.30-3.8.amzn1 && \ + yum --installroot=/opt clean all + +FROM scratch + +COPY --from=0 /opt / ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ LD_LIBRARY_PATH=/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib \ @@ -23,10 +30,11 @@ ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ AWS_XRAY_CONTEXT_MISSING=LOG_ERROR \ _X_AMZN_TRACE_ID='Root=1-dc99d00f-c079a84d433534434534ef0d;Parent=91ed514f1e5c03b2;Sampled=1' -RUN yum reinstall -y filesystem; \ +# pam has problems reinstalling from a non-standard installroot, +# so reinstall everything except filesystem here +RUN yum reinstall -y setup-2.8.14-20.12.amzn1 audit-libs-2.6.5-3.28.amzn1 shadow-utils-4.1.4.2-13.10.amzn1 \ + openssl-1.0.2k-16.151.amzn1 glibc-2.17-292.180.amzn1 glibc-common-2.17-292.180.amzn1 pam-1.1.8-12.33.amzn1 && \ yum clean all && \ - rm -rf /var/cache/yum && \ - mkdir /tmp && \ chown sbx_user1051:495 /tmp && \ chmod 700 /tmp diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index 12b79b22..4e522317 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -1,9 +1,17 @@ -FROM scratch +FROM amazonlinux:2 # Docker doesn't support unpacking from remote URLs with ADD, # and we don't want to 'docker import' because we can't squash into a small layer # So this is expected to be downloaded from https://lambci.s3.amazonaws.com/fs/base-2.tgz -ADD ./base-2.tgz / +ADD ./base-2.tgz /opt/ + +RUN yum --installroot=/opt reinstall -y filesystem-3.2-25.amzn2.0.4 \ + setup-2.8.71-10.amzn2.0.1 glibc-2.26-34.amzn2 glibc-common-2.26-34.amzn2 && \ + yum --installroot=/opt clean all + +FROM scratch + +COPY --from=0 /opt / ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ LD_LIBRARY_PATH=/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib \ @@ -23,11 +31,7 @@ ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ AWS_XRAY_CONTEXT_MISSING=LOG_ERROR \ _X_AMZN_TRACE_ID='Root=1-dc99d00f-c079a84d433534434534ef0d;Parent=91ed514f1e5c03b2;Sampled=1' -RUN rm -rf /var/cache/yum /var/lib/rpm/__db.* && \ - > /var/log/yum.log && \ - mkdir -p /root /tmp && \ - chmod 550 /root && \ - chown sbx_user1051:495 /tmp && \ +RUN chown sbx_user1051:495 /tmp && \ chmod 700 /tmp WORKDIR /var/task diff --git a/base/build-2/Dockerfile b/base/build-2/Dockerfile index e41381b5..104c9db7 100644 --- a/base/build-2/Dockerfile +++ b/base/build-2/Dockerfile @@ -1,8 +1,10 @@ +FROM lambci/lambda-base-2 + FROM amazonlinux:2 -RUN yum list yum && \ - yum install -y --releasever=2 --installroot=/installroot yum yum-plugin-ovl yum-plugin-priorities +COPY --from=0 / /opt/ +RUN yum --installroot=/opt install -y yum yum-plugin-ovl yum-plugin-priorities FROM lambci/lambda-base-2 @@ -10,15 +12,14 @@ ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin \ PIPX_BIN_DIR=/usr/local/bin \ PIPX_HOME=/usr/local/pipx -COPY --from=0 /installroot/etc /etc/ -COPY --from=0 /installroot/usr /usr/ +COPY --from=1 /opt / -RUN yum reinstall -y filesystem setup glibc-common glibc; \ +RUN chown root:root /tmp && \ + chmod 1777 /tmp && \ yum install -y glibc-langpack-en && \ yum groupinstall -y development && \ yum install -y which clang cmake python-devel python3-devel amazon-linux-extras && \ amazon-linux-extras install -y docker && \ - pip3 install -U pip setuptools wheel --no-cache-dir && \ - pip3 install pipx --no-cache-dir && \ yum clean all && \ - rm -rf /var/cache/yum + pip3 install -U pip setuptools wheel --no-cache-dir && \ + pip3 install pipx --no-cache-dir diff --git a/base/build/Dockerfile b/base/build/Dockerfile index 4bafa8f4..d8bb2f35 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -4,27 +4,17 @@ ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin \ PIPX_BIN_DIR=/usr/local/bin \ PIPX_HOME=/usr/local/pipx -# A couple of packages are either missing critical-ish files, or didn't make it into the tar -RUN chmod 1777 /tmp && \ - /usr/bin/python3 -c "from configparser import SafeConfigParser; \ -yum_conf = SafeConfigParser(); \ -yum_conf.read('/etc/yum.conf'); \ -yum_conf.has_section('main') or yum_conf.add_section('main'); \ -yum_conf.set('main', 'plugins', '1'); \ -f = open('/etc/yum.conf', 'w'); \ -yum_conf.write(f); \ -f.close();" && \ - rpm --rebuilddb && \ - yum reinstall -y setup pam shadow-utils audit-libs openssl glibc-common glibc && \ +RUN chown root:root /tmp && \ + chmod 1777 /tmp && \ + yum groups mark convert && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ ImageMagick-devel-6.7.8.9 cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ libffi-devel expat-devel libicu-devel lua-devel gdbm-devel sqlite-devel pcre-devel libcurl-devel && \ + yum clean all && \ alternatives --set gcc /usr/bin/gcc48 && \ alternatives --set g++ /usr/bin/g++48 && \ alternatives --set cpp /usr/bin/cpp48 && \ python3 -m pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ - pipx run awscli==1.* 2>/dev/null || true && \ - yum clean all && \ - rm -rf /var/cache/yum + pipx run awscli==1.* 2>/dev/null || true From 7ece2742a5b0e84eb09d6ed659f123474e619b27 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 6 Aug 2020 10:51:48 -0400 Subject: [PATCH 173/234] Remove hardcoded AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY settings Fixes #303 --- dotnetcore2.0/run/MockBootstraps/MockRuntime.cs | 4 ++-- dotnetcore2.1/run/MockBootstraps/MockRuntime.cs | 4 ++-- go1.x/run/aws-lambda-mock.go | 4 ++-- .../src/main/java/lambdainternal/LambdaRuntime.java | 4 ++-- nodejs4.3/run/awslambda-mock.js | 4 ++-- nodejs6.10/run/awslambda-mock.js | 4 ++-- nodejs8.10/run/awslambda-mock.js | 4 ++-- provided/run/init.go | 4 ++-- python2.7/run/runtime_mock.py | 4 ++-- python3.6/run/runtime_mock.py | 4 ++-- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs index daa1df4d..7cff6ecc 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockRuntime.cs @@ -156,8 +156,8 @@ unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVar RequestId = context.RequestId, AwsCredentials = new AwsCredentials { - AccessKeyId = EnvHelper.GetOrDefault("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID"), - SecretAccessKey = EnvHelper.GetOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"), + AccessKeyId = System.Environment.GetEnvironmentVariable("AWS_ACCESS_KEY_ID"), + SecretAccessKey = System.Environment.GetEnvironmentVariable("AWS_SECRET_ACCESS_KEY"), SessionToken = System.Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN") }, XAmznTraceId = xAmznTraceId, diff --git a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs index c3827321..51ee0887 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockRuntime.cs @@ -157,8 +157,8 @@ unsafe InvokeData ILambdaRuntime.ReceiveInvoke(IDictionary initialEnvironmentVar RequestId = context.RequestId, AwsCredentials = new AwsCredentials { - AccessKeyId = EnvHelper.GetOrDefault("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID"), - SecretAccessKey = EnvHelper.GetOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"), + AccessKeyId = System.Environment.GetEnvironmentVariable("AWS_ACCESS_KEY_ID"), + SecretAccessKey = System.Environment.GetEnvironmentVariable("AWS_SECRET_ACCESS_KEY"), SessionToken = System.Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN") }, XAmznTraceId = xAmznTraceId, diff --git a/go1.x/run/aws-lambda-mock.go b/go1.x/run/aws-lambda-mock.go index 103a52d9..885f0200 100644 --- a/go1.x/run/aws-lambda-mock.go +++ b/go1.x/run/aws-lambda-mock.go @@ -76,8 +76,8 @@ func main() { } mockContext.ParseTimeout() - awsAccessKey := getEnv("AWS_ACCESS_KEY", getEnv("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID")) - awsSecretKey := getEnv("AWS_SECRET_KEY", getEnv("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY")) + awsAccessKey := getEnv("AWS_ACCESS_KEY", os.Getenv("AWS_ACCESS_KEY_ID")) + awsSecretKey := getEnv("AWS_SECRET_KEY", os.Getenv("AWS_SECRET_ACCESS_KEY")) awsSessionToken := getEnv("AWS_SESSION_TOKEN", os.Getenv("AWS_SECURITY_TOKEN")) port := getEnv("_LAMBDA_SERVER_PORT", "54321") diff --git a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java index 4737a67d..d7999155 100644 --- a/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java +++ b/java8/run/lambda-runtime-mock/src/main/java/lambdainternal/LambdaRuntime.java @@ -72,8 +72,8 @@ public class LambdaRuntime { FUNCTION_VERSION = getEnvOrDefault("AWS_LAMBDA_FUNCTION_VERSION", "$LATEST"); LOG_GROUP_NAME = getEnvOrDefault("AWS_LAMBDA_LOG_GROUP_NAME", "/aws/lambda/" + FUNCTION_NAME); LOG_STREAM_NAME = getEnvOrDefault("AWS_LAMBDA_LOG_STREAM_NAME", randomLogStreamName(FUNCTION_VERSION)); - AWS_ACCESS_KEY_ID = getEnvOrDefault("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID"); - AWS_SECRET_ACCESS_KEY = getEnvOrDefault("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY"); + AWS_ACCESS_KEY_ID = getEnv("AWS_ACCESS_KEY_ID"); + AWS_SECRET_ACCESS_KEY = getEnv("AWS_SECRET_ACCESS_KEY"); AWS_SESSION_TOKEN = getEnv("AWS_SESSION_TOKEN"); AWS_REGION = getEnvOrDefault("AWS_REGION", getEnvOrDefault("AWS_DEFAULT_REGION", "us-east-1")); diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index dec5ee15..254062e3 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -21,8 +21,8 @@ var MEM_SIZE = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE || '1536' var TIMEOUT = process.env.AWS_LAMBDA_FUNCTION_TIMEOUT || '300' var REGION = process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || 'us-east-1' var ACCOUNT_ID = process.env.AWS_ACCOUNT_ID || randomAccountId() -var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' -var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' +var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID +var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) var TRACE_ID = process.env._X_AMZN_TRACE_ID diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index dec5ee15..254062e3 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -21,8 +21,8 @@ var MEM_SIZE = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE || '1536' var TIMEOUT = process.env.AWS_LAMBDA_FUNCTION_TIMEOUT || '300' var REGION = process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || 'us-east-1' var ACCOUNT_ID = process.env.AWS_ACCOUNT_ID || randomAccountId() -var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' -var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' +var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID +var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) var TRACE_ID = process.env._X_AMZN_TRACE_ID diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index aaeab76f..ca25a49e 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -21,8 +21,8 @@ var MEM_SIZE = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE || '1536' var TIMEOUT = process.env.AWS_LAMBDA_FUNCTION_TIMEOUT || '300' var REGION = process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || 'us-east-1' var ACCOUNT_ID = process.env.AWS_ACCOUNT_ID || randomAccountId() -var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' -var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' +var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID +var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN var INVOKED_ARN = process.env.AWS_LAMBDA_FUNCTION_INVOKED_ARN || arn(REGION, ACCOUNT_ID, FN_NAME) var TRACE_ID = process.env._X_AMZN_TRACE_ID diff --git a/provided/run/init.go b/provided/run/init.go index 584f2489..6b9339c2 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -262,8 +262,8 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { return fmt.Errorf("Couldn't find valid bootstrap(s): [/var/task/bootstrap /opt/bootstrap]") } - awsAccessKey := getEnv("AWS_ACCESS_KEY", getEnv("AWS_ACCESS_KEY_ID", "SOME_ACCESS_KEY_ID")) - awsSecretKey := getEnv("AWS_SECRET_KEY", getEnv("AWS_SECRET_ACCESS_KEY", "SOME_SECRET_ACCESS_KEY")) + awsAccessKey := getEnv("AWS_ACCESS_KEY", os.Getenv("AWS_ACCESS_KEY_ID")) + awsSecretKey := getEnv("AWS_SECRET_KEY", os.Getenv("AWS_SECRET_ACCESS_KEY")) awsSessionToken := getEnv("AWS_SESSION_TOKEN", os.Getenv("AWS_SECURITY_TOKEN")) bootstrapCmd.Env = append(os.Environ(), diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index 59f428cf..a52ffe80 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -38,8 +38,8 @@ DEADLINE_MS = int(time.time() * 1000) + int(os.environ.get('AWS_LAMBDA_FUNCTION_TIMEOUT', '300')) REGION = os.environ.get('AWS_REGION', os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')) ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID', random.randint(100000000000, 999999999999)) -ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', 'SOME_ACCESS_KEY_ID') -SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', 'SOME_SECRET_ACCESS_KEY') +ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', None) +SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', None) SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN', None) INVOKEID = str(uuid.uuid4()) diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index 59f428cf..a52ffe80 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -38,8 +38,8 @@ DEADLINE_MS = int(time.time() * 1000) + int(os.environ.get('AWS_LAMBDA_FUNCTION_TIMEOUT', '300')) REGION = os.environ.get('AWS_REGION', os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')) ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID', random.randint(100000000000, 999999999999)) -ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', 'SOME_ACCESS_KEY_ID') -SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', 'SOME_SECRET_ACCESS_KEY') +ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', None) +SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', None) SESSION_TOKEN = os.environ.get('AWS_SESSION_TOKEN', None) INVOKEID = str(uuid.uuid4()) From 7a36e3efc440366c314d9c413aa83dc88b2b730c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 6 Aug 2020 12:50:15 -0400 Subject: [PATCH 174/234] Update dotnetcore2.1 Bootstrap to match production --- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 147456 -> 147968 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 44964 -> 45268 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 1e9e0796febf86a99471027dc5c25741e5b11b97..a437156cdc904e6ec6438e2ac03861485805b810 100644 GIT binary patch delta 46890 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 z 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 delta 46140 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 Date: Tue, 11 Aug 2020 19:52:38 -0400 Subject: [PATCH 175/234] Update Go to 1.15 --- base/dump-go1x/go.mod | 2 +- examples/go1.x/go.mod | 2 +- go1.x/build/Dockerfile | 2 +- go1.x/run/go.mod | 2 +- provided/run/go.mod | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/base/dump-go1x/go.mod b/base/dump-go1x/go.mod index 54262d7d..1dccccbe 100644 --- a/base/dump-go1x/go.mod +++ b/base/dump-go1x/go.mod @@ -5,4 +5,4 @@ require ( github.com/aws/aws-sdk-go-v2 v0.17.0 ) -go 1.14 +go 1.15 diff --git a/examples/go1.x/go.mod b/examples/go1.x/go.mod index 258e8af4..bcc119a6 100644 --- a/examples/go1.x/go.mod +++ b/examples/go1.x/go.mod @@ -2,4 +2,4 @@ module handler require github.com/aws/aws-lambda-go v1.13.3 -go 1.14 +go 1.15 diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index d2bcafb2..1066c7b2 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,7 +1,7 @@ FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html -ENV GOLANG_VERSION=1.14.4 \ +ENV GOLANG_VERSION=1.15 \ GOPATH=/go \ PATH=/go/bin:/usr/local/go/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_go1.x diff --git a/go1.x/run/go.mod b/go1.x/run/go.mod index 21bd0b6d..182b72af 100644 --- a/go1.x/run/go.mod +++ b/go1.x/run/go.mod @@ -2,4 +2,4 @@ module aws-lambda-mock require github.com/aws/aws-lambda-go v1.13.3 -go 1.14 +go 1.15 diff --git a/provided/run/go.mod b/provided/run/go.mod index d5e3372d..28c72849 100644 --- a/provided/run/go.mod +++ b/provided/run/go.mod @@ -6,4 +6,4 @@ require ( github.com/rjeczalik/notify v0.9.2 ) -go 1.14 +go 1.15 From 7c8130ae492b60fc20dca90e3068f39f4ad6540d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 11 Aug 2020 19:52:51 -0400 Subject: [PATCH 176/234] Update gradle to 6.6 --- java11/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 72e3053f..bda58339 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index a63cc78e..1e9bfc69 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.5.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.5.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 From 9b895e3a7da477f6415b5e57efb4fca271b18666 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 11 Aug 2020 20:33:15 -0400 Subject: [PATCH 177/234] Update dotnetcore3.1 SDK to 3.1.401 --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 3a5613a4..dcee793e 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.302 \ + DOTNET_SDK_VERSION=3.1.401 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 2ee33b57126925a8ab4f584952c033adcb82fa3b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 12 Aug 2020 15:39:57 -0400 Subject: [PATCH 178/234] Add java8.al2 runtime --- .gitignore | 2 + README.md | 2 + .../org.eclipse.buildship.core.prefs | 2 +- base/dump-java8al2/.classpath | 12 +++ base/dump-java8al2/.project | 23 +++++ .../org.eclipse.buildship.core.prefs | 13 +++ .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 8 ++ base/dump-java8al2/build.gradle | 28 ++++++ .../java/org/lambci/lambda/DumpJava8.java | 88 +++++++++++++++++++ base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 1 + docker-lambda.code-workspace | 3 + .../org.eclipse.buildship.core.prefs | 2 +- java8.al2/build/Dockerfile | 20 +++++ java8.al2/run/Dockerfile | 21 +++++ 17 files changed, 227 insertions(+), 4 deletions(-) create mode 100644 base/dump-java8al2/.classpath create mode 100644 base/dump-java8al2/.project create mode 100644 base/dump-java8al2/.settings/org.eclipse.buildship.core.prefs create mode 100644 base/dump-java8al2/.settings/org.eclipse.core.resources.prefs create mode 100644 base/dump-java8al2/.settings/org.eclipse.jdt.core.prefs create mode 100644 base/dump-java8al2/build.gradle create mode 100644 base/dump-java8al2/src/main/java/org/lambci/lambda/DumpJava8.java create mode 100644 java8.al2/build/Dockerfile create mode 100644 java8.al2/run/Dockerfile diff --git a/.gitignore b/.gitignore index 4525d854..4a897231 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,8 @@ base/diff-2 base/tar-find-layer/layer.zip base/dump-java8/bin base/dump-java8/build +base/dump-java8al2/bin +base/dump-java8al2/build base/dump-java11/bin base/dump-java11/build base/dump-dotnetcore20/bin diff --git a/README.md b/README.md index ce2b5d1a..5e0dc318 100644 --- a/README.md +++ b/README.md @@ -310,6 +310,7 @@ These follow the Lambda runtime names: - `ruby2.5` - `ruby2.7` - `java8` + - `java8.al2` - `java11` - `go1.x` - `dotnetcore2.0` @@ -328,6 +329,7 @@ These follow the Lambda runtime names: - `build-ruby2.5` - `build-ruby2.7` - `build-java8` + - `build-java8.al2` - `build-java11` - `build-go1.x` - `build-dotnetcore2.0` diff --git a/base/dump-java8/.settings/org.eclipse.buildship.core.prefs b/base/dump-java8/.settings/org.eclipse.buildship.core.prefs index 39c6821c..90865998 100644 --- a/base/dump-java8/.settings/org.eclipse.buildship.core.prefs +++ b/base/dump-java8/.settings/org.eclipse.buildship.core.prefs @@ -1,7 +1,7 @@ arguments= auto.sync=false build.scans.enabled=false -connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0-20191016123526+0000)) +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.3)) connection.project.dir= eclipse.preferences.version=1 gradle.user.home= diff --git a/base/dump-java8al2/.classpath b/base/dump-java8al2/.classpath new file mode 100644 index 00000000..4857be40 --- /dev/null +++ b/base/dump-java8al2/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/base/dump-java8al2/.project b/base/dump-java8al2/.project new file mode 100644 index 00000000..0e30deb7 --- /dev/null +++ b/base/dump-java8al2/.project @@ -0,0 +1,23 @@ + + + dump-java8 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/base/dump-java8al2/.settings/org.eclipse.buildship.core.prefs b/base/dump-java8al2/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 00000000..90865998 --- /dev/null +++ b/base/dump-java8al2/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments= +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.3)) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home= +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/base/dump-java8al2/.settings/org.eclipse.core.resources.prefs b/base/dump-java8al2/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..2b763404 --- /dev/null +++ b/base/dump-java8al2/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 diff --git a/base/dump-java8al2/.settings/org.eclipse.jdt.core.prefs b/base/dump-java8al2/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..2f5cc74c --- /dev/null +++ b/base/dump-java8al2/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/base/dump-java8al2/build.gradle b/base/dump-java8al2/build.gradle new file mode 100644 index 00000000..77e5fb16 --- /dev/null +++ b/base/dump-java8al2/build.gradle @@ -0,0 +1,28 @@ +apply plugin: 'java' + +sourceCompatibility = '1.8' +targetCompatibility = '1.8' + +repositories { + mavenCentral() +} + +dependencies { + implementation ( + 'com.amazonaws:aws-lambda-java-core:1.2.0', + 'com.amazonaws:aws-lambda-java-events:2.2.7', + 'com.amazonaws:aws-java-sdk-s3:1.11.681' + ) +} + +task buildZip(type: Zip) { + from compileJava + from processResources + into('lib') { + from configurations.runtimeClasspath + } +} + +build.dependsOn buildZip + +// docker run --rm -v "$PWD":/app -w /app gradle:jdk8 gradle build diff --git a/base/dump-java8al2/src/main/java/org/lambci/lambda/DumpJava8.java b/base/dump-java8al2/src/main/java/org/lambci/lambda/DumpJava8.java new file mode 100644 index 00000000..f842aa4a --- /dev/null +++ b/base/dump-java8al2/src/main/java/org/lambci/lambda/DumpJava8.java @@ -0,0 +1,88 @@ +package org.lambci.lambda; + +import java.io.File; +import java.io.IOException; +import java.lang.InterruptedException; +import java.lang.management.ManagementFactory; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Map; +import java.util.Scanner; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import com.amazonaws.services.s3.model.CannedAccessControlList; +import com.amazonaws.services.s3.model.PutObjectRequest; +import com.amazonaws.services.s3.model.PutObjectResult; + +public class DumpJava8 implements RequestHandler { + + @Override + public PutObjectResult handleRequest(Object input, Context context) { + String filename = "java8.al2.tgz"; + String cmd = "tar -cpzf /tmp/" + filename + " --numeric-owner --ignore-failed-read /var/runtime /var/lang"; + AmazonS3 s3client = AmazonS3ClientBuilder.standard().withRegion("us-east-1").build(); + + System.out.println(ManagementFactory.getRuntimeMXBean().getInputArguments().toString()); + System.out.println(System.getProperty("sun.java.command")); + System.out.println(System.getProperty("java.home")); + System.out.println(System.getProperty("java.library.path")); + System.out.println(System.getProperty("java.class.path")); + System.out.println(System.getProperty("user.dir")); + System.out.println(System.getProperty("user.home")); + System.out.println(System.getProperty("user.name")); + System.out.println(new File(".").getAbsolutePath()); + Map env = System.getenv(); + for (String envName : env.keySet()) { + System.out.println(envName + "=" + env.get(envName)); + } + + try { + int pid = Integer.parseInt(new File("/proc/self").getCanonicalFile().getName()); + + System.out.println("Parent cmdline:"); + System.out.println(new String(Files.readAllBytes(Paths.get("/proc/1/cmdline"))).replace("\0", " ")); + + System.out.println("Parent env:"); + runShell("xargs --null --max-args=1 < /proc/1/environ"); + + System.out.println("This cmdline:"); + System.out.println(new String(Files.readAllBytes(Paths.get("/proc/" + pid + "/cmdline"))).replace("\0", " ")); + + System.out.println("This env:"); + runShell("xargs --null --max-args=1 < /proc/" + pid + "/environ"); + + if (runShell(cmd) != 0) { + return null; + } + + System.out.println("Zipping done! Uploading..."); + + return s3client.putObject(new PutObjectRequest("lambci", "fs/" + filename, new File("/tmp/" + filename)) + .withCannedAcl(CannedAccessControlList.PublicRead)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public static int runShell(String cmd) throws IOException, InterruptedException { + Process process = Runtime.getRuntime().exec(new String[] { "sh", "-c", cmd }); + + try (Scanner stdoutScanner = new Scanner(process.getInputStream()); + Scanner stderrScanner = new Scanner(process.getErrorStream())) { + // Echo all stdout first + while (stdoutScanner.hasNextLine()) { + System.out.println(stdoutScanner.nextLine()); + } + // Then echo stderr + while (stderrScanner.hasNextLine()) { + System.err.println(stderrScanner.nextLine()); + } + } + + process.waitFor(); + return process.exitValue(); + } +} diff --git a/base/publish-all.sh b/base/publish-all.sh index 53bfce6b..e1580b82 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java11 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index 8b9c0827..c68f7292 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java11 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index aa0e1a8c..044cd6ee 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -36,6 +36,7 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:ruby2.7 lambda_function.lambda cd ${EXAMPLES_DIR}/java docker run --rm -v "$PWD":/app -w /app lambci/lambda:build-java8 gradle build docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8 org.lambci.lambda.ExampleHandler '{"some": "event"}' +docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java8.al2 org.lambci.lambda.ExampleHandler '{"some": "event"}' docker run --rm -v "$PWD/build/docker":/var/task lambci/lambda:java11 org.lambci.lambda.ExampleHandler '{"some": "event"}' cd ${EXAMPLES_DIR}/dotnetcore2.0 diff --git a/docker-lambda.code-workspace b/docker-lambda.code-workspace index 32ca28b3..975aee7f 100644 --- a/docker-lambda.code-workspace +++ b/docker-lambda.code-workspace @@ -21,6 +21,9 @@ { "path": "base/dump-java8" }, + { + "path": "base/dump-java8al2" + }, { "path": "examples/java" }, diff --git a/examples/java/.settings/org.eclipse.buildship.core.prefs b/examples/java/.settings/org.eclipse.buildship.core.prefs index 39c6821c..90865998 100644 --- a/examples/java/.settings/org.eclipse.buildship.core.prefs +++ b/examples/java/.settings/org.eclipse.buildship.core.prefs @@ -1,7 +1,7 @@ arguments= auto.sync=false build.scans.enabled=false -connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0-20191016123526+0000)) +connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.3)) connection.project.dir= eclipse.preferences.version=1 gradle.user.home= diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile new file mode 100644 index 00000000..df669031 --- /dev/null +++ b/java8.al2/build/Dockerfile @@ -0,0 +1,20 @@ +FROM lambci/lambda-base-2:build + +ENV AWS_EXECUTION_ENV=AWS_Lambda_rapid + +WORKDIR / + +RUN rm -rf /var/runtime /var/lang && \ + curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ + yum install -y java-1.8.0-openjdk-devel && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ + unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ + curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ + tar -zx -C /usr/local/maven + +ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" + +# Add these as a separate layer as they get updated frequently +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==1.0.0 diff --git a/java8.al2/run/Dockerfile b/java8.al2/run/Dockerfile new file mode 100644 index 00000000..7c912988 --- /dev/null +++ b/java8.al2/run/Dockerfile @@ -0,0 +1,21 @@ +FROM lambci/lambda-base + +RUN curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C /opt + + +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_rapid + +COPY --from=0 /opt/* /var/ + +COPY --from=1 /var/runtime/init /var/rapid/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/rapid/init", "--bootstrap", "/var/runtime/bootstrap", "--enable-msg-logs"] From 644e1035b8720e719b75c5bb1faa1ecc2366dcb1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 12 Aug 2020 16:08:03 -0400 Subject: [PATCH 179/234] Fix path for java8.al2 tarball --- java8/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 1e9bfc69..31a34c2d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -5,7 +5,7 @@ ENV AWS_EXECUTION_ENV=AWS_Lambda_java8 WORKDIR / RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ + curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ From 2d48569a26bd5a2f2b1fa0fe9eb3500d0e05714c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 12 Aug 2020 16:20:35 -0400 Subject: [PATCH 180/234] Add java8.al2 to build-all script --- base/build-all.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/build-all.sh b/base/build-all.sh index 88ad7919..914a9cff 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java11 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" TOP_DIR="${PWD}/.." From 8a91a64714c10c11e1b0f0fdd5a5afa365fb9ea0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 12 Aug 2020 16:39:19 -0400 Subject: [PATCH 181/234] Add provided.al2 runtime --- .gitignore | 4 ++ README.md | 2 + base/build-all.sh | 2 +- base/dump-providedal2/bootstrap.go | 87 ++++++++++++++++++++++++++++++ base/dump-providedal2/go.mod | 8 +++ base/dump-providedal2/go.sum | 26 +++++++++ base/publish-all.sh | 2 +- base/tag-all.sh | 2 +- base/test-all.sh | 4 ++ examples/provided.al2/bootstrap.go | 27 ++++++++++ examples/provided.al2/go.mod | 8 +++ examples/provided.al2/go.sum | 27 ++++++++++ provided.al2/build/Dockerfile | 6 +++ provided.al2/run/Dockerfile | 13 +++++ 14 files changed, 215 insertions(+), 3 deletions(-) create mode 100644 base/dump-providedal2/bootstrap.go create mode 100644 base/dump-providedal2/go.mod create mode 100644 base/dump-providedal2/go.sum create mode 100644 examples/provided.al2/bootstrap.go create mode 100644 examples/provided.al2/go.mod create mode 100644 examples/provided.al2/go.sum create mode 100644 provided.al2/build/Dockerfile create mode 100644 provided.al2/run/Dockerfile diff --git a/.gitignore b/.gitignore index 4a897231..f335be0f 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,8 @@ base/dump-dotnetcore21/bin base/dump-dotnetcore21/obj base/dump-dotnetcore31/bin base/dump-dotnetcore31/obj +base/dump-providedal2/bootstrap +base/dump-providedal2/bootstrap.zip dotnetcore2.0/run/MockBootstraps/bin dotnetcore2.0/run/MockBootstraps/obj dotnetcore2.1/run/MockBootstraps/bin @@ -35,3 +37,5 @@ examples/dotnetcore3.1/pub examples/java/bin examples/java/build examples/go1.x/handler +examples/go1.x/handler +examples/provided.al2/bootstrap diff --git a/README.md b/README.md index 5e0dc318..df924a37 100644 --- a/README.md +++ b/README.md @@ -317,6 +317,7 @@ These follow the Lambda runtime names: - `dotnetcore2.1` - `dotnetcore3.1` - `provided` + - `provided.al2` - `build-nodejs4.3` - `build-nodejs6.10` - `build-nodejs8.10` @@ -336,6 +337,7 @@ These follow the Lambda runtime names: - `build-dotnetcore2.1` - `build-dotnetcore3.1` - `build-provided` + - `build-provided.al2` ## Verifying images diff --git a/base/build-all.sh b/base/build-all.sh index 914a9cff..9a0e6e31 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" TOP_DIR="${PWD}/.." diff --git a/base/dump-providedal2/bootstrap.go b/base/dump-providedal2/bootstrap.go new file mode 100644 index 00000000..a0f1d7b3 --- /dev/null +++ b/base/dump-providedal2/bootstrap.go @@ -0,0 +1,87 @@ +// docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c \ +// 'go mod download && go build -tags lambda.norpc -ldflags="-s -w" bootstrap.go' && \ +// zip bootstrap.zip bootstrap + +package main + +import ( + "context" + "fmt" + "io/ioutil" + "log" + "os" + "os/exec" + "strings" + + "github.com/aws/aws-lambda-go/lambda" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/external" + "github.com/aws/aws-sdk-go-v2/service/s3" +) + +func handleRequest(ctx context.Context, event interface{}) (*s3.PutObjectResponse, error) { + filename := "provided.al2.tgz" + + runShell("tar -cpzf /tmp/" + filename + " --numeric-owner --ignore-failed-read /var/runtime /var/lang") + + fmt.Println("Zipping done! Uploading...") + + cfg, err := external.LoadDefaultAWSConfig() + if err != nil { + log.Fatal(err) + } + + file, err := os.Open("/tmp/" + filename) + if err != nil { + log.Fatal(err) + } + + resp, err := s3.New(cfg).PutObjectRequest(&s3.PutObjectInput{ + ACL: s3.ObjectCannedACLPublicRead, + Body: file, + Bucket: aws.String("lambci"), + Key: aws.String("fs/" + filename), + }).Send(context.Background()) + if err != nil { + log.Fatal(err) + } + + fmt.Println("Uploading done!") + + fmt.Println("Parent env:") + runShell("xargs --null --max-args=1 < /proc/1/environ") + + fmt.Println("Parent cmdline:") + content, err := ioutil.ReadFile("/proc/1/cmdline") + fmt.Println(strings.ReplaceAll(string(content), "\x00", " ")) + + fmt.Println("os.Args:") + for _, a := range os.Args { + fmt.Println(a) + } + + fmt.Println("os.Getwd:") + pwd, _ := os.Getwd() + fmt.Println(pwd) + + fmt.Println("os.Environ:") + for _, e := range os.Environ() { + fmt.Println(e) + } + + fmt.Println("ctx:") + fmt.Println(ctx) + + return resp, nil +} + +func runShell(shellCmd string) { + cmd := exec.Command("sh", "-c", shellCmd) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + cmd.Run() +} + +func main() { + lambda.Start(handleRequest) +} diff --git a/base/dump-providedal2/go.mod b/base/dump-providedal2/go.mod new file mode 100644 index 00000000..4fc94c95 --- /dev/null +++ b/base/dump-providedal2/go.mod @@ -0,0 +1,8 @@ +module bootstrap + +require ( + github.com/aws/aws-lambda-go v1.19.0 + github.com/aws/aws-sdk-go-v2 v0.24.0 +) + +go 1.15 diff --git a/base/dump-providedal2/go.sum b/base/dump-providedal2/go.sum new file mode 100644 index 00000000..0b1fc768 --- /dev/null +++ b/base/dump-providedal2/go.sum @@ -0,0 +1,26 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/aws/aws-lambda-go v1.19.0/go.mod h1:jJmlefzPfGnckuHdXX7/80O3BvUUi12XOkbv4w9SGLU= +github.com/aws/aws-sdk-go-v2 v0.24.0/go.mod h1:2LhT7UgHOXK3UXONKI5OMgIyoQL6zTAw/jwIeX6yqzw= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/base/publish-all.sh b/base/publish-all.sh index e1580b82..9cdc5d45 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/tag-all.sh b/base/tag-all.sh index c68f7292..0591bf34 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" git tag -f latest diff --git a/base/test-all.sh b/base/test-all.sh index 044cd6ee..c6a40c0e 100755 --- a/base/test-all.sh +++ b/base/test-all.sh @@ -58,6 +58,10 @@ docker run --rm -v "$PWD":/var/task lambci/lambda:go1.x handler '{"Records": []} cd ${EXAMPLES_DIR}/provided docker run --rm -v "$PWD":/var/task lambci/lambda:provided handler '{"some": "event"}' +cd ${EXAMPLES_DIR}/provided.al2 +docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'go mod download && go build -tags lambda.norpc bootstrap.go' +docker run --rm -v "$PWD":/var/task lambci/lambda:provided.al2 handler '{"Records": []}' + # To invoke and keep open: # cd ${EXAMPLES_DIR}/ruby # docker run --rm -v $PWD:/var/task -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ diff --git a/examples/provided.al2/bootstrap.go b/examples/provided.al2/bootstrap.go new file mode 100644 index 00000000..e71e3518 --- /dev/null +++ b/examples/provided.al2/bootstrap.go @@ -0,0 +1,27 @@ +// Compile with: +// docker run --rm -v "$PWD":/go/src/handler lambci/lambda:build-go1.x sh -c 'go mod download && go build -tags lambda.norpc bootstrap.go' + +// Run with: +// docker run --rm -v "$PWD":/var/task lambci/lambda:provided.al2 handler '{"Records": []}' + +package main + +import ( + "context" + "fmt" + + "github.com/aws/aws-lambda-go/events" + "github.com/aws/aws-lambda-go/lambda" +) + +func handleRequest(ctx context.Context, event events.S3Event) (string, error) { + fmt.Println(ctx) + + fmt.Println(event) + + return "Hello World!", nil +} + +func main() { + lambda.Start(handleRequest) +} diff --git a/examples/provided.al2/go.mod b/examples/provided.al2/go.mod new file mode 100644 index 00000000..4fc94c95 --- /dev/null +++ b/examples/provided.al2/go.mod @@ -0,0 +1,8 @@ +module bootstrap + +require ( + github.com/aws/aws-lambda-go v1.19.0 + github.com/aws/aws-sdk-go-v2 v0.24.0 +) + +go 1.15 diff --git a/examples/provided.al2/go.sum b/examples/provided.al2/go.sum new file mode 100644 index 00000000..8da6f30f --- /dev/null +++ b/examples/provided.al2/go.sum @@ -0,0 +1,27 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/aws/aws-lambda-go v1.19.0 h1:Cn28zA8Mic4NpR7p4IlaEW2srI+U3+I7tRqjFMpt/fs= +github.com/aws/aws-lambda-go v1.19.0/go.mod h1:jJmlefzPfGnckuHdXX7/80O3BvUUi12XOkbv4w9SGLU= +github.com/aws/aws-sdk-go-v2 v0.24.0/go.mod h1:2LhT7UgHOXK3UXONKI5OMgIyoQL6zTAw/jwIeX6yqzw= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile new file mode 100644 index 00000000..cf5e84ea --- /dev/null +++ b/provided.al2/build/Dockerfile @@ -0,0 +1,6 @@ +FROM lambci/lambda-base-2:build + +# Add these as a separate layer as they get updated frequently +RUN pipx install awscli==1.* && \ + pipx install aws-lambda-builders==1.0.0 && \ + pipx install aws-sam-cli==1.0.0 diff --git a/provided.al2/run/Dockerfile b/provided.al2/run/Dockerfile new file mode 100644 index 00000000..19e39287 --- /dev/null +++ b/provided.al2/run/Dockerfile @@ -0,0 +1,13 @@ +FROM lambci/lambda:provided + + +FROM lambci/lambda-base-2 + +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH + +COPY --from=0 /var/runtime/init /var/runtime/init + +USER sbx_user1051 + +ENTRYPOINT ["/var/runtime/init"] From b36a9e9195cc9ffad667c9ced210962b779c57d0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 12 Aug 2020 16:42:54 -0400 Subject: [PATCH 182/234] *Really* fix path for java8.al2 tarball --- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index df669031..920a5cfb 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -5,7 +5,7 @@ ENV AWS_EXECUTION_ENV=AWS_Lambda_rapid WORKDIR / RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ + curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 31a34c2d..1e9bfc69 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -5,7 +5,7 @@ ENV AWS_EXECUTION_ENV=AWS_Lambda_java8 WORKDIR / RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C / && \ + curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ From 63efae981cbabeda26ce6c05458a17b4c16666c1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 12 Aug 2020 21:19:52 -0400 Subject: [PATCH 183/234] Update aws-sam-cli to 1.1.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 3 +-- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 20 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 34c89f9c..2ea4bb08 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -26,6 +26,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 7f52d4b8..69c765d5 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -27,7 +27,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 && \ + pipx install aws-sam-cli==1.1.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index dcee793e..8868f243 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 && \ + pipx install aws-sam-cli==1.1.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 1066c7b2..7e0d2162 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index bda58339..557a2600 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 920a5cfb..e1ca8445 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -6,7 +6,6 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C / && \ - yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ @@ -17,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 1e9bfc69..e526e1b3 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -19,4 +19,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/b RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 8e3603e5..84c48611 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index f9389348..c95ab18c 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 38c8bd39..c029f7d6 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 43562b51..7a50d8f6 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 551d0df0..07a537ce 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index cf5e84ea..e8fb0ed8 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -3,4 +3,4 @@ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 6c83f670..3e04210a 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -5,4 +5,4 @@ FROM lambci/lambda-base:build RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 197e3afe..2396e3ed 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -26,4 +26,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index e0275280..56632d18 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 70f9ec9d..8b17b047 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 + pipx install aws-sam-cli==1.1.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 6acd3477..7e49af84 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 && \ + pipx install aws-sam-cli==1.1.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 4c3d059e..a5a0e4bc 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.0.0 && \ + pipx install aws-sam-cli==1.1.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 2b4ab8c6a98bdd1eb17394598d287f4d6e854748 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 13 Aug 2020 20:57:30 -0400 Subject: [PATCH 184/234] Fix JDK on java8.al2 --- java8.al2/build/Dockerfile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index e1ca8445..73fcb5f6 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -1,11 +1,14 @@ FROM lambci/lambda-base-2:build -ENV AWS_EXECUTION_ENV=AWS_Lambda_rapid +ENV PATH=/var/lang/bin:$PATH \ + LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ + AWS_EXECUTION_ENV=AWS_Lambda_rapid -WORKDIR / - -RUN rm -rf /var/runtime /var/lang && \ +RUN rm -rf /var/runtime && \ curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C / && \ + rm -rf /var/lang/* && \ + curl -sSL https://corretto.aws/downloads/resources/8.252.09.1/amazon-corretto-8.252.09.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ + rm -rf /var/lang/*.zip && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ From 7f6815f1661a8bb8745bd4dfe9bd7e3b1ba0136d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 18 Aug 2020 10:36:51 -0400 Subject: [PATCH 185/234] Remove date-tagged image locally after publishing --- base/publish-all.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/base/publish-all.sh b/base/publish-all.sh index 9cdc5d45..da170994 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -29,4 +29,5 @@ for RUNTIME in $RUNTIMES; do docker tag lambci/lambda:build-${RUNTIME} lambci/lambda:${PUBLISH_DATE}-build-${RUNTIME} docker push lambci/lambda:build-${RUNTIME} docker push lambci/lambda:${PUBLISH_DATE}-build-${RUNTIME} + docker rmi lambci/lambda:${PUBLISH_DATE}-build-${RUNTIME} done From 42582d6fa2066d591ef0ce61170f4304dffbcecc Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 20 Aug 2020 13:09:02 -0400 Subject: [PATCH 186/234] Quieten unzipping in java builds --- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 557a2600..9165d29e 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -7,7 +7,7 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ - unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ + unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 73fcb5f6..4cbcc42f 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -10,7 +10,7 @@ RUN rm -rf /var/runtime && \ curl -sSL https://corretto.aws/downloads/resources/8.252.09.1/amazon-corretto-8.252.09.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ rm -rf /var/lang/*.zip && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ - unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ + unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index e526e1b3..de0e2309 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ - unzip -d /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ + unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven From a64a88947030c9bd3b3a35160349851be2969a18 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 20 Aug 2020 13:09:17 -0400 Subject: [PATCH 187/234] Bump bcrypt dep in example --- .../nodejs-native-module/package-lock.json | 38 +++++++++---------- examples/nodejs-native-module/package.json | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/examples/nodejs-native-module/package-lock.json b/examples/nodejs-native-module/package-lock.json index 4efd95c6..1beaa4c1 100644 --- a/examples/nodejs-native-module/package-lock.json +++ b/examples/nodejs-native-module/package-lock.json @@ -34,12 +34,12 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "bcrypt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-4.0.1.tgz", - "integrity": "sha512-hSIZHkUxIDS5zA2o00Kf2O5RfVbQ888n54xQoF/eIaquU4uaLxK8vhhBdktd0B3n2MjkcAWzv4mnhogykBKOUQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz", + "integrity": "sha512-jB0yCBl4W/kVHM2whjfyqnxTmOHkCX4kHEa5nYKSoGeYe8YrjTYTc87/6bwt1g8cmV0QrbhKriETg9jWtcREhg==", "requires": { - "node-addon-api": "^2.0.0", - "node-pre-gyp": "0.14.0" + "node-addon-api": "^3.0.0", + "node-pre-gyp": "0.15.0" } }, "brace-expansion": { @@ -224,9 +224,9 @@ } }, "mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { "minimist": "^1.2.5" } @@ -237,9 +237,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "needle": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.3.tgz", - "integrity": "sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", + "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==", "requires": { "debug": "^3.2.6", "iconv-lite": "^0.4.4", @@ -247,18 +247,18 @@ } }, "node-addon-api": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.0.tgz", - "integrity": "sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" }, "node-pre-gyp": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz", - "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz", + "integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==", "requires": { "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", + "mkdirp": "^0.5.3", + "needle": "^2.5.0", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", diff --git a/examples/nodejs-native-module/package.json b/examples/nodejs-native-module/package.json index 7a043bda..1917e45b 100644 --- a/examples/nodejs-native-module/package.json +++ b/examples/nodejs-native-module/package.json @@ -7,6 +7,6 @@ "test": "node test.js" }, "dependencies": { - "bcrypt": "^4.0.1" + "bcrypt": "^5.0.0" } } From 91cf2ab632ec456af72eedc944f0dedc4452782f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 20 Aug 2020 13:09:38 -0400 Subject: [PATCH 188/234] Update dotnetcore2.1 bootstrap to match latest prod --- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 147968 -> 147968 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 45268 -> 45932 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index a437156cdc904e6ec6438e2ac03861485805b810..2adc509b9298cd3e15d84431b050b26ebc7b59de 100644 GIT binary patch delta 8260 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 delta 8333 zcmZ|V3sltA_6P9255w@|rGqe`W`G8YiU@)-DjE-!hs=umo zg$153Ebv^mNO#q5#oDSRU07sx)q7cZ(uLT=y?Hc)QLe5m!Zikau#Iu9`8Y4cH=BX@ zO6A`S+#!B1z~!9JbmP5{sa z_IjijK<$HscJ3M<=O4wOCoc}_%nN74c(Guwhsypto-JbUzsG&WXgwc2F~;DkNe{%f z=?X->@89d&;t~!Xx%cX3SGf^I6P zElLe#GKm-aWnOyM`t--;1B1i^wU^SbW7l|oM7sg_b%6E|eht9Oy90)|@SpP*@k7ty zx}8y|hexA4VX-UMyvT8gKX=T}YmL7*|2HsajlYkdclZws^!~nnz9BcB{5Grql=vYXQ`NFvQLuvTL>spI?HtsGDyXcWd05okcR7$%!go) zgP7)#WIhbPkuGaV<|7a_QB70Mn>h-_q(I)x_pp()f$Il2Lz>8&IR*hw)AC$Df{j$l zoB0Wj{3YJZaqyYsP^D(x%?a2uNy*NeISC&XD_!T!oPyZNN(*>1r=gq_%$Gj{`$(U0 z{R~%0)A;gdq2m-au8Hd$6iZdWmnore9;&9mFrHSxk0~LXAIZ=OTZf2n?o=_b0=`Yr zb1jjohB#}g`8*txa(3)w(L+6)sdfL_ojGn&N!W-g^EJ?y$aOmgTk)_Dh{c^qQi(b1zJ3CgOXS6K1vs`@rYUr34WAVin3Y$X`EPfbTCY#YlB!+@NMkw*tQY`*Bq)i5R1V^-~Hw#1? zjoTa6&Cm&RNQO`&>xB8F?T-r;3pvz&p%cFOtXQyuFJZHE#{E)GsE;+kqj-kYoH5qY z1s{;cK4E|$417+EtA>kdg_d9pmQqJF1am0+E%_go5Zt3Os7sz@>58}hDaJXf;Arw( zOBgoJ5v+prese87Ftl7qo!vb#LP|~A6HRTI&C(M`w5ih43nxj{X&a-LSt4+{5_}o4 z**yZ6NbLtL!U%nEr&NUliqiBDiN8v!B_i>zlvA5$58;_^?qAJRTOx6k60CU408zMv z^mTUwMB{gD(nCKyMJnlc7yIEIsX7?d&&Xm>H&4u2tvS|(ud~FUf#@dHg>=1#$ihj+ zo1gsciwPsdm6m50l0UNy!ZRdsKE-2~1uDBXX0K%^K2I8)^Nqujgl|cz zlPwvyC}}fOk6M!PW2p*lUg~kKU6jQpU(gT3I?6^QA2bic!z$yipR<gw(D=A^Z+STqCY$=)sYK0gDwc4-nypq4h`*6#;d0XB{szdx*GbRvt4=n)MOw(OI@$OEDPvqHzhnM{G;y4fYd0yu7z$(X zD+keHG;$tMlI@Mf6O^6g%a6tLq)UAHv3R+yva@v@`n{wMRi9B^txsVmQo^Wa%Tw5m zbgP4r_#59nhpzzmWhE`}>dstL6SJrwdgMsTh8A=z<2)$nZ(vQEIR zOU3vm&r9h6)?(~QTH@DgDaL523T?GtGS3E4R*-wmG8vPU@b~CYn2f_o&T)FK98&+T zfAC75WpV}F%Ac*NnBySc@2^D&`3(gvALC*A8JvKL5R<{I-HJRqg!EXN~KmD-u% zpX=EJTK*f ze?Rf2)rluoiL3(RBL=`?Jg{1+@6c`5m(aFG$vAYkbt(G1rnEQiu=Q08U(4m-1JA_$ zY+ZrN1iA8uUbe2pjjt=6;#z}-bxL>RZd+f+9Fl451M500eM4ncL3-O8*h1PA*50-r zpIWc7=X$rdZNLLkRnTJXXnPZnOY!@FM$V1cOr;}|LTqni=>|3MlZ>9WcktGmN`Yge zY@0A(qmT>U>KSKy7x$1h1|{0w$IWl4tfp5{#%64MTj^xaqKqvV@s84+o~gDE@VR$| zsvPj#M5}EpE>MKLiDPUvxVcS5wpxsQPn1@`8!+AW2_}*b;dI+}oGewXoewUv?Z8qg zCnQFfbIl^fMK82{iaV9$N%}eNm#XUMI&!=l9&z0~UXYsbzF5YoC5IW=_n1l=9cF;< z(N402guo9thLjtETt!mi2JT1OG5q*_*V+@Aj(w^`u67c?p#kE)<|KZv253v|$aR{s zeU?kMQ+R>0LzXLCS1D_-wAfCg?`GK`pA+FUhAY89eqVD22e+x!b_T5u$qFbl>fvXc zBBfrDKjSJ@s!g%~Zu=S6t4eK_{Q=jzl+ElP0%x&?vibdy>ob+{v#XeIBn; zrD*#+wr-YhE9x~^kG@-E-;hvXWcApc^d`Tw)?+fMfL~|oF`r}{E;Lt4ZK57mNvTcL z<8D={iRJ6@D^;n9P#M_Ei8Ly4Jh?gmJ#dqeqPs%K8u{EJ# zt2{E=q)ee6q_5&b_#5U>(&>2Q%2I+C_)W(poI+ZWDfEI=HGCeO)$S7R5OVMj24jZp z)L+JqHDZY>{`UxX`!84^rJk58I9aM1iZk*vuHdUw`L6_T`xShbbTHB1{wsb?nv(pe z{TiN;QnOsgMyV#xqx{p&b-XI&aB7W@8{j&&Qt05}4ZN=gYD;)_1NGZPYfYZv{5Iw$ zwv%#dgZYK=CI(XW7=JO|!eGjx_>1uthErC{&zV+?qO6YJRkY$jC5L?B-Nr-;MQ^t; zjU-yTjhQ6T+8rEA60P0A2_(_lZ#b1CTKf%Wkwj~Ev797YyNe4+4$<51_%c!S_B*bU zazUQou>I*9jhf>e{|(A?hkdpK2PT3T*2*DT6r4mR2EV>xB>1}AbYq^uy< zWd9RirtBFk%@L>B%d>34&Nn#To>=sFE!h?0&F6MMmn632 z;b3vZr}*LaV8ckOMab-=>-pupnLLu%uLql|1nc=9AUs&P65rE&yT%SmHKE81>=fxN z{|N5KZb((i-FILP-44;43vR{M*!@|&l=_q(z*42uc@e;DQk7t5jk*9ff#mPrsC$H! zk#>4C>N>KeBsb4SU1zqI^bS`Swv`m^)u;<%`y9lBoFVK-lEb@E*Nruk{Cpa9q3kxv z$<>{Cek$6o1RrSBg|jZCS6DRkVv(eH_h{(N5=a+4q9KB1k|I2#p${wiR9^oo;Rt6W zE2D6%S2Xlxi%6|pQEUxqlXo;kv(2PIKGD#R?ILaEieX1daS#o$>;fr37Y+ScE2$%I zW&rc~3<~5fc4*NM$AUgnd#Z!93=<0@J%&ONq-|0$QtF8@vB8vm;nt`#G3!IwAeQ}^ zYghfSfzwq9f6_0GOk(q-nmmW~Xkp3BDOCqu_$^a1TTU83%EGm)c5uV<=r~9Nx)+9m zjh$3Nud&fwmq@$A7ntqrF6l;aI6qPJpNkze;jh6~o&}KJ?6tt0$+|0f{>lIHmdRpB z8~J;DCQFbK=jg?enJmpAS*IQ4{XWUEl%S!@q4rO*BGS2_EncJ88qy+biqB~F4k_9; z+B}+lMCxPB=h{ok&$`)uG&`iE{hA#LquFVaEnKMib9s`~X@`RZTPgfU{{clHxtpOspc$JN^)9en{(KQq*W99`i^0{NQHyvna8r9cFLQi zI_+FmD2!tlRH(%y2(^%A_7J*H1FZ=yY#j6YLbe7k=A`(HV}Yb}yRTs!3v1J2^HXf7 zlGacdrsc7bQtCY*k7aX-njzcNfRA8KlJ?hwb^yA*H4% zU@u9jSqhkoDs$bA*$dce(joWL_CmISGzu@+C$Mco4*o)4sT2HChHBCY?68!YbOJk0 z1OMS>fC=mz>72U(idg+al@r-z%2Kq$_KD1QmpD#p&Zk)?DK+QQtgDox5*pyJ{b|-y zvJ%SqekZZmhXxk2gog$evs9}5fVHqq))c4%?@(O{BH%ckv&rmK4O# zi|K5SlvvN9hf;Qc!gFrr_EHwIN9u z25TVc-1M0<*)`H^cYWq8c8^q}^X-~Bo9Xrf|5DSGF(0W)aJf}@m$ANkYtt_;>d#`c zw;v0_mM;yu=4Ws2Z@QoO$*&oItSnn}Vf(QLoS}E~)U@qsm+^|Z-vx`uN_fA`?u+jzFkwDRdV*3Gc#y`vtAp2(t4dR7t< z1+3my^u;J*K<%>^vBxW|?`0P^-(0w$R`y7hp?9h*T~}l1ks3?ZdJMViv9#BKp%w#{ z-k36^BxUKe6+<_zSh`}(P^&ddTe>o|w<}B8b_^BTvD9YI&_{cg);ch>-GL=DM}{07 zSt>$YhEm7!o)mNL6DG_^ZR+uayya%0KU zouU5jEbaDS=$Hpf#-0q>da_iBScQ1co1y34h(3ruEZy;CsLhw9o_^@($I>aptB6K{ z3^@ei4In;5j2y_&$bmAJp5Vo&fh-*jLc<`If`S=J3}#6;gdw{Smg*2sBF+e9Xi+Fj z?-7;5Sn3gu3BoY};w{9~K@3eE#FAwMb})jab%+g!qaqoa63Nni#5af!qZoQ0#nPE* zhJI0vW+^Y8p*is^zfhbZ!`g|VSMU)S22+6+=z}R(f<3r`C-_4Egh31xK|Sn)BXAln z!A-aaPvIqe1eRq;3ic2I@iH97K>;j=R(J5o+Ne zoWONtfNRJSxms5B@Ea(Y zi^v=XKnfJY1~>^1LCHcywlEsXU_Xd0MHB$zU>WR%>!4&MA`|d{QY$fivJw`qC?<7l z+!;#vR#rtOCLL=rSz0R-W1~!YU4<4Z^mA7gYK2Ge4Bo(JP_R`YRgi!In1MAof*TBg zS~v@wohq#ZJ$qFugXOT>UX6?$)W{vOV3G`n0taDIb-Li7PS@ZU_{~9s!W=ay#!-{% z;h>`yX*+3AXOKdWlQy-1*jbx&zzpoc)mcJI;Urw^CLv81VQdNYcIiZ`VGA6Gv+xLH ztZOGSaMhu7$bo7&05{+__}x{PR(025>NM zf-#tbt(zYG0$dNhSc>kUN3-BGd;zJuuws2mb=Rj1m;m{(2x>suQ=e{vnTI}&_2^6w zpbcKZM_@cVld>l+^ls?}6y#}u0t1SGI2aD8kO31QA7*$86B^>PHpFLbNQz#DWC`}* z3ZCE(BcKF$I0a8Z+uM)~fb+(Lx-uh@^fDp`=nh`c8v-F5hQM`r3kE($lni@)j7j2a zOa@>E*5C+k;0=A?O;=+Yh&Tdf`I?Z1p9vZI35zzRR6kS70U68_4$I^fQhMtrr7w`+ zFQrr{1)JVd>I{wfRy$_3p|CF0cI2$Xh!)kBT!he8CA=p@R}p>Kx~_VK^K}iunWxt9+tyqI3%x> znUhJ7Iaz=mxIkYBhZGnO1u#Fzg5JUxPz<&pHRu#PPdul{% zf}?O=-ob%lBOGWLq(D04z?2AKFh{x);YhdO9!Pv0=?UU<_yP`*LK`Pq5$QzhVKeNE zBpC{wNk7V&Ou-WD!4*8g9|9l@VqhpFLm4cK>PCjq-G~DlaDpB%074-ehCmXGhH)@8 z+J(M?YK#l%#|R4&=9m9dAe$Hka)aIw218&JOoSOw4l7|Z?1qDI0?xxVxC0O28N7wB zAR4SdnxGF-um&e^A1q9&K)#NDy$F`aj-_-Q#S}GIOe0||WW(&i_*xl-uat5mm9Pe? zVF&DiLvRuMp6EPzT_4OLJJ4Y2RqfO>Q|PLEpP0$h`q>(QNW^+xm{&WPIJ zHGGzr8<8TO$%v$6C6Bnp2uVP^l)@nvhRZ9&loszwTjCp+2mbOryn7$SzR(ZwP&m_V z0A2)u@P)+C4EG?!UkSQ-)H*g%{c*uqv zd6`GhM8rvu3zH!a7%!WDgGM(^J#CcE#^W|ly z2Q5Hc2#bK1m%WQvf>;5SuvA`lI&wMU3RnrN=5R@UnCHSxE)a64nHd~J1_#J4>TjybYABINAvqQv@)9~Jv`*_~sQ zIACnU(gbg1W;lN($qhf;sT;47?5rnjf_~8h4HXiz$~e=zk*g;0;mMoSdtq*kViyfG zb>hD!uQk8M9dV3(yP|RFK-Z?>qs*2#T`u*i8x%Y{Z0^@u|0knojQqmy8d;^6&craK z)0tA9DP5xxl#`ViI%3>7zAjV8qVyCu(5_`sNM&JT3%m8#JEF$f(dri2R<$-7qpb^n z@a0CXX;_+~sv;7GSlrInWSUqkG2n&`kX9|tFTS7m;>FsDi=FSxpI2>Op!#6um6+)_ zG+*TxHr&b_prEk^e~vI_O8@HWlx=Fhg|n=`R{ri>!sn=nOG@oZ3pc+v{N;%17000X zto8fiE{l8eBeIt=@%+bZJS`cMzAEt+IqlXPaINVS{-&WuI*Ozr9K@u;;^`SrklKne zW#L-V6Ey@)FjY`$R}M*;EPr#W+PL*%rBCm^9B5H4x$>#StW~pM*vuNYwDP+@pWAi& zWV(w!Uy)m=YJ&~Og`=7w;ms$zsCDf~yA)oO@QIVnn4^5*WD7-gqG^29AsykK? z^Ii3STfxZh+I(BVVEVSg?Eh3RRCi2K_+9n?odS;(Bz%Z77D%w~>U>CnOOK9z)&Fll zNA#1-*xk_vJ)`*RQ%7rk8|}@v(Y%C{OH!o%-DsT^l{GrH`k%81%k3%*S@hRuA}pq% zuE35FFBL9iT!{Ck+1S-{@6KrKY&sWuy<~IZy_osUA!m2`W?s4Po?T#=|ejvuVCC)Logmwb@iG((ld3JqY;NxD;ubOW-(WkIqF8^qHn&MK-(-1jBh0zjT$*0c8Dz@10V~RM8vt=l^ z{zhBXyp1b&+&wSdUmEe%wzuyox0pAhKi;le^Wn3`@v{vZitHG6Q$By8*cLsup5xYh zHS%4S@uaajbDPu4)R=vq)3*7Dp2cqW+Z!N`(YGk$B{MUbbiQz=FhlJ;Zr|>U;nL~H zcWd9;ZRY!6NP<%PN-MjmJN77euh%GCX)=KSab^NqZd2rbII+EVU|Om|s`imfPBTwz zEj=X}I`!$5ZVgv2`nP_aJhES*h}8_jBvY z&NX?SNGjorXL(v}JH71^mvHRyA1^-V&AKzT_VJ^(x7SM7+iYAJv#-*i`=|P3`{9%L zYqPp{e7f7MckcWX-*4Rs%tb@6>vZG)~mLb!d6CP~I4ef_L*DC}D3$&&CBc~&LK8BT|M-`h`rTqtcA zF#AX0e8T5}8AWrupj%xW7y4n+Y7b35Y{{)ZjDr-cyF{N^J-nf(;r{o+BXBv|^xo~0Ol5M9OQn=FTCSfMy%73c5U*bBY zJ#$~$pc^h{S3XqDUNzDGZHbADx0&~cO1toGaT*WiP0OsXkX<~N-RisgLhTYws}yN- zKM#k_k`Ij=obMbT{V>3^`rO>%D;kEBr7{+~tvQ!RQ;a-kgc$Ot_r)GrIBISEye%0n z?l=7+ZSPq3`sq_3e`CH>6DyW)tFU66yNcybtkvF%y&E}2KlZX-)85dYtu^_pnkr^# zGey5IO?*4ly=2-LMSbU=_~3>9X!)ZS*W+2lFWz>>!-`w#oImc)GMe`1;_5%=57j!- zwPx-Qce8u(8yCh}qvafK?cwoC&sDx~*EC~a|KYDGz8cT>Z*}VbL^I!EbHeW0=g#~f znJMqONLL-p`tgMP8Wt|7MLQYOj)m?Y+)-|f{=L;X}{^h*cVq+|3|4-cOysQNb z_awh9`DEkU9l0K33x^bDtI2-$xuT@bMNSWEh+2G$LDK_Axp2$YRe^CsQ;YkbI5E6* z&jV@F^2hJAN`Ds0qc6Wbzul?9z?dqsWubRr<-~M=ai$}Ljd~s!l#i2c1a@_%)C1TKrM}iy3^uBn{1yNHSmpOX`DWpS#Jv#b ze)vvWp2M6hGn+vu4c}*i_nQS`jd}X z>%ay^^Rl%)IxfMOj(z8w*IL>HHerloT>pmbIb$!;i$na?z3TN3-+bPbSz$Gbt=zYF za^tW)$^Lx%+E{tpfgarF%GqAq@0k=8HOH1ZjoM1ihkwm1U!olDl+rS8f{o8He*8KM z?D3LyAssy~a+7~vl00Se=y0a(;g&CxHQz1hq+7kxUUy#N$UYeZAD{N%Kd&=alAjB_ z#rk>jUP0TrE{%`xWR|!Eoa;XS$uO6M)Rtj~rhT~>xA@KT&|b@b9v91>UY}?$tUuTh zJh&Ubj7xGT3%@<#!x4*LWx-|XSC4GyGb5ougnLQ>(H&6Ovie1r%1KWA=#_T?Sj~}w0ODHI7?Br3`d&>FBT@Cs3 z=~aK-n!26`4KJ;Z4LqEqKSww}6rJ#U5MP2$*7)zOzqWbD#xY8`r{Lx#t&-YoJKap7 zncS^8Pb8Af4}O}Hb2E{*4>#X3@x#L`l|8#YAa8BL}&3eXTih(wD~%j#_lhd~)gKzQUF-3bPXis`1mRC&}9m>cctk7gL%;)69C5 zES$4PC$7x6SazrHRMiWMwq-^)u2|O0Yt?jTafSD*Ns@PoQ0I=GocKt$wpOj*!MZ2c zoQe-Vif*m7?sI*_p=T8nRzLH)&mXQC+|hPAH`S~6;I@qC&Ic1-C5KHAjj?h|a8CLy zM&dpFV{_D$-uHOd%{IdDLpJBiyF|ut-8|0Rm+@m`4fbnZlMVhduROQ?{M8lZk|>F@ zI@jCh4FAXG?rM>H7)Co}L`Krc5&VK0{f@quxXR8ueWEX0uJf=hli( zK|aMhlh+3ZzM91k-Ev#rHtHOwd3ndA#7XtPdTf5`;g)u4=)}b{4{J>tabezEt$jyI zUiRXnwyp@mJh-44t&XWeveMF0vhiIa`Sx9c4acTO@8{07tfaer4^@tuX8n2pjaNTB z4O1R-+3tArm$$$WOWp?!dsm)^5k V1MIIX{;GL%CZ4>gurWnK^gmRS<;u_%#Hnr!<+-s+O7&nU%Y&s}o(%bVvJ~mXP?8r*1>Ou* zc(e50hapX0mNI%XG`BZPClD_q_U*$^Xdjkx{TV9uXK7jhL$d=|8WqUUlt2uO*o5fb zpP_#JS;`DyXkG|QmZ1!Jg|bwISR1Nj$!rKi?n78=M|_7kF^r+l!&tHnXUIRCrM-x! z5NAg)v@n9DJBYs_8b&eHD~hGHh`SLzhB7o@C`-2xe?uG=%}{DIOFd#3vW#IVA8|2a zb}S|w%TiPvR!Ad`rKbrDy-#5IO6hbZLpKR01fD=Ayag48Aq`M~5mi* zvtTpqfPHWnj>B2F1lQpnJb_oB%c4IR3{gsKCcsQ6feX+MrYa0MKoBIrbeIR#um>Vl z85$2$Aq(a}5tKm_g!}LmxtDP(nE@g*C7P_Tf5u3o=cXIIsj4=mUc^Rp=%>hj*YVS0NoR1RL;yU^zCSFbtC9 z{CPG;sX`NxoE9pyR7kgn3T*=oZ51lfQK4vs3RQrOt_t~s4yQt15Cowx97e$emR)W{HmAqvt!$5f4!*4X$!668P?w7?bU1Vv9Z z>J6hI50=46=maM-HHtSACMKclW)iv!&*67aHJ6Yk=z=lW!5AokYB&z177`^Lwvdpk zrG)0gW{_A(s2`NW7WfwK0%I*9Gw2IRkONiF2+u%aBcT8&fn(4P3R?+zKs4mTQrHD5 zc2b&TCrn&bO1XBpGc4e5vg%4HDN(b;PDaW0GP>GJXrWH-4(j9wfiMUnAPz>rIG6IPI<=RS%(W1@-pOr4m>Q zJ7FK32W1B~tfwA@LoCdPYS;%y;e;ngGrTy;fqa+;Wl#mHU>(%K4%iFL@C}@V^Y9bg zfP3&5euFn&`n1topYD0Fsx{om( zgd@-f=im}_fmvT;a)hx^0GnY4?CXmGIi(3z`2FSn zum=vqZBPc8Q#HJT@L+SA4;LWh6LZP|l>z1y2$NwKw81-Y9cWIz5D3w5983pc4A>5? zgV7&&X@;1S9$3Nv2oJHKRq!304H0H+K`+H9e72;}P%N8~krf>XwW3z|4$i_gcqvvY zt!dB@Yl?t47y(mZ7A%5QunG1Ju_4_s8!`q<=ml=3 z9VNhMNQc=_7H&^B;l2`^E|5jolQx)wHMoH<1i(OuhJ=V-v^K(l)FU0}aHMdEjua5( zNKr5XQlo@2CpsSGL}%avT!mZk5S~F7`~hl1g|^P5{3FU4i8Cd_7)XU_Fv!7~vJhuO zA(V?dxR83Z3+aF%n1da-L<^m{((GtgDufbP8~}*RVI%w?ws9lh7&i)lfe;=;O6=%P zwK49r4fenRXoc_KEL?(lU$^(Hhj!Guy^ z3S^4qCNx`&xV3e+vp{d=)RJIM$KVWH6f2~3Ey0Vp#Ku;gQ94X1Z)P<^>4>&Q4DRQ6 zBM|*0}UyjdBC==>uB9Cn>wW+a| z_Mmm>M7z;7q*_h+jfMm*q#y%^R%+tmgfu}e=C`>Xh}xhd<`a!{5%oZLw8iU?nE|5k zglZ(_J?%^oO`)fl>)4wk3a7$S%qtzN5pBR$$d&Y^qdh(dk6R8x0qHqAAqr1IE@FPv z*$q)xKj8_6p>S6(L~jtD4;Tt|^F!uFaUcu= zyc8yS3;&2hVF)l3;2Vw@0m7XdZz6q!8)`Jfi1`qI;eI6C1%`|H*#O~Nl?b1Td0=1? z;z$@J=2d}X5XZteF|X(^{AMs7CJ>Fl04*UCkxYWgkOmCB4w;HL4W>i7SavZq192u~ zLY7!IZpdedIWP-yArJ5d8qR+iWuP1#QHb;lD1v!n)zOGz#05|SrD9oUWEo;PEP@KL ztYqjC#7d|FUM#DLUWT|FR=`TJY(mUx#A;XrHDXyp>{`Ti!q;X!Y!C~*;u;4GP0-Zo zFfe*QW~)xrg02~17=b=d<{ zOz~lQ^G4&{4TYmMD7veqPErSZ8pYJKN{Q zgMd{T57QIwIq#}hS4`RIBj>-Lut^@n#4}~7OxY}^tcWj6H8a@G8U5CF@Ug$&q5$rysS{RXyU@XRc&M^8Q&?GA&7-DH*8B_~fkj%qBiL+fs@*Uw6`1Z7j|**?7 zWr~7RD6!IzNlA`3qyOIEcPODuQ$__x_-}J<*n)+8d+r+6$DA+Cv(Q(Nud2)pKXKsZ zA!mstEeWObt$D7DC;vPz*g6r{y`nHnOU`7f;)z376@&cM*jSP$H1p%jXIn92`5m)e z85iUR{G8beywMwl&eS3K0P^7#b1e1o+%Ng(P%(Vi99PB^`{?tF=V&QSh2g#+Ejbyh z;x$K4RVMp5t?s%W|5|4$?$`4}-9M&@W9r`7`9p($>9{ZIl>ckg(0|>rd(`+3b^mMB z2_G8#%czIlxw1x$edjtcQXS#C!__oJ*~{FCGno|RA#<5< z>h)*exIKB{khCG9eYK7?QLK)ZEq_S4(QwlWX46qzSMj*AHr*HY-Sk@6{j&mVBS&s! z(&!hT29)j0ksLpl7$e<3X=cOcg}MBpf&>{>qY%H?NE!_b;~C?+hjm?C?$@&Dwp%#~ zmDQ_%AE9BB94pny<14?Iq^g4+8{dAR&S(pt#6j+3y!w2en`eoA>-TU?9mihWNtoBZ z-o<10FBcphbeVL9HIA6)#IT$0^YiCBqSZD-?rH4yTIIvZV-5Atlq|sfZv~FeCCnw z+{`a1PD1Ame%w9dcMpgT{AiiFZpHV{mOWoI^5_*_vLHyPE$6DwZdp~p+n?HTY+263 z>31!fC;4abQx^0!Zn)FX!EG?CID6zxe(t#>pGPMS)ojTbKUbA+Tj1S&I<|ZBY)L*^ zZa=_jtB%gxriUCqY=Ep54d7$5dEiuN^}ze^9DaDiG%uYtchs@cg~ce%w7u?w>-&E?R(*}U*m~oR~b|{M{$Mj0cZ4$o=$z55i)D$ixFk=Az`Kbi4~t{ z9A{CtoPe7$i9z;LTS}H#}^{6~7&q zy#Kq2H}6kxoB00l+UFJp2io`@tNPp8FgV!5V?M06cry?W7vBQh6!1mZ^tw@Z^=YY1 zNL(w0jN#O!8O!f3c;`MVdxdvHeoU3}n18?03F#z?W%5LNDRzU_%Q%}wPMt2P|X8F6`Z)SKVR_zN4Y z)x@*Kzu8#c-SQHre|~RXzbFv^?YoZXM}VWzoT}Xg)pD6Fc{7?p1$XIF84uJ zYUJx1ZF9G@*Kbxh^L;n1{n#d4&V^jd8__QH%9&;VV_KW}M=qG$L z_cE=d?&-@zdrXIiBz;-YV|3@T=$+ykx#1UAJpQ}c%dkk@Q*7EiMGY4ou4MZ~Zi_bq;1?tK-}}t8wX$uL>7w92%^p z_Gol%&f2{@3mW;`b+*DoO%f?2ynM?yEV@3w#on~;VJk(x;cWe$=uC)B^XU9_VcwG0 z?lqmQ(QA40`WdECb6P2?i2EV`sP-k?HcPIv{ePD}T1( z7qLEeB)8qE;&}Mg#CPXq&nG!n)UBJnI;EOFzr9*5CKlg+e&!Byv1ME!XIR{Sr>rK~ zJmGwo?eKG*+FL$}ZEM`OW4@}5uzm@5Ia3$Iv^)N~+rFwYzVNK)=9%q!FC Date: Tue, 25 Aug 2020 13:36:21 -0400 Subject: [PATCH 189/234] Update gradle to 6.6.1 on all java build images --- java11/build/Dockerfile | 4 ++-- java8.al2/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 9165d29e..d3920773 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -6,12 +6,12 @@ ENV PATH=/var/lang/bin:$PATH \ RUN rm -rf /var/runtime /var/lang /var/rapid && \ curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 4cbcc42f..d774151a 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -9,12 +9,12 @@ RUN rm -rf /var/runtime && \ rm -rf /var/lang/* && \ curl -sSL https://corretto.aws/downloads/resources/8.252.09.1/amazon-corretto-8.252.09.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ rm -rf /var/lang/*.zip && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index de0e2309..04a3ed4b 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -7,12 +7,12 @@ WORKDIR / RUN rm -rf /var/runtime /var/lang && \ curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.6/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 From 51711e917c481053c612c331467e9b4e51cb6272 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 2 Sep 2020 17:14:42 -0400 Subject: [PATCH 190/234] Remove package-lock.json from git --- .gitignore | 1 + package-lock.json | 43 ------------------------------------------- 2 files changed, 1 insertion(+), 43 deletions(-) delete mode 100644 package-lock.json diff --git a/.gitignore b/.gitignore index f335be0f..97b322a1 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ examples/java/build examples/go1.x/handler examples/go1.x/handler examples/provided.al2/bootstrap +package-lock.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index fb3fd99b..00000000 --- a/package-lock.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "docker-lambda", - "version": "0.15.3", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "should": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/should/-/should-8.4.0.tgz", - "integrity": "sha1-XmCInT5kS73Tl6MM00+tKPz5C8A=", - "dev": true, - "requires": { - "should-equal": "0.8.0", - "should-format": "0.3.2", - "should-type": "0.2.0" - } - }, - "should-equal": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-0.8.0.tgz", - "integrity": "sha1-o/BXMv9FusG3ukEvhAiFaBlkEpk=", - "dev": true, - "requires": { - "should-type": "0.2.0" - } - }, - "should-format": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.3.2.tgz", - "integrity": "sha1-pZgx4Bot3uFJkRvHFIvlyAMZ4f8=", - "dev": true, - "requires": { - "should-type": "0.2.0" - } - }, - "should-type": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.2.0.tgz", - "integrity": "sha1-ZwfvlVKdmJ3MCY/gdTqx+RNrt/Y=", - "dev": true - } - } -} From fe2760e99a568d3816a7d926e36b572570173c3a Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 4 Sep 2020 08:27:28 -0400 Subject: [PATCH 191/234] Update aws-lambda-builders and aws-sam-cli --- dotnetcore2.0/build/Dockerfile | 4 ++-- dotnetcore2.1/build/Dockerfile | 4 ++-- dotnetcore3.1/build/Dockerfile | 4 ++-- go1.x/build/Dockerfile | 4 ++-- java11/build/Dockerfile | 4 ++-- java8.al2/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- nodejs10.x/build/Dockerfile | 4 ++-- nodejs12.x/build/Dockerfile | 4 ++-- nodejs4.3/build/Dockerfile | 4 ++-- nodejs6.10/build/Dockerfile | 4 ++-- nodejs8.10/build/Dockerfile | 4 ++-- provided.al2/build/Dockerfile | 4 ++-- provided/build/Dockerfile | 4 ++-- python3.6/build/Dockerfile | 4 ++-- python3.7/build/Dockerfile | 4 ++-- python3.8/build/Dockerfile | 4 ++-- ruby2.5/build/Dockerfile | 4 ++-- ruby2.7/build/Dockerfile | 4 ++-- 19 files changed, 38 insertions(+), 38 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 2ea4bb08..7972fb81 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -25,7 +25,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 69c765d5..e5201f3f 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -26,8 +26,8 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 && \ + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 8868f243..203c6169 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -21,8 +21,8 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 && \ + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 7e0d2162..fe38995c 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -19,7 +19,7 @@ RUN rm -rf /var/runtime /var/lang && \ # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index d3920773..ec6170d3 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -15,5 +15,5 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index d774151a..622dd0b4 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -18,5 +18,5 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 04a3ed4b..28880ad8 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -18,5 +18,5 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 84c48611..ec77907b 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -10,5 +10,5 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index c95ab18c..13e3d46f 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -10,5 +10,5 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index c029f7d6..84584a60 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -13,7 +13,7 @@ RUN rm -rf /var/runtime /var/lang && \ # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 7a50d8f6..426be790 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -13,7 +13,7 @@ RUN rm -rf /var/runtime /var/lang && \ # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 07a537ce..27ce85a2 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -13,7 +13,7 @@ RUN rm -rf /var/runtime /var/lang && \ # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index e8fb0ed8..78a57c0f 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -2,5 +2,5 @@ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 3e04210a..a965582a 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -4,5 +4,5 @@ FROM lambci/lambda-base:build # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 2396e3ed..cb8fecce 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -25,5 +25,5 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install pipenv && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 56632d18..ad5f9da9 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -17,5 +17,5 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install pipenv && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 8b17b047..ea9be052 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -17,5 +17,5 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install pipenv && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 7e49af84..24629792 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -15,7 +15,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 && \ + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index a5a0e4bc..3fa80f40 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -13,7 +13,7 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.0.0 && \ - pipx install aws-sam-cli==1.1.0 && \ + pipx install aws-lambda-builders==1.1.0 && \ + pipx install aws-sam-cli==1.2.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From d318d7e1e0402bc246472facd4da9cc27069914f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 9 Sep 2020 10:11:28 -0400 Subject: [PATCH 192/234] Update dotnetcore3.1 sdk to 3.1.402 --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 203c6169..2f230a03 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -6,7 +6,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.401 \ + DOTNET_SDK_VERSION=3.1.402 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 33c7d80700f849a2ec37794a238c39ad3a11d071 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 11 Sep 2020 11:04:51 -0400 Subject: [PATCH 193/234] =?UTF-8?q?VSCode=20wants=20to=20add=20filteredRes?= =?UTF-8?q?ources=20to=20java=20.project=20files=20=F0=9F=A4=B7=E2=80=8D?= =?UTF-8?q?=E2=99=82=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/dump-java11/.project | 11 ++++++ base/dump-java8/.project | 51 ++++++++++++++++---------- base/dump-java8al2/.project | 51 ++++++++++++++++---------- examples/java/.project | 11 ++++++ java8/run/lambda-runtime-mock/.project | 39 +++++++++++++------- 5 files changed, 109 insertions(+), 54 deletions(-) diff --git a/base/dump-java11/.project b/base/dump-java11/.project index 47ed2d4d..52873e92 100644 --- a/base/dump-java11/.project +++ b/base/dump-java11/.project @@ -20,4 +20,15 @@ org.eclipse.jdt.core.javanature org.eclipse.buildship.core.gradleprojectnature + + + 1599680497019 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/base/dump-java8/.project b/base/dump-java8/.project index 0e30deb7..848abc21 100644 --- a/base/dump-java8/.project +++ b/base/dump-java8/.project @@ -1,23 +1,34 @@ - dump-java8 - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.buildship.core.gradleprojectbuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.buildship.core.gradleprojectnature - + dump-java8 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + + + 1599680497033 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/base/dump-java8al2/.project b/base/dump-java8al2/.project index 0e30deb7..b3dcbd7f 100644 --- a/base/dump-java8al2/.project +++ b/base/dump-java8al2/.project @@ -1,23 +1,34 @@ - dump-java8 - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.buildship.core.gradleprojectbuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.buildship.core.gradleprojectnature - + dump-java8 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + + + 1599680497040 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/examples/java/.project b/examples/java/.project index b4c37dd9..123c68bd 100644 --- a/examples/java/.project +++ b/examples/java/.project @@ -20,4 +20,15 @@ org.eclipse.jdt.core.javanature org.eclipse.buildship.core.gradleprojectnature + + + 1599680497045 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/java8/run/lambda-runtime-mock/.project b/java8/run/lambda-runtime-mock/.project index e2f6a921..f980c6e2 100644 --- a/java8/run/lambda-runtime-mock/.project +++ b/java8/run/lambda-runtime-mock/.project @@ -1,17 +1,28 @@ - lambda-runtime-mock - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - + lambda-runtime-mock + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + + + 1599680497051 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + From ba348567412478a65a687c7a95272be1fabcf563 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 11 Sep 2020 19:10:59 -0400 Subject: [PATCH 194/234] Bump ImageMagick to 6.9.10.68 in base build image --- base/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/build/Dockerfile b/base/build/Dockerfile index d8bb2f35..3a61529f 100644 --- a/base/build/Dockerfile +++ b/base/build/Dockerfile @@ -9,7 +9,7 @@ RUN chown root:root /tmp && \ yum groups mark convert && \ yum groupinstall -y development && \ yum install -y clang cmake docker python27-devel python36-devel \ - ImageMagick-devel-6.7.8.9 cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ + ImageMagick-devel-6.9.10.68 cairo-devel libssh2-devel libxslt-devel libmpc-devel readline-devel db4-devel \ libffi-devel expat-devel libicu-devel lua-devel gdbm-devel sqlite-devel pcre-devel libcurl-devel && \ yum clean all && \ alternatives --set gcc /usr/bin/gcc48 && \ From 94efe99e92f09c516f4698f87c3cf86124d3ce9c Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 11 Sep 2020 19:11:21 -0400 Subject: [PATCH 195/234] Bump glibc version in base-2 image --- base/base-2/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index 4e522317..41750c26 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -6,7 +6,7 @@ FROM amazonlinux:2 ADD ./base-2.tgz /opt/ RUN yum --installroot=/opt reinstall -y filesystem-3.2-25.amzn2.0.4 \ - setup-2.8.71-10.amzn2.0.1 glibc-2.26-34.amzn2 glibc-common-2.26-34.amzn2 && \ + setup-2.8.71-10.amzn2.0.1 glibc-2.26-35.amzn2 glibc-common-2.26-35.amzn2 && \ yum --installroot=/opt clean all FROM scratch From 72a9a219e35e80aea8988922542c898e5230837f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 15 Sep 2020 08:53:09 -0400 Subject: [PATCH 196/234] Update packages list to match latest images --- base/amazonlinux1.txt | 24 +++++++++++----------- base/base-2/amazonlinux2.txt | 40 ++++++++++++++++++------------------ base/base-2/packages.txt | 22 ++++++++++---------- base/packages.txt | 30 +++++++++++++-------------- 4 files changed, 58 insertions(+), 58 deletions(-) diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt index dbb5fa6d..a02b765a 100644 --- a/base/amazonlinux1.txt +++ b/base/amazonlinux1.txt @@ -1,10 +1,10 @@ basesystem-10.0-4.9.amzn1.noarch -bash-4.2.46-28.37.amzn1.x86_64 +bash-4.2.46-34.43.amzn1.x86_64 bzip2-libs-1.0.6-8.12.amzn1.x86_64 ca-certificates-2018.2.22-65.1.22.amzn1.noarch chkconfig-1.3.49.3-2.14.amzn1.x86_64 coreutils-8.22-15.52.amzn1.x86_64 -curl-7.61.1-12.93.amzn1.x86_64 +curl-7.61.1-12.94.amzn1.x86_64 cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 db4-4.7.25-18.11.amzn1.x86_64 db4-utils-4.7.25-18.11.amzn1.x86_64 @@ -30,14 +30,14 @@ libassuan-2.0.3-3.3.amzn1.x86_64 libattr-2.4.46-12.10.amzn1.x86_64 libcap-2.16-5.5.8.amzn1.x86_64 libcom_err-1.43.5-2.43.amzn1.x86_64 -libcurl-7.61.1-12.93.amzn1.x86_64 +libcurl-7.61.1-12.94.amzn1.x86_64 libffi-3.0.13-16.5.amzn1.x86_64 libgcc72-7.2.1-2.59.amzn1.x86_64 libgcrypt-1.5.3-12.19.amzn1.x86_64 libgpg-error-1.11-1.12.amzn1.x86_64 libicu-50.2-4.0.amzn1.x86_64 libidn2-2.3.0-1.4.amzn1.x86_64 -libnghttp2-1.31.1-2.5.amzn1.x86_64 +libnghttp2-1.33.0-1.1.6.amzn1.x86_64 libpsl-0.6.2-1.2.amzn1.x86_64 libselinux-2.1.10-3.22.amzn1.x86_64 libsepol-2.1.7-3.12.amzn1.x86_64 @@ -46,8 +46,8 @@ libstdc++72-7.2.1-2.59.amzn1.x86_64 libtasn1-2.3-6.6.amzn1.x86_64 libunistring-0.9.3-6.1.amzn1.x86_64 libverto-0.2.5-4.9.amzn1.x86_64 -libxml2-2.9.1-6.3.52.amzn1.x86_64 -libxml2-python27-2.9.1-6.3.52.amzn1.x86_64 +libxml2-2.9.1-6.4.40.amzn1.x86_64 +libxml2-python27-2.9.1-6.4.40.amzn1.x86_64 lua-5.1.4-4.1.9.amzn1.x86_64 make-3.82-21.10.amzn1.x86_64 ncurses-5.7-4.20090207.14.amzn1.x86_64 @@ -70,21 +70,21 @@ pinentry-0.7.6-6.11.amzn1.x86_64 pkgconfig-0.27.1-2.7.amzn1.x86_64 popt-1.13-7.7.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.18-1.137.amzn1.x86_64 +python27-2.7.18-2.139.amzn1.x86_64 python27-chardet-2.0.1-7.7.amzn1.noarch python27-iniparse-0.3.1-2.1.9.amzn1.noarch python27-kitchen-1.1.1-5.6.amzn1.noarch -python27-libs-2.7.18-1.137.amzn1.x86_64 +python27-libs-2.7.18-2.139.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 python27-pyxattr-0.5.0-1.6.amzn1.x86_64 python27-urlgrabber-3.10-8.16.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 -rpm-4.11.3-40.76.amzn1.x86_64 -rpm-build-libs-4.11.3-40.76.amzn1.x86_64 -rpm-libs-4.11.3-40.76.amzn1.x86_64 -rpm-python27-4.11.3-40.76.amzn1.x86_64 +rpm-4.11.3-40.77.amzn1.x86_64 +rpm-build-libs-4.11.3-40.77.amzn1.x86_64 +rpm-libs-4.11.3-40.77.amzn1.x86_64 +rpm-python27-4.11.3-40.77.amzn1.x86_64 sed-4.2.1-10.10.amzn1.x86_64 setup-2.8.14-20.12.amzn1.noarch shared-mime-info-1.1-9.8.amzn1.x86_64 diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index b6f2420b..ac90985e 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -1,26 +1,26 @@ -amazon-linux-extras-1.6.11-1.amzn2.noarch +amazon-linux-extras-1.6.12-1.amzn2.noarch basesystem-10.0-7.amzn2.0.1.noarch bash-4.2.46-33.amzn2.x86_64 bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 -ca-certificates-2019.2.32-76.amzn2.0.2.noarch +ca-certificates-2019.2.32-76.amzn2.0.3.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-24.amzn2.x86_64 cpio-2.11-27.amzn2.x86_64 -curl-7.61.1-12.amzn2.0.1.x86_64 +curl-7.61.1-12.amzn2.0.2.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-5.amzn2.x86_64 elfutils-libelf-0.176-2.amzn2.x86_64 expat-2.1.0-10.amzn2.0.2.x86_64 -file-libs-5.11-35.amzn2.0.2.x86_64 +file-libs-5.11-36.amzn2.0.1.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 findutils-4.5.11-6.amzn2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 glib2-2.56.1-5.amzn2.0.1.x86_64 -glibc-2.26-34.amzn2.x86_64 -glibc-common-2.26-34.amzn2.x86_64 -glibc-langpack-en-2.26-34.amzn2.x86_64 -glibc-minimal-langpack-2.26-34.amzn2.x86_64 +glibc-2.26-35.amzn2.x86_64 +glibc-common-2.26-35.amzn2.x86_64 +glibc-langpack-en-2.26-35.amzn2.x86_64 +glibc-minimal-langpack-2.26-35.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 gnupg2-2.0.22-5.amzn2.0.4.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 @@ -34,27 +34,27 @@ libattr-2.4.46-12.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 -libcrypt-2.26-34.amzn2.x86_64 -libcurl-7.61.1-12.amzn2.0.1.x86_64 +libcrypt-2.26-35.amzn2.x86_64 +libcurl-7.61.1-12.amzn2.0.2.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 -libgcc-7.3.1-6.amzn2.0.4.x86_64 +libgcc-7.3.1-9.amzn2.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 libgpg-error-1.12-3.amzn2.0.3.x86_64 libidn2-2.3.0-1.amzn2.x86_64 libmetalink-0.1.2-7.amzn2.0.2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 -libnghttp2-1.39.2-1.amzn2.x86_64 +libnghttp2-1.41.0-1.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 libssh2-1.4.3-12.amzn2.2.2.x86_64 -libstdc++-7.3.1-6.amzn2.0.4.x86_64 +libstdc++-7.3.1-9.amzn2.x86_64 libtasn1-4.10-1.amzn2.0.2.x86_64 libunistring-0.9.3-9.amzn2.0.2.x86_64 libuuid-2.30.2-2.amzn2.0.4.x86_64 libverto-0.2.5-4.amzn2.0.2.x86_64 -libxml2-2.9.1-6.amzn2.3.3.x86_64 +libxml2-2.9.1-6.amzn2.4.1.x86_64 lua-5.1.4-15.amzn2.0.2.x86_64 ncurses-6.0-8.20170212.amzn2.1.3.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.3.noarch @@ -69,17 +69,17 @@ nss-tools-3.44.0-7.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 openldap-2.4.44-15.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 -p11-kit-0.23.5-3.amzn2.0.2.x86_64 -p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 +p11-kit-0.23.19-1.amzn2.x86_64 +p11-kit-trust-0.23.19-1.amzn2.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 pinentry-0.8.1-17.amzn2.0.2.x86_64 popt-1.13-16.amzn2.0.2.x86_64 pth-2.0.7-23.amzn2.0.2.x86_64 pygpgme-0.3-9.amzn2.0.2.x86_64 pyliblzma-0.5.3-11.amzn2.0.2.x86_64 -python-2.7.18-1.amzn2.x86_64 +python-2.7.18-1.amzn2.0.2.x86_64 python-iniparse-0.4-9.amzn2.noarch -python-libs-2.7.18-1.amzn2.x86_64 +python-libs-2.7.18-1.amzn2.0.2.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-9.amzn2.0.1.noarch python2-rpm-4.11.3-40.amzn2.0.4.x86_64 @@ -92,8 +92,8 @@ sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.0.1.noarch shared-mime-info-1.8-4.amzn2.x86_64 sqlite-3.7.17-8.amzn2.1.1.x86_64 -system-release-2-11.amzn2.x86_64 -tzdata-2019c-1.amzn2.noarch +system-release-2-12.amzn2.x86_64 +tzdata-2020a-1.amzn2.noarch vim-minimal-8.1.1602-1.amzn2.x86_64 xz-libs-5.2.2-1.amzn2.0.2.x86_64 yum-3.4.3-158.amzn2.0.4.noarch diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index 7c3c164e..18018541 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -1,14 +1,14 @@ basesystem-10.0-7.amzn2.0.1.noarch bash-4.2.46-33.amzn2.x86_64 -ca-certificates-2019.2.32-76.amzn2.0.2.noarch +ca-certificates-2019.2.32-76.amzn2.0.3.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-24.amzn2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 -glibc-2.26-34.amzn2.x86_64 -glibc-all-langpacks-2.26-34.amzn2.x86_64 -glibc-common-2.26-34.amzn2.x86_64 -glibc-minimal-langpack-2.26-34.amzn2.x86_64 +glibc-2.26-35.amzn2.x86_64 +glibc-all-langpacks-2.26-35.amzn2.x86_64 +glibc-common-2.26-35.amzn2.x86_64 +glibc-minimal-langpack-2.26-35.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 @@ -19,11 +19,11 @@ libattr-2.4.46-12.amzn2.0.2.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-12.amzn2.0.2.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 -libgcc-7.3.1-6.amzn2.0.4.x86_64 +libgcc-7.3.1-9.amzn2.x86_64 libicu-50.2-4.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 -libstdc++-7.3.1-6.amzn2.0.4.x86_64 +libstdc++-7.3.1-9.amzn2.x86_64 libtasn1-4.10-1.amzn2.0.2.x86_64 libverto-0.2.5-4.amzn2.0.2.x86_64 ncurses-6.0-8.20170212.amzn2.1.3.x86_64 @@ -33,12 +33,12 @@ nspr-4.21.0-1.amzn2.0.2.x86_64 nss-softokn-freebl-3.44.0-8.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 -p11-kit-0.23.5-3.amzn2.0.2.x86_64 -p11-kit-trust-0.23.5-3.amzn2.0.2.x86_64 +p11-kit-0.23.19-1.amzn2.x86_64 +p11-kit-trust-0.23.19-1.amzn2.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 popt-1.13-16.amzn2.0.2.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.0.1.noarch -system-release-2-11.amzn2.x86_64 -tzdata-2019c-1.amzn2.noarch +system-release-2-12.amzn2.x86_64 +tzdata-2020a-1.amzn2.noarch zlib-1.2.7-18.amzn2.x86_64 diff --git a/base/packages.txt b/base/packages.txt index a4d5ef92..b1cd85be 100644 --- a/base/packages.txt +++ b/base/packages.txt @@ -1,14 +1,14 @@ -ImageMagick-6.7.8.9-15.21.amzn1.x86_64 +ImageMagick-6.9.10.68-3.22.amzn1.x86_64 alsa-lib-1.0.22-3.9.amzn1.x86_64 audit-libs-2.6.5-3.28.amzn1.x86_64 avahi-libs-0.6.25-12.17.amzn1.x86_64 basesystem-10.0-4.9.amzn1.noarch -bash-4.2.46-28.37.amzn1.x86_64 +bash-4.2.46-34.43.amzn1.x86_64 binutils-2.25.1-31.base.66.amzn1.x86_64 bzip2-1.0.6-8.12.amzn1.x86_64 bzip2-libs-1.0.6-8.12.amzn1.x86_64 ca-certificates-2018.2.22-65.1.22.amzn1.noarch -cairo-1.12.14-6.8.amzn1.x86_64 +cairo-1.12.14-6.9.amzn1.x86_64 chkconfig-1.3.49.3-2.14.amzn1.x86_64 compat-gmp4-4.3.2-1.14.amzn1.x86_64 copy-jdk-configs-3.3-10.3.amzn1.noarch @@ -17,7 +17,7 @@ cpio-2.10-12.12.amzn1.x86_64 cracklib-2.8.16-4.14.amzn1.x86_64 cracklib-dicts-2.8.16-4.14.amzn1.x86_64 cups-libs-1.4.2-67.21.amzn1.x86_64 -curl-7.61.1-12.93.amzn1.x86_64 +curl-7.61.1-12.94.amzn1.x86_64 cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 db4-4.7.25-18.11.amzn1.x86_64 db4-utils-4.7.25-18.11.amzn1.x86_64 @@ -84,7 +84,7 @@ libblkid-2.23.2-59.29.amzn1.x86_64 libcap-2.16-5.5.8.amzn1.x86_64 libcap-ng-0.7.5-4.15.amzn1.x86_64 libcom_err-1.43.5-2.43.amzn1.x86_64 -libcurl-7.61.1-12.93.amzn1.x86_64 +libcurl-7.61.1-12.94.amzn1.x86_64 libdrm-2.4.82-1.14.amzn1.x86_64 libffi-3.0.13-16.5.amzn1.x86_64 libfontenc-1.0.5-2.6.amzn1.x86_64 @@ -98,7 +98,7 @@ libicu-50.2-4.0.amzn1.x86_64 libidn2-2.3.0-1.4.amzn1.x86_64 libjpeg-turbo-1.2.90-8.16.amzn1.x86_64 libmount-2.23.2-59.29.amzn1.x86_64 -libnghttp2-1.31.1-2.5.amzn1.x86_64 +libnghttp2-1.33.0-1.1.6.amzn1.x86_64 libpciaccess-0.13.1-4.1.11.amzn1.x86_64 libpng-1.2.49-2.14.amzn1.x86_64 libpsl-0.6.2-1.2.amzn1.x86_64 @@ -119,7 +119,7 @@ libuuid-2.23.2-59.29.amzn1.x86_64 libverto-0.2.5-4.9.amzn1.x86_64 libwmf-lite-0.2.8.4-41.13.amzn1.x86_64 libxcb-1.11-2.21.amzn1.x86_64 -libxml2-2.9.1-6.3.52.amzn1.x86_64 +libxml2-2.9.1-6.4.40.amzn1.x86_64 libxshmfence-1.2-1.4.amzn1.x86_64 libxslt-1.1.28-5.13.amzn1.x86_64 lksctp-tools-1.0.10-7.7.amzn1.x86_64 @@ -181,23 +181,23 @@ popt-1.13-7.7.amzn1.x86_64 procps-3.2.8-45.16.amzn1.x86_64 psmisc-22.20-8.12.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.18-1.137.amzn1.x86_64 +python27-2.7.18-1.138.amzn1.x86_64 python27-iniparse-0.3.1-2.1.9.amzn1.noarch -python27-libs-2.7.18-1.137.amzn1.x86_64 +python27-libs-2.7.18-1.138.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 python27-pyxattr-0.5.0-1.6.amzn1.x86_64 python27-urlgrabber-3.10-8.16.amzn1.noarch -python36-3.6.10-1.16.amzn1.x86_64 -python36-libs-3.6.10-1.16.amzn1.x86_64 +python36-3.6.11-1.17.amzn1.x86_64 +python36-libs-3.6.11-1.17.amzn1.x86_64 python36-pip-9.0.3-1.27.amzn1.noarch python36-setuptools-36.2.7-1.33.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 -rpm-4.11.3-40.76.amzn1.x86_64 -rpm-build-libs-4.11.3-40.76.amzn1.x86_64 -rpm-libs-4.11.3-40.76.amzn1.x86_64 -rpm-python27-4.11.3-40.76.amzn1.x86_64 +rpm-4.11.3-40.77.amzn1.x86_64 +rpm-build-libs-4.11.3-40.77.amzn1.x86_64 +rpm-libs-4.11.3-40.77.amzn1.x86_64 +rpm-python27-4.11.3-40.77.amzn1.x86_64 sed-4.2.1-10.10.amzn1.x86_64 setup-2.8.14-20.12.amzn1.noarch shadow-utils-4.1.4.2-13.10.amzn1.x86_64 From 8ae26020ab7de9faad750a9e11f779b8b605fa7e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 23 Sep 2020 08:32:52 -0400 Subject: [PATCH 197/234] Bump aws-sam-cli to 1.3.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- .../run/MockBootstraps/lib/Bootstrap.dll | Bin 147968 -> 147968 bytes .../run/MockBootstraps/lib/Bootstrap.pdb | Bin 45932 -> 45932 bytes dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 21 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 7972fb81..eaf95a1e 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -26,6 +26,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e5201f3f..e5bd0c8b 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -27,7 +27,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 && \ + pipx install aws-sam-cli==1.3.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.dll index 2adc509b9298cd3e15d84431b050b26ebc7b59de..0711afac7c936960e201a819b464bfa557ba87bd 100644 GIT binary patch delta 114 zcmZo@;cRH(oY29dW;gX{W6#zeMvF%RPuZJZO5{a&ZTn__(;vFXsyH=c@Yq1&%KVoV5ODQY=z zYr2IwQ-FZ`ytU1Lr2^g7y!#k_bh_H3=`+lkG8Ler*L0wwK=o0t?&ob`&Y!;M@3)^e L+Z8RC?sEbFO@cUp diff --git a/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb b/dotnetcore2.1/run/MockBootstraps/lib/Bootstrap.pdb index 4513532ae742c9fd3185a8e1f3beda602f728f5a..ddc2c4d463f967e8be6d2c0abf31c5ea110e3a2c 100644 GIT binary patch delta 77 zcmV-T0J8t=<^t^I0+4(ZW_ZoC=%$fGpvxbWI2-v|WKp5`v5>o_Ci47yy%4!(Hyv4D j(eLE^)mlwbNqS72Oa(w^LHJ(I8X{N#03|51ai{wWJMty& delta 77 zcmV-T0J8t=<^t^I0+4(ZN1m;N{Tfk5tnTqw#g``Ha)iLzv5>o_CfkYW5fQ27(TQ`~ jV3R9PBC2)ye9M$0S-18b_~l^COd?nS03{K#ai{wWc`+z# diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 2f230a03..0d8f414c 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 && \ + pipx install aws-sam-cli==1.3.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index fe38995c..403ab19b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index ec6170d3..a1cdcf83 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 622dd0b4..9ee02be0 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -19,4 +19,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 28880ad8..536818ec 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -19,4 +19,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index ec77907b..571e7a8f 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 13e3d46f..8213ebb0 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 84584a60..b7ddf5f3 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 426be790..09339351 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 27ce85a2..a41a8f8b 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 78a57c0f..0563fd82 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -3,4 +3,4 @@ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index a965582a..a8344e09 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -5,4 +5,4 @@ FROM lambci/lambda-base:build RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index cb8fecce..4689d728 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -26,4 +26,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index ad5f9da9..664e0a7d 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index ea9be052..c0d233ad 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 + pipx install aws-sam-cli==1.3.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 24629792..366eac1c 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 && \ + pipx install aws-sam-cli==1.3.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 3fa80f40..52e12d6c 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.2.0 && \ + pipx install aws-sam-cli==1.3.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 247933cd92e389f4f96de5466b9adb1a6d45f82f Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 23 Sep 2020 08:35:50 -0400 Subject: [PATCH 198/234] Remove date-tagged after publishing --- base/publish-all.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/base/publish-all.sh b/base/publish-all.sh index da170994..aa86df18 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -19,6 +19,7 @@ for RUNTIME in $RUNTIMES; do docker tag lambci/lambda:${RUNTIME} lambci/lambda:${PUBLISH_DATE}-${RUNTIME} docker push lambci/lambda:${RUNTIME} docker push lambci/lambda:${PUBLISH_DATE}-${RUNTIME} + docker rmi lambci/lambda:${PUBLISH_DATE}-${RUNTIME} done docker push lambci/lambda-base:build From 039ef1f767e2b1c0b443376c297ed71efca0f561 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 24 Sep 2020 19:50:39 -0400 Subject: [PATCH 199/234] Bump aws-sam-cli to 1.3.2 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index eaf95a1e..d8c9a82d 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -26,6 +26,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e5bd0c8b..61104698 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -27,7 +27,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 && \ + pipx install aws-sam-cli==1.3.2 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 0d8f414c..feca3f3a 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -22,7 +22,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 && \ + pipx install aws-sam-cli==1.3.2 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 403ab19b..2fbd81a4 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -20,6 +20,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index a1cdcf83..8c6ad828 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -16,4 +16,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 9ee02be0..0efa5e52 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -19,4 +19,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 536818ec..48b9d0d7 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -19,4 +19,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 571e7a8f..2bc015fa 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 8213ebb0..f97ad5aa 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -11,4 +11,4 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index b7ddf5f3..e6266985 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 09339351..dc294953 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index a41a8f8b..e3d41085 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 0563fd82..718bd174 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -3,4 +3,4 @@ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index a8344e09..b2f29e2b 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -5,4 +5,4 @@ FROM lambci/lambda-base:build RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 4689d728..88b30e62 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -26,4 +26,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 664e0a7d..8d72e0fa 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index c0d233ad..bdc2a938 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,4 +18,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.0.10 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 + pipx install aws-sam-cli==1.3.2 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 366eac1c..537d678f 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -16,6 +16,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 && \ + pipx install aws-sam-cli==1.3.2 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 52e12d6c..1dfb7fc1 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -14,6 +14,6 @@ RUN rm -rf /var/runtime /var/lang /var/rapid && \ # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.0 && \ + pipx install aws-sam-cli==1.3.2 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From f16b40a3207ae9eab8d7c6459532f323882ce996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Lipt=C3=A1k?= Date: Thu, 1 Oct 2020 09:23:29 -0400 Subject: [PATCH 200/234] Add Github Actions build (#309) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gábor Lipták --- .github/workflows/ci-build.yml | 20 ++++++++++++++++++++ .github/workflows/ci-run.yml | 20 ++++++++++++++++++++ base/build-all-build.sh | 14 ++++++++++++++ base/build-all-run.sh | 16 ++++++++++++++++ base/build-all.sh | 23 +++-------------------- 5 files changed, 73 insertions(+), 20 deletions(-) create mode 100644 .github/workflows/ci-build.yml create mode 100644 .github/workflows/ci-run.yml create mode 100755 base/build-all-build.sh create mode 100755 base/build-all-run.sh diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml new file mode 100644 index 00000000..801ac7c5 --- /dev/null +++ b/.github/workflows/ci-build.yml @@ -0,0 +1,20 @@ +name: ci-build + +on: + push: + branches: + - master + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Build build Docker images + working-directory: base + run: ./build-all-build.sh + - name: List Docker images + run: | + docker images diff --git a/.github/workflows/ci-run.yml b/.github/workflows/ci-run.yml new file mode 100644 index 00000000..880bb7df --- /dev/null +++ b/.github/workflows/ci-run.yml @@ -0,0 +1,20 @@ +name: ci-run + +on: + push: + branches: + - master + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Build run Docker images + working-directory: base + run: ./build-all-run.sh + - name: List Docker images + run: | + docker images diff --git a/base/build-all-build.sh b/base/build-all-build.sh new file mode 100755 index 00000000..29f2f25d --- /dev/null +++ b/base/build-all-build.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -e + +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" + +TOP_DIR="${PWD}/.." + +for RUNTIME in $RUNTIMES; do + echo build-${RUNTIME} + + cd ${TOP_DIR}/${RUNTIME}/build + + docker build -t lambci/lambda:build-${RUNTIME} . +done diff --git a/base/build-all-run.sh b/base/build-all-run.sh new file mode 100755 index 00000000..0e7ebe4c --- /dev/null +++ b/base/build-all-run.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -e + +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" + +TOP_DIR="${PWD}/.." + +for RUNTIME in $RUNTIMES; do + echo $RUNTIME + + cd ${TOP_DIR}/${RUNTIME}/run + + [ -x ./update_libs.sh ] && ./update_libs.sh + + docker build --no-cache -t lambci/lambda:${RUNTIME} . +done diff --git a/base/build-all.sh b/base/build-all.sh index 9a0e6e31..aeb952d8 100755 --- a/base/build-all.sh +++ b/base/build-all.sh @@ -1,23 +1,6 @@ #!/bin/bash +set -e -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +${PWD}/build-all-run.sh -TOP_DIR="${PWD}/.." - -for RUNTIME in $RUNTIMES; do - echo $RUNTIME - - cd ${TOP_DIR}/${RUNTIME}/run - - [ -x ./update_libs.sh ] && ./update_libs.sh - - docker build --no-cache -t lambci/lambda:${RUNTIME} . -done - -for RUNTIME in $RUNTIMES; do - echo build-${RUNTIME} - - cd ${TOP_DIR}/${RUNTIME}/build - - docker build -t lambci/lambda:build-${RUNTIME} . -done +${PWD}/build-all-build.sh From c7b359eef2f54a640d925a92202e8860bd41a60e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 1 Oct 2020 09:42:00 -0400 Subject: [PATCH 201/234] Split runtimes out into separate script --- base/build-all-build.sh | 2 +- base/build-all-run.sh | 2 +- base/dump.sh | 2 +- base/publish-all.sh | 2 +- base/runtimes.sh | 2 ++ base/tag-all.sh | 2 +- 6 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 base/runtimes.sh diff --git a/base/build-all-build.sh b/base/build-all-build.sh index 29f2f25d..d5b958be 100755 --- a/base/build-all-build.sh +++ b/base/build-all-build.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +source ${PWD}/runtimes.sh TOP_DIR="${PWD}/.." diff --git a/base/build-all-run.sh b/base/build-all-run.sh index 0e7ebe4c..27abcaab 100755 --- a/base/build-all-run.sh +++ b/base/build-all-run.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +source ${PWD}/runtimes.sh TOP_DIR="${PWD}/.." diff --git a/base/dump.sh b/base/dump.sh index 608e2bae..944988d2 100755 --- a/base/dump.sh +++ b/base/dump.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="node43 node610 node810 node10x node12x python27 python36 python37 python38 ruby25 ruby27 java8 java11 go1x dotnetcore20 dotnetcore21 dotnetcore31 provided" +source ${PWD}/runtimes.sh for RUNTIME in $RUNTIMES; do echo $RUNTIME diff --git a/base/publish-all.sh b/base/publish-all.sh index aa86df18..a2fb0c2b 100755 --- a/base/publish-all.sh +++ b/base/publish-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +source ${PWD}/runtimes.sh echo -n "Enter repository passphrase: " read -s DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE diff --git a/base/runtimes.sh b/base/runtimes.sh new file mode 100644 index 00000000..22080f09 --- /dev/null +++ b/base/runtimes.sh @@ -0,0 +1,2 @@ +# RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +RUNTIMES="nodejs12.x" diff --git a/base/tag-all.sh b/base/tag-all.sh index 0591bf34..a8314ee9 100755 --- a/base/tag-all.sh +++ b/base/tag-all.sh @@ -1,6 +1,6 @@ #!/bin/bash -RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" +source ${PWD}/runtimes.sh git tag -f latest From 2d566e44b5313882239c36fa792681e795092df9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 1 Oct 2020 09:43:08 -0400 Subject: [PATCH 202/234] Update poetry to 1.1.0 --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index ed8e9abe..5a6fcc01 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -8,7 +8,7 @@ RUN rm -rf /var/runtime /var/lang && \ # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.0.10/get-poetry.py | POETRY_VERSION=1.0.10 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.0/get-poetry.py | POETRY_VERSION=1.1.0 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 88b30e62..4937e57d 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -23,7 +23,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.0.10 && \ + pipx install poetry==1.1.0 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.3.2 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 8d72e0fa..c0d6a654 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -15,7 +15,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.0.10 && \ + pipx install poetry==1.1.0 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.3.2 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index bdc2a938..3109232b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -15,7 +15,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.0.10 && \ + pipx install poetry==1.1.0 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.3.2 From 0bd3ee1e69a9f3f8263fd43b55204aea31b1dce5 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 1 Oct 2020 10:08:50 -0400 Subject: [PATCH 203/234] Make all build images usr /var dirs from runtime images --- base/runtimes.sh | 3 +-- dotnetcore2.0/build/Dockerfile | 10 +++++++--- dotnetcore2.1/build/Dockerfile | 12 ++++++++---- dotnetcore3.1/build/Dockerfile | 12 ++++++++---- go1.x/build/Dockerfile | 10 +++++++--- java11/build/Dockerfile | 10 +++++++--- java8.al2/build/Dockerfile | 14 +++++++++----- java8/build/Dockerfile | 10 +++++++--- nodejs10.x/build/Dockerfile | 7 +++++-- nodejs12.x/build/Dockerfile | 7 +++++-- nodejs4.3/build/Dockerfile | 7 +++++-- nodejs6.10/build/Dockerfile | 7 +++++-- nodejs8.10/build/Dockerfile | 7 +++++-- provided.al2/build/Dockerfile | 8 +++++++- provided/build/Dockerfile | 6 ++++++ python2.7/build/Dockerfile | 7 +++++-- python3.6/build/Dockerfile | 10 +++++++--- python3.7/build/Dockerfile | 7 +++++-- python3.8/build/Dockerfile | 7 +++++-- ruby2.5/build/Dockerfile | 7 +++++-- ruby2.7/build/Dockerfile | 7 +++++-- 21 files changed, 124 insertions(+), 51 deletions(-) diff --git a/base/runtimes.sh b/base/runtimes.sh index 22080f09..80891dd4 100644 --- a/base/runtimes.sh +++ b/base/runtimes.sh @@ -1,2 +1 @@ -# RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" -RUNTIMES="nodejs12.x" +RUNTIMES="provided go1.x nodejs4.3 nodejs6.10 nodejs8.10 python2.7 python3.6 python3.7 ruby2.5 java8 dotnetcore2.0 dotnetcore2.1 provided.al2 nodejs10.x nodejs12.x python3.8 ruby2.7 java8.al2 java11 dotnetcore3.1" diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index d8c9a82d..ddedc900 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:dotnetcore2.0 + FROM lambci/lambda-base:build # Run: docker run --rm --entrypoint dotnet lambci/lambda:dotnetcore2.1 --info @@ -9,9 +11,11 @@ ENV PATH=/var/lang/bin:$PATH \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/dotnetcore2.0.tgz | tar -zx -C / && \ - yum install -y libunwind && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN yum install -y libunwind && \ curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i /var/lang/bin && \ mkdir /tmp/warmup && \ cd /tmp/warmup && \ diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 61104698..d2e568e9 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -1,4 +1,6 @@ -FROM lambci/lambda-base:build +FROM lambci/lambda:dotnetcore2.1 + +FROM lambci/lambda-base:build # Run: docker run --rm --entrypoint dotnet lambci/lambda:dotnetcore2.1 --info # Check https://dotnet.microsoft.com/download/dotnet-core/2.1 for versions @@ -10,9 +12,11 @@ ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/dotnetcore2.1.tgz | tar -zx -C / && \ - yum install -y libunwind && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN yum install -y libunwind && \ curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ mkdir /tmp/warmup && \ cd /tmp/warmup && \ diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index feca3f3a..c585ba0a 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -1,4 +1,6 @@ -FROM lambci/lambda-base-2:build +FROM lambci/lambda:dotnetcore3.1 + +FROM lambci/lambda-base-2:build # Run: docker run --rm --entrypoint dotnet lambci/lambda:dotnetcore3.1 --info # Check https://dotnet.microsoft.com/download/dotnet-core/3.1 for versions @@ -10,9 +12,11 @@ ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/dotnetcore3.1.tgz | tar -zx -C / && \ - curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VERSION -i $DOTNET_ROOT && \ mkdir /tmp/warmup && \ cd /tmp/warmup && \ dotnet new && \ diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 2fbd81a4..0c5a0205 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:go1.x + FROM lambci/lambda-base:build # https://golang.org/doc/devel/release.html @@ -8,9 +10,11 @@ ENV GOLANG_VERSION=1.15 \ WORKDIR /go/src/handler -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/go1.x.tgz | tar -zx -C / && \ - curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz | tar -zx -C /usr/local && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz | tar -zx -C /usr/local && \ go get github.com/golang/dep/cmd/dep && \ go install github.com/golang/dep/cmd/dep && \ go get golang.org/x/vgo diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 8c6ad828..d29cb706 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -1,12 +1,16 @@ +FROM lambci/lambda:java11 + FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_java11 -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/java11.tgz | tar -zx -C / && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 0efa5e52..fa4732a0 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -1,13 +1,17 @@ -FROM lambci/lambda-base-2:build +FROM lambci/lambda:java8.al2 + +FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_rapid -RUN rm -rf /var/runtime && \ - curl https://lambci.s3.amazonaws.com/fs/java8.al2.tgz | tar -zx -C / && \ - rm -rf /var/lang/* && \ - curl -sSL https://corretto.aws/downloads/resources/8.252.09.1/amazon-corretto-8.252.09.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN rm -rf /var/lang/* && \ + curl -sSL https://corretto.aws/downloads/resources/8.265.01.1/amazon-corretto-8.265.01.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ rm -rf /var/lang/*.zip && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 48b9d0d7..d64f8e68 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -1,12 +1,16 @@ +FROM lambci/lambda:java8 + FROM lambci/lambda-base:build ENV AWS_EXECUTION_ENV=AWS_Lambda_java8 WORKDIR / -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/java8.tgz | tar -zx -C / && \ - yum install -y java-1.8.0-openjdk-devel && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN yum install -y java-1.8.0-openjdk-devel && \ mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 2bc015fa..3c533df0 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:nodejs10.x + FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ @@ -5,8 +7,9 @@ ENV PATH=/var/lang/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_nodejs10.x \ NODE_PATH=/opt/nodejs/node10/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/nodejs10.x.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index f97ad5aa..1cc57ffc 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:nodejs12.x + FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ @@ -5,8 +7,9 @@ ENV PATH=/var/lang/bin:$PATH \ AWS_EXECUTION_ENV=AWS_Lambda_nodejs12.x \ NODE_PATH=/opt/nodejs/node12/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/nodejs12.x.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index e6266985..becdd201 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:nodejs4.3 + FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ @@ -6,8 +8,9 @@ ENV PATH=/var/lang/bin:$PATH \ NODE_PATH=/var/runtime:/var/task:/var/runtime/node_modules \ npm_config_unsafe-perm=true -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/nodejs4.3.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index dc294953..e3e0f5f0 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:nodejs6.10 + FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ @@ -6,8 +8,9 @@ ENV PATH=/var/lang/bin:$PATH \ NODE_PATH=/opt/nodejs/node6/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules:/var/runtime:/var/task:/var/runtime/node_modules \ npm_config_unsafe-perm=true -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index e3d41085..790a2b1b 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:nodejs8.10 + FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ @@ -6,8 +8,9 @@ ENV PATH=/var/lang/bin:$PATH \ NODE_PATH=/opt/nodejs/node8/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules:/var/runtime:/var/task:/var/runtime/node_modules \ npm_config_unsafe-perm=true -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/nodejs8.10.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 718bd174..128daae4 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -1,4 +1,10 @@ -FROM lambci/lambda-base-2:build +FROM lambci/lambda:provided.al2 + +FROM lambci/lambda-base-2:build + +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index b2f29e2b..928c7ea5 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -1,5 +1,11 @@ +FROM lambci/lambda:provided + FROM lambci/lambda-base:build +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 5a6fcc01..97facea9 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -1,9 +1,12 @@ +FROM lambci/lambda:python2.7 + FROM lambci/lambda-base:build ENV AWS_EXECUTION_ENV=AWS_Lambda_python2.7 -RUN rm -rf /var/runtime /var/lang && \ - curl https://lambci.s3.amazonaws.com/fs/python2.7.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 4937e57d..1d078d19 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:python3.6 + FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ @@ -7,9 +9,11 @@ ENV PATH=/var/lang/bin:$PATH \ PIPX_BIN_DIR=/var/lang/bin \ PIPX_HOME=/var/lang/pipx -RUN rm -rf /var/runtime /var/lang && \ - export PYTHON_VERSION=3.6.10 && \ - curl https://lambci.s3.amazonaws.com/fs/python3.6.tgz | tar -xz -C / && \ +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid + +RUN export PYTHON_VERSION=3.6.12 && \ sed -i '/^prefix=/c\prefix=/var/lang' /var/lang/lib/pkgconfig/python-3.6.pc && \ curl https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz | tar -xJ && \ cd Python-${PYTHON_VERSION} && \ diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index c0d6a654..ac502307 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:python3.7 + FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ @@ -7,8 +9,9 @@ ENV PATH=/var/lang/bin:$PATH \ PIPX_BIN_DIR=/var/lang/bin \ PIPX_HOME=/var/lang/pipx -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/python3.7.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 3109232b..1c40d5d4 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:python3.8 + FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ @@ -7,8 +9,9 @@ ENV PATH=/var/lang/bin:$PATH \ PIPX_BIN_DIR=/var/lang/bin \ PIPX_HOME=/var/lang/pipx -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/python3.8.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pip install -U pip setuptools wheel --no-cache-dir && \ diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 537d678f..d9264d13 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:ruby2.5 + FROM lambci/lambda-base:build ENV PATH=/var/lang/bin:$PATH \ @@ -8,8 +10,9 @@ ENV PATH=/var/lang/bin:$PATH \ RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib \ BUNDLE_SILENCE_ROOT_WARNING=1 -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/ruby2.5.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 1dfb7fc1..4cd46196 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -1,3 +1,5 @@ +FROM lambci/lambda:ruby2.7 + FROM lambci/lambda-base-2:build ENV PATH=/var/lang/bin:$PATH \ @@ -8,8 +10,9 @@ ENV PATH=/var/lang/bin:$PATH \ RUBYLIB=/var/task:/var/runtime/lib:/opt/ruby/lib \ BUNDLE_SILENCE_ROOT_WARNING=1 -RUN rm -rf /var/runtime /var/lang /var/rapid && \ - curl https://lambci.s3.amazonaws.com/fs/ruby2.7.tgz | tar -zx -C / +COPY --from=0 /var/runtime /var/runtime +COPY --from=0 /var/lang /var/lang +COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ From ba16412c29548f9bafc0faa8c97f5d3b49d7dc41 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 4 Oct 2020 11:40:08 -0400 Subject: [PATCH 204/234] Update aws-sam-cli to 1.4.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index ddedc900..fbeed971 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index d2e568e9..e2888288 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 && \ + pipx install aws-sam-cli==1.4.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index c585ba0a..f1793a29 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 && \ + pipx install aws-sam-cli==1.4.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 0c5a0205..2669e789 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index d29cb706..bdfcd550 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index fa4732a0..7e507787 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index d64f8e68..3137fe0d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 3c533df0..e92651d7 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 1cc57ffc..760d0c60 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index becdd201..b4dfc74e 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index e3e0f5f0..e1c2a8db 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 790a2b1b..be39d278 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 128daae4..6f48d488 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 928c7ea5..3593c5f9 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 1d078d19..11e3ef31 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.0 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index ac502307..49aac79e 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.0 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 1c40d5d4..1072eb9a 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.0 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 + pipx install aws-sam-cli==1.4.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index d9264d13..611e2d4c 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 && \ + pipx install aws-sam-cli==1.4.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 4cd46196..69833022 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.3.2 && \ + pipx install aws-sam-cli==1.4.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 3839aa3db6215b199fee52703fbd9007d00b1884 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 5 Oct 2020 08:41:59 -0400 Subject: [PATCH 205/234] Update poetry to 1.1.1 in python images --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 97facea9..a30b6136 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -11,7 +11,7 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.0/get-poetry.py | POETRY_VERSION=1.1.0 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.1/get-poetry.py | POETRY_VERSION=1.1.1 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 11e3ef31..5a3f324c 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -27,7 +27,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.0 && \ + pipx install poetry==1.1.1 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.4.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 49aac79e..a4adc0ac 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.0 && \ + pipx install poetry==1.1.1 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.4.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 1072eb9a..0b3257aa 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.0 && \ + pipx install poetry==1.1.1 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.4.0 From 3f85c1a49c1527cbb9245054eb5947a5a9a5e618 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 6 Oct 2020 16:46:58 -0400 Subject: [PATCH 206/234] Update poetry to 1.1.2 in python images --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index a30b6136..6e3c3727 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -11,7 +11,7 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.1/get-poetry.py | POETRY_VERSION=1.1.1 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.1/get-poetry.py | POETRY_VERSION=1.1.2 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 5a3f324c..9288dec5 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -27,7 +27,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.1 && \ + pipx install poetry==1.1.2 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.4.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index a4adc0ac..c39c5b46 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.1 && \ + pipx install poetry==1.1.2 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.4.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 0b3257aa..1913ede8 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.1 && \ + pipx install poetry==1.1.2 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.4.0 From a38b0ee3b2381ddbd18e05d7c888e02d68b14377 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 9 Oct 2020 08:58:03 -0400 Subject: [PATCH 207/234] Update aws-sam-cli to 1.6.2 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index fbeed971..c81f5a8d 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index e2888288..bddb00c2 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 && \ + pipx install aws-sam-cli==1.6.2 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index f1793a29..9d1bc68f 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 && \ + pipx install aws-sam-cli==1.6.2 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 2669e789..f051bea7 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index bdfcd550..e413e546 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 7e507787..64e2944e 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 3137fe0d..33cb7352 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index e92651d7..f4e9a3ea 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 760d0c60..b78b82d4 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index b4dfc74e..56513f6c 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index e1c2a8db..5949ba66 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index be39d278..3fa8af62 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 6f48d488..0f918c25 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 3593c5f9..e750bab2 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 9288dec5..dfdd73cc 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.2 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index c39c5b46..5defbda8 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.2 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 1913ede8..8072dcf6 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.2 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 + pipx install aws-sam-cli==1.6.2 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 611e2d4c..f9abb231 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 && \ + pipx install aws-sam-cli==1.6.2 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 69833022..968b1ee3 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.4.0 && \ + pipx install aws-sam-cli==1.6.2 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 071d2044e131803c0d5467897018a0713f643910 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 14 Oct 2020 16:01:31 -0400 Subject: [PATCH 208/234] Update gradle to 6.7 --- java11/build/Dockerfile | 4 ++-- java8.al2/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index e413e546..b5bb9683 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -10,12 +10,12 @@ COPY --from=0 /var/runtime /var/runtime COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid -RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ +RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 64e2944e..c394c93f 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -13,12 +13,12 @@ COPY --from=0 /var/rapid /var/rapid RUN rm -rf /var/lang/* && \ curl -sSL https://corretto.aws/downloads/resources/8.265.01.1/amazon-corretto-8.265.01.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ rm -rf /var/lang/*.zip && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 33cb7352..0fcaf577 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -11,12 +11,12 @@ COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid RUN yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.6.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.6.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 From 0785576d99dd6a4228057513042823002ffabfac Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 14 Oct 2020 16:02:19 -0400 Subject: [PATCH 209/234] Update poetry to 1.1.3 --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 6e3c3727..57fbc3c8 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -11,7 +11,7 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.1/get-poetry.py | POETRY_VERSION=1.1.2 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.1/get-poetry.py | POETRY_VERSION=1.1.3 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index dfdd73cc..17e562cb 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -27,7 +27,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.2 && \ + pipx install poetry==1.1.3 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.6.2 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 5defbda8..75b401a9 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.2 && \ + pipx install poetry==1.1.3 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.6.2 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 8072dcf6..580df2ef 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.2 && \ + pipx install poetry==1.1.3 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.6.2 From d6d3a9ab4dd79894711c96d0b490ceacb57aec7a Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Wed, 14 Oct 2020 16:03:02 -0400 Subject: [PATCH 210/234] Update dotnetcore to 3.1.403 sdk --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 9d1bc68f..82aa9123 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -8,7 +8,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.402 \ + DOTNET_SDK_VERSION=3.1.403 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 082853b3cf1898b8516424aca4bf3644ae70eca5 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 24 Oct 2020 13:45:46 -0400 Subject: [PATCH 211/234] Bump poetry to 1.1.4 in python runtimes --- python2.7/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 57fbc3c8..826024bd 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -11,7 +11,7 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.1/get-poetry.py | POETRY_VERSION=1.1.3 python && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.4/get-poetry.py | POETRY_VERSION=1.1.4 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir ENV PATH=/root/.poetry/bin:$PATH diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 17e562cb..40d29044 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -27,7 +27,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.3 && \ + pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.6.2 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 75b401a9..35ba7e82 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.3 && \ + pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.6.2 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 580df2ef..0197a882 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -18,7 +18,7 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pip install pipx --no-cache-dir && \ pipx install virtualenv && \ pipx install pipenv && \ - pipx install poetry==1.1.3 && \ + pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ pipx install aws-sam-cli==1.6.2 From 0a1f88a0ccf199e2db68c8e665500d8a76e1930b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 24 Oct 2020 14:11:41 -0400 Subject: [PATCH 212/234] Update package list in base images --- base/amazonlinux1.txt | 2 +- base/base-2/amazonlinux2.txt | 14 +++++++------- base/packages.txt | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt index a02b765a..98715fb1 100644 --- a/base/amazonlinux1.txt +++ b/base/amazonlinux1.txt @@ -92,7 +92,7 @@ sqlite-3.7.17-8.14.amzn1.x86_64 sysctl-defaults-1.0-1.1.amzn1.noarch system-release-2018.03-0.0.noarch tar-1.26-31.22.amzn1.x86_64 -tzdata-2019c-1.73.amzn1.noarch +tzdata-2020a-1.75.amzn1.noarch xz-libs-5.2.2-1.13.amzn1.x86_64 yum-3.4.3-150.71.amzn1.noarch yum-metadata-parser-1.1.4-10.20.amzn1.x86_64 diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index ac90985e..0a66ec0b 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -43,7 +43,7 @@ libgcc-7.3.1-9.amzn2.x86_64 libgcrypt-1.5.3-14.amzn2.0.2.x86_64 libgpg-error-1.12-3.amzn2.0.3.x86_64 libidn2-2.3.0-1.amzn2.x86_64 -libmetalink-0.1.2-7.amzn2.0.2.x86_64 +libmetalink-0.1.3-13.amzn2.x86_64 libmount-2.30.2-2.amzn2.0.4.x86_64 libnghttp2-1.41.0-1.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 @@ -69,8 +69,8 @@ nss-tools-3.44.0-7.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 openldap-2.4.44-15.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 -p11-kit-0.23.19-1.amzn2.x86_64 -p11-kit-trust-0.23.19-1.amzn2.x86_64 +p11-kit-0.23.21-2.amzn2.0.1.x86_64 +p11-kit-trust-0.23.21-2.amzn2.0.1.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 pinentry-0.8.1-17.amzn2.0.2.x86_64 popt-1.13-16.amzn2.0.2.x86_64 @@ -82,12 +82,12 @@ python-iniparse-0.4-9.amzn2.noarch python-libs-2.7.18-1.amzn2.0.2.x86_64 python-pycurl-7.19.0-19.amzn2.0.2.x86_64 python-urlgrabber-3.10-9.amzn2.0.1.noarch -python2-rpm-4.11.3-40.amzn2.0.4.x86_64 +python2-rpm-4.11.3-40.amzn2.0.5.x86_64 pyxattr-0.5.1-5.amzn2.0.2.x86_64 readline-6.2-10.amzn2.0.2.x86_64 -rpm-4.11.3-40.amzn2.0.4.x86_64 -rpm-build-libs-4.11.3-40.amzn2.0.4.x86_64 -rpm-libs-4.11.3-40.amzn2.0.4.x86_64 +rpm-4.11.3-40.amzn2.0.5.x86_64 +rpm-build-libs-4.11.3-40.amzn2.0.5.x86_64 +rpm-libs-4.11.3-40.amzn2.0.5.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 setup-2.8.71-10.amzn2.0.1.noarch shared-mime-info-1.8-4.amzn2.x86_64 diff --git a/base/packages.txt b/base/packages.txt index b1cd85be..ed4de740 100644 --- a/base/packages.txt +++ b/base/packages.txt @@ -181,16 +181,16 @@ popt-1.13-7.7.amzn1.x86_64 procps-3.2.8-45.16.amzn1.x86_64 psmisc-22.20-8.12.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.18-1.138.amzn1.x86_64 +python27-2.7.18-2.139.amzn1.x86_64 python27-iniparse-0.3.1-2.1.9.amzn1.noarch -python27-libs-2.7.18-1.138.amzn1.x86_64 +python27-libs-2.7.18-2.139.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 python27-pyxattr-0.5.0-1.6.amzn1.x86_64 python27-urlgrabber-3.10-8.16.amzn1.noarch -python36-3.6.11-1.17.amzn1.x86_64 -python36-libs-3.6.11-1.17.amzn1.x86_64 +python36-3.6.12-1.19.amzn1.x86_64 +python36-libs-3.6.12-1.19.amzn1.x86_64 python36-pip-9.0.3-1.27.amzn1.noarch python36-setuptools-36.2.7-1.33.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 @@ -207,8 +207,8 @@ sysctl-defaults-1.0-1.1.amzn1.noarch system-release-2018.03-0.0.noarch tar-1.26-31.22.amzn1.x86_64 ttmkfdir-3.0.9-32.1.5.amzn1.x86_64 -tzdata-2019c-1.73.amzn1.noarch -tzdata-java-2019c-1.73.amzn1.noarch +tzdata-2020a-1.75.amzn1.noarch +tzdata-java-2020a-1.75.amzn1.noarch unzip-6.0-4.10.amzn1.x86_64 urw-fonts-2.4-10.7.amzn1.noarch util-linux-2.23.2-59.29.amzn1.x86_64 From 27a9af159daf17bf0a25ca932b656ab7c0d796cd Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 29 Oct 2020 20:05:31 -0400 Subject: [PATCH 213/234] Update aws-sam-cli to 1.7.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index c81f5a8d..e675411e 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index bddb00c2..0e0da528 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 && \ + pipx install aws-sam-cli==1.7.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 82aa9123..c0bcd242 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 && \ + pipx install aws-sam-cli==1.7.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index f051bea7..b22fdb72 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index b5bb9683..abf973f1 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index c394c93f..2e14492d 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 0fcaf577..c8ee4c94 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index f4e9a3ea..3bb9c466 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index b78b82d4..9e38767e 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 56513f6c..4a57e33d 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 5949ba66..9efe61f3 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 3fa8af62..4d17101a 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 0f918c25..4a588655 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index e750bab2..3beb63e5 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 40d29044..94b3fdd0 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 35ba7e82..08373525 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 0197a882..3e996ce6 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 + pipx install aws-sam-cli==1.7.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index f9abb231..832f92dd 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 && \ + pipx install aws-sam-cli==1.7.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 968b1ee3..9ba9965e 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.6.2 && \ + pipx install aws-sam-cli==1.7.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From ce25a2d132b775c4c902e994f5a448ba85c3c1af Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 29 Oct 2020 20:08:44 -0400 Subject: [PATCH 214/234] Update base2 packages --- base/amazonlinux1.txt | 12 ++++++------ base/base-2/amazonlinux2.txt | 24 ++++++++++++------------ base/base-2/packages.txt | 4 ++-- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt index 98715fb1..beed053c 100644 --- a/base/amazonlinux1.txt +++ b/base/amazonlinux1.txt @@ -46,8 +46,8 @@ libstdc++72-7.2.1-2.59.amzn1.x86_64 libtasn1-2.3-6.6.amzn1.x86_64 libunistring-0.9.3-6.1.amzn1.x86_64 libverto-0.2.5-4.9.amzn1.x86_64 -libxml2-2.9.1-6.4.40.amzn1.x86_64 -libxml2-python27-2.9.1-6.4.40.amzn1.x86_64 +libxml2-2.9.1-6.4.41.amzn1.x86_64 +libxml2-python27-2.9.1-6.4.41.amzn1.x86_64 lua-5.1.4-4.1.9.amzn1.x86_64 make-3.82-21.10.amzn1.x86_64 ncurses-5.7-4.20090207.14.amzn1.x86_64 @@ -81,10 +81,10 @@ python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 python27-pyxattr-0.5.0-1.6.amzn1.x86_64 python27-urlgrabber-3.10-8.16.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 -rpm-4.11.3-40.77.amzn1.x86_64 -rpm-build-libs-4.11.3-40.77.amzn1.x86_64 -rpm-libs-4.11.3-40.77.amzn1.x86_64 -rpm-python27-4.11.3-40.77.amzn1.x86_64 +rpm-4.11.3-40.78.amzn1.x86_64 +rpm-build-libs-4.11.3-40.78.amzn1.x86_64 +rpm-libs-4.11.3-40.78.amzn1.x86_64 +rpm-python27-4.11.3-40.78.amzn1.x86_64 sed-4.2.1-10.10.amzn1.x86_64 setup-2.8.14-20.12.amzn1.noarch shared-mime-info-1.1-9.8.amzn1.x86_64 diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index 0a66ec0b..3dee288d 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -1,26 +1,26 @@ amazon-linux-extras-1.6.12-1.amzn2.noarch basesystem-10.0-7.amzn2.0.1.noarch -bash-4.2.46-33.amzn2.x86_64 +bash-4.2.46-34.amzn2.x86_64 bzip2-libs-1.0.6-13.amzn2.0.2.x86_64 ca-certificates-2019.2.32-76.amzn2.0.3.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-24.amzn2.x86_64 -cpio-2.11-27.amzn2.x86_64 +cpio-2.11-28.amzn2.x86_64 curl-7.61.1-12.amzn2.0.2.x86_64 cyrus-sasl-lib-2.1.26-23.amzn2.x86_64 diffutils-3.3-5.amzn2.x86_64 elfutils-libelf-0.176-2.amzn2.x86_64 -expat-2.1.0-10.amzn2.0.2.x86_64 +expat-2.1.0-12.amzn2.x86_64 file-libs-5.11-36.amzn2.0.1.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 findutils-4.5.11-6.amzn2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 glib2-2.56.1-5.amzn2.0.1.x86_64 -glibc-2.26-35.amzn2.x86_64 -glibc-common-2.26-35.amzn2.x86_64 -glibc-langpack-en-2.26-35.amzn2.x86_64 -glibc-minimal-langpack-2.26-35.amzn2.x86_64 +glibc-2.26-37.amzn2.x86_64 +glibc-common-2.26-37.amzn2.x86_64 +glibc-langpack-en-2.26-37.amzn2.x86_64 +glibc-minimal-langpack-2.26-37.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 gnupg2-2.0.22-5.amzn2.0.4.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 @@ -33,8 +33,8 @@ libassuan-2.1.0-3.amzn2.0.2.x86_64 libattr-2.4.46-12.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 -libcom_err-1.42.9-12.amzn2.0.2.x86_64 -libcrypt-2.26-35.amzn2.x86_64 +libcom_err-1.42.9-19.amzn2.x86_64 +libcrypt-2.26-37.amzn2.x86_64 libcurl-7.61.1-12.amzn2.0.2.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 @@ -48,13 +48,13 @@ libmount-2.30.2-2.amzn2.0.4.x86_64 libnghttp2-1.41.0-1.amzn2.x86_64 libselinux-2.5-12.amzn2.0.2.x86_64 libsepol-2.5-8.1.amzn2.0.2.x86_64 -libssh2-1.4.3-12.amzn2.2.2.x86_64 +libssh2-1.4.3-12.amzn2.2.3.x86_64 libstdc++-7.3.1-9.amzn2.x86_64 libtasn1-4.10-1.amzn2.0.2.x86_64 libunistring-0.9.3-9.amzn2.0.2.x86_64 libuuid-2.30.2-2.amzn2.0.4.x86_64 libverto-0.2.5-4.amzn2.0.2.x86_64 -libxml2-2.9.1-6.amzn2.4.1.x86_64 +libxml2-2.9.1-6.amzn2.5.1.x86_64 lua-5.1.4-15.amzn2.0.2.x86_64 ncurses-6.0-8.20170212.amzn2.1.3.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.3.noarch @@ -67,7 +67,7 @@ nss-softokn-freebl-3.44.0-8.amzn2.x86_64 nss-sysinit-3.44.0-7.amzn2.x86_64 nss-tools-3.44.0-7.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 -openldap-2.4.44-15.amzn2.x86_64 +openldap-2.4.44-22.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 p11-kit-0.23.21-2.amzn2.0.1.x86_64 p11-kit-trust-0.23.21-2.amzn2.0.1.x86_64 diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index 18018541..85f41c16 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -33,8 +33,8 @@ nspr-4.21.0-1.amzn2.0.2.x86_64 nss-softokn-freebl-3.44.0-8.amzn2.x86_64 nss-util-3.44.0-4.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 -p11-kit-0.23.19-1.amzn2.x86_64 -p11-kit-trust-0.23.19-1.amzn2.x86_64 +p11-kit-0.23.21-2.amzn2.0.1.x86_64 +p11-kit-trust-0.23.21-2.amzn2.0.1.x86_64 pcre-8.32-17.amzn2.0.2.x86_64 popt-1.13-16.amzn2.0.2.x86_64 sed-4.2.2-5.amzn2.0.2.x86_64 From b8069e22612c44305ed28188d672429f2b69b891 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 5 Nov 2020 21:13:22 -0500 Subject: [PATCH 215/234] Update aws-sam-cli to 1.8.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index e675411e..fc8216ba 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 0e0da528..80626c55 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 && \ + pipx install aws-sam-cli==1.8.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index c0bcd242..62792b41 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 && \ + pipx install aws-sam-cli==1.8.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index b22fdb72..6bacf73b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index abf973f1..a4f33612 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 2e14492d..d54a88ea 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index c8ee4c94..11bb8f4f 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 3bb9c466..69557bb4 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 9e38767e..d5eaaac1 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 4a57e33d..09aee3e4 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 9efe61f3..a8287d23 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 4d17101a..e50647dd 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 4a588655..14ed1022 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 3beb63e5..f1980e41 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 94b3fdd0..23ad8d3a 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 08373525..2074777a 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 3e996ce6..8d67f17f 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 + pipx install aws-sam-cli==1.8.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 832f92dd..4443df93 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 && \ + pipx install aws-sam-cli==1.8.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 9ba9965e..540e6625 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.7.0 && \ + pipx install aws-sam-cli==1.8.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 8192be17f92d23304c737cd37592eac80ae536e0 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 10 Nov 2020 14:13:10 -0500 Subject: [PATCH 216/234] Update base and base2 packages --- base/base-2/Dockerfile | 2 +- base/base-2/packages.txt | 12 ++++++------ base/packages.txt | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index 41750c26..aba6aa99 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -6,7 +6,7 @@ FROM amazonlinux:2 ADD ./base-2.tgz /opt/ RUN yum --installroot=/opt reinstall -y filesystem-3.2-25.amzn2.0.4 \ - setup-2.8.71-10.amzn2.0.1 glibc-2.26-35.amzn2 glibc-common-2.26-35.amzn2 && \ + setup-2.8.71-10.amzn2.0.1 glibc-2.26-37.amzn2 glibc-common-2.26-37.amzn2 && \ yum --installroot=/opt clean all FROM scratch diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index 85f41c16..b306a3a8 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -1,14 +1,14 @@ basesystem-10.0-7.amzn2.0.1.noarch -bash-4.2.46-33.amzn2.x86_64 +bash-4.2.46-34.amzn2.x86_64 ca-certificates-2019.2.32-76.amzn2.0.3.noarch chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-24.amzn2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 -glibc-2.26-35.amzn2.x86_64 -glibc-all-langpacks-2.26-35.amzn2.x86_64 -glibc-common-2.26-35.amzn2.x86_64 -glibc-minimal-langpack-2.26-35.amzn2.x86_64 +glibc-2.26-37.amzn2.x86_64 +glibc-all-langpacks-2.26-37.amzn2.x86_64 +glibc-common-2.26-37.amzn2.x86_64 +glibc-minimal-langpack-2.26-37.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 @@ -17,7 +17,7 @@ krb5-libs-1.15.1-37.amzn2.2.2.x86_64 libacl-2.2.51-14.amzn2.x86_64 libattr-2.4.46-12.amzn2.0.2.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 -libcom_err-1.42.9-12.amzn2.0.2.x86_64 +libcom_err-1.42.9-19.amzn2.x86_64 libffi-3.0.13-18.amzn2.0.2.x86_64 libgcc-7.3.1-9.amzn2.x86_64 libicu-50.2-4.amzn2.x86_64 diff --git a/base/packages.txt b/base/packages.txt index ed4de740..efe940a0 100644 --- a/base/packages.txt +++ b/base/packages.txt @@ -119,7 +119,7 @@ libuuid-2.23.2-59.29.amzn1.x86_64 libverto-0.2.5-4.9.amzn1.x86_64 libwmf-lite-0.2.8.4-41.13.amzn1.x86_64 libxcb-1.11-2.21.amzn1.x86_64 -libxml2-2.9.1-6.4.40.amzn1.x86_64 +libxml2-2.9.1-6.4.41.amzn1.x86_64 libxshmfence-1.2-1.4.amzn1.x86_64 libxslt-1.1.28-5.13.amzn1.x86_64 lksctp-tools-1.0.10-7.7.amzn1.x86_64 @@ -194,10 +194,10 @@ python36-libs-3.6.12-1.19.amzn1.x86_64 python36-pip-9.0.3-1.27.amzn1.noarch python36-setuptools-36.2.7-1.33.amzn1.noarch readline-6.2-9.14.amzn1.x86_64 -rpm-4.11.3-40.77.amzn1.x86_64 -rpm-build-libs-4.11.3-40.77.amzn1.x86_64 -rpm-libs-4.11.3-40.77.amzn1.x86_64 -rpm-python27-4.11.3-40.77.amzn1.x86_64 +rpm-4.11.3-40.78.amzn1.x86_64 +rpm-build-libs-4.11.3-40.78.amzn1.x86_64 +rpm-libs-4.11.3-40.78.amzn1.x86_64 +rpm-python27-4.11.3-40.78.amzn1.x86_64 sed-4.2.1-10.10.amzn1.x86_64 setup-2.8.14-20.12.amzn1.noarch shadow-utils-4.1.4.2-13.10.amzn1.x86_64 From 64b72bf9c918aa7df3a31abeb1e321e97eb13468 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 10 Nov 2020 14:13:26 -0500 Subject: [PATCH 217/234] Update aws-sam-cli to 1.9.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index fc8216ba..25be1128 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 80626c55..ec92d1ce 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 && \ + pipx install aws-sam-cli==1.9.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 62792b41..b2c54335 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 && \ + pipx install aws-sam-cli==1.9.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 6bacf73b..f5eb80af 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index a4f33612..32714825 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index d54a88ea..0eb718e0 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 11bb8f4f..55090f57 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 69557bb4..888f19a0 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index d5eaaac1..96979a34 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 09aee3e4..c99b7ead 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index a8287d23..a87475eb 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index e50647dd..f9b7ba54 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 14ed1022..bed28c2b 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index f1980e41..c528baaa 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 23ad8d3a..3d54de23 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 2074777a..0f2b5629 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 8d67f17f..caf35d3d 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 + pipx install aws-sam-cli==1.9.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 4443df93..2aa06958 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 && \ + pipx install aws-sam-cli==1.9.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 540e6625..2a04349f 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.8.0 && \ + pipx install aws-sam-cli==1.9.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 1d8714b313f3a1fc51beb39fb9cab4401b974926 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Tue, 10 Nov 2020 14:13:39 -0500 Subject: [PATCH 218/234] Update .NET SDK to 3.1.404 --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index b2c54335..ae78cd10 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -8,7 +8,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.403 \ + DOTNET_SDK_VERSION=3.1.404 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 93e48e987c353d4f0fe2b6901fcbb6598e791a97 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 12 Nov 2020 17:01:56 -0500 Subject: [PATCH 219/234] Update aws-sam-cli to 1.10.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 25be1128..c303fb80 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index ec92d1ce..b9a0fe39 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 && \ + pipx install aws-sam-cli==1.10.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index ae78cd10..bc6e3ef1 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 && \ + pipx install aws-sam-cli==1.10.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index f5eb80af..bd7d4692 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 32714825..78204a2b 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 0eb718e0..911c9900 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 55090f57..27b3c83f 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/b RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 888f19a0..9343b6ad 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index 96979a34..b23eec65 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index c99b7ead..0f181c48 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index a87475eb..54b8fa53 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index f9b7ba54..7dea26c7 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index bed28c2b..0e03e0d4 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index c528baaa..a4bde671 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 3d54de23..8d0b6ffa 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 0f2b5629..3378bf48 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index caf35d3d..b9eca049 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 + pipx install aws-sam-cli==1.10.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 2aa06958..6e483431 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 && \ + pipx install aws-sam-cli==1.10.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 2a04349f..3b65e546 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.9.0 && \ + pipx install aws-sam-cli==1.10.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From b281a1e5767ff499eacc8963230dd4b09f39eb0e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 16 Nov 2020 13:44:51 -0500 Subject: [PATCH 220/234] Update gradle to 6.7.1 in java build images --- java11/build/Dockerfile | 4 ++-- java8.al2/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 78204a2b..fdaca1df 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -10,12 +10,12 @@ COPY --from=0 /var/runtime /var/runtime COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid -RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7-bin.zip && \ +RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 911c9900..a69d5dd9 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -13,12 +13,12 @@ COPY --from=0 /var/rapid /var/rapid RUN rm -rf /var/lang/* && \ curl -sSL https://corretto.aws/downloads/resources/8.265.01.1/amazon-corretto-8.265.01.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ rm -rf /var/lang/*.zip && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 27b3c83f..5b60c838 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -11,12 +11,12 @@ COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid RUN yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.7/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 From af0840e6f9ff474662059a26187419013a7f9df4 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 22 Nov 2020 10:05:31 -0500 Subject: [PATCH 221/234] Update packages in base builds --- base/amazonlinux1.txt | 8 ++++---- base/base-2/Dockerfile | 2 +- base/base-2/amazonlinux2.txt | 26 +++++++++++++------------- base/base-2/packages.txt | 14 +++++++------- base/packages.txt | 10 +++++----- 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/base/amazonlinux1.txt b/base/amazonlinux1.txt index beed053c..4d630e4b 100644 --- a/base/amazonlinux1.txt +++ b/base/amazonlinux1.txt @@ -4,7 +4,7 @@ bzip2-libs-1.0.6-8.12.amzn1.x86_64 ca-certificates-2018.2.22-65.1.22.amzn1.noarch chkconfig-1.3.49.3-2.14.amzn1.x86_64 coreutils-8.22-15.52.amzn1.x86_64 -curl-7.61.1-12.94.amzn1.x86_64 +curl-7.61.1-12.95.amzn1.x86_64 cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 db4-4.7.25-18.11.amzn1.x86_64 db4-utils-4.7.25-18.11.amzn1.x86_64 @@ -30,7 +30,7 @@ libassuan-2.0.3-3.3.amzn1.x86_64 libattr-2.4.46-12.10.amzn1.x86_64 libcap-2.16-5.5.8.amzn1.x86_64 libcom_err-1.43.5-2.43.amzn1.x86_64 -libcurl-7.61.1-12.94.amzn1.x86_64 +libcurl-7.61.1-12.95.amzn1.x86_64 libffi-3.0.13-16.5.amzn1.x86_64 libgcc72-7.2.1-2.59.amzn1.x86_64 libgcrypt-1.5.3-12.19.amzn1.x86_64 @@ -70,11 +70,11 @@ pinentry-0.7.6-6.11.amzn1.x86_64 pkgconfig-0.27.1-2.7.amzn1.x86_64 popt-1.13-7.7.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.18-2.139.amzn1.x86_64 +python27-2.7.18-2.140.amzn1.x86_64 python27-chardet-2.0.1-7.7.amzn1.noarch python27-iniparse-0.3.1-2.1.9.amzn1.noarch python27-kitchen-1.1.1-5.6.amzn1.noarch -python27-libs-2.7.18-2.139.amzn1.x86_64 +python27-libs-2.7.18-2.140.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index aba6aa99..42ca14d7 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -6,7 +6,7 @@ FROM amazonlinux:2 ADD ./base-2.tgz /opt/ RUN yum --installroot=/opt reinstall -y filesystem-3.2-25.amzn2.0.4 \ - setup-2.8.71-10.amzn2.0.1 glibc-2.26-37.amzn2 glibc-common-2.26-37.amzn2 && \ + setup-2.8.71-10.amzn2.0.1 glibc-2.26-37.amzn2 glibc-common-2.26-38.amzn2 && \ yum --installroot=/opt clean all FROM scratch diff --git a/base/base-2/amazonlinux2.txt b/base/base-2/amazonlinux2.txt index 3dee288d..39e195e2 100644 --- a/base/base-2/amazonlinux2.txt +++ b/base/base-2/amazonlinux2.txt @@ -16,11 +16,11 @@ filesystem-3.2-25.amzn2.0.4.x86_64 findutils-4.5.11-6.amzn2.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 gdbm-1.13-6.amzn2.0.2.x86_64 -glib2-2.56.1-5.amzn2.0.1.x86_64 -glibc-2.26-37.amzn2.x86_64 -glibc-common-2.26-37.amzn2.x86_64 -glibc-langpack-en-2.26-37.amzn2.x86_64 -glibc-minimal-langpack-2.26-37.amzn2.x86_64 +glib2-2.56.1-7.amzn2.0.1.x86_64 +glibc-2.26-38.amzn2.x86_64 +glibc-common-2.26-38.amzn2.x86_64 +glibc-langpack-en-2.26-38.amzn2.x86_64 +glibc-minimal-langpack-2.26-38.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 gnupg2-2.0.22-5.amzn2.0.4.x86_64 gpgme-1.3.2-5.amzn2.0.2.x86_64 @@ -34,7 +34,7 @@ libattr-2.4.46-12.amzn2.0.2.x86_64 libblkid-2.30.2-2.amzn2.0.4.x86_64 libcap-2.22-9.amzn2.0.2.x86_64 libcom_err-1.42.9-19.amzn2.x86_64 -libcrypt-2.26-37.amzn2.x86_64 +libcrypt-2.26-38.amzn2.x86_64 libcurl-7.61.1-12.amzn2.0.2.x86_64 libdb-5.3.21-24.amzn2.0.3.x86_64 libdb-utils-5.3.21-24.amzn2.0.3.x86_64 @@ -59,14 +59,14 @@ lua-5.1.4-15.amzn2.0.2.x86_64 ncurses-6.0-8.20170212.amzn2.1.3.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.3.noarch ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 -nspr-4.21.0-1.amzn2.0.2.x86_64 -nss-3.44.0-7.amzn2.x86_64 +nspr-4.25.0-2.amzn2.x86_64 +nss-3.53.1-3.amzn2.x86_64 nss-pem-1.0.3-5.amzn2.x86_64 -nss-softokn-3.44.0-8.amzn2.x86_64 -nss-softokn-freebl-3.44.0-8.amzn2.x86_64 -nss-sysinit-3.44.0-7.amzn2.x86_64 -nss-tools-3.44.0-7.amzn2.x86_64 -nss-util-3.44.0-4.amzn2.x86_64 +nss-softokn-3.53.1-6.amzn2.x86_64 +nss-softokn-freebl-3.53.1-6.amzn2.x86_64 +nss-sysinit-3.53.1-3.amzn2.x86_64 +nss-tools-3.53.1-3.amzn2.x86_64 +nss-util-3.53.1-1.amzn2.x86_64 openldap-2.4.44-22.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 p11-kit-0.23.21-2.amzn2.0.1.x86_64 diff --git a/base/base-2/packages.txt b/base/base-2/packages.txt index b306a3a8..88d114d4 100644 --- a/base/base-2/packages.txt +++ b/base/base-2/packages.txt @@ -5,10 +5,10 @@ chkconfig-1.7.4-1.amzn2.0.2.x86_64 coreutils-8.22-24.amzn2.x86_64 filesystem-3.2-25.amzn2.0.4.x86_64 gawk-4.0.2-4.amzn2.1.2.x86_64 -glibc-2.26-37.amzn2.x86_64 -glibc-all-langpacks-2.26-37.amzn2.x86_64 -glibc-common-2.26-37.amzn2.x86_64 -glibc-minimal-langpack-2.26-37.amzn2.x86_64 +glibc-2.26-38.amzn2.x86_64 +glibc-all-langpacks-2.26-38.amzn2.x86_64 +glibc-common-2.26-38.amzn2.x86_64 +glibc-minimal-langpack-2.26-38.amzn2.x86_64 gmp-6.0.0-15.amzn2.0.2.x86_64 grep-2.20-3.amzn2.0.2.x86_64 info-5.1-5.amzn2.x86_64 @@ -29,9 +29,9 @@ libverto-0.2.5-4.amzn2.0.2.x86_64 ncurses-6.0-8.20170212.amzn2.1.3.x86_64 ncurses-base-6.0-8.20170212.amzn2.1.3.noarch ncurses-libs-6.0-8.20170212.amzn2.1.3.x86_64 -nspr-4.21.0-1.amzn2.0.2.x86_64 -nss-softokn-freebl-3.44.0-8.amzn2.x86_64 -nss-util-3.44.0-4.amzn2.x86_64 +nspr-4.25.0-2.amzn2.x86_64 +nss-softokn-freebl-3.53.1-6.amzn2.x86_64 +nss-util-3.53.1-1.amzn2.x86_64 openssl-libs-1.0.2k-19.amzn2.0.3.x86_64 p11-kit-0.23.21-2.amzn2.0.1.x86_64 p11-kit-trust-0.23.21-2.amzn2.0.1.x86_64 diff --git a/base/packages.txt b/base/packages.txt index efe940a0..7e5e4fb1 100644 --- a/base/packages.txt +++ b/base/packages.txt @@ -17,7 +17,7 @@ cpio-2.10-12.12.amzn1.x86_64 cracklib-2.8.16-4.14.amzn1.x86_64 cracklib-dicts-2.8.16-4.14.amzn1.x86_64 cups-libs-1.4.2-67.21.amzn1.x86_64 -curl-7.61.1-12.94.amzn1.x86_64 +curl-7.61.1-12.95.amzn1.x86_64 cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64 db4-4.7.25-18.11.amzn1.x86_64 db4-utils-4.7.25-18.11.amzn1.x86_64 @@ -84,7 +84,7 @@ libblkid-2.23.2-59.29.amzn1.x86_64 libcap-2.16-5.5.8.amzn1.x86_64 libcap-ng-0.7.5-4.15.amzn1.x86_64 libcom_err-1.43.5-2.43.amzn1.x86_64 -libcurl-7.61.1-12.94.amzn1.x86_64 +libcurl-7.61.1-12.95.amzn1.x86_64 libdrm-2.4.82-1.14.amzn1.x86_64 libffi-3.0.13-16.5.amzn1.x86_64 libfontenc-1.0.5-2.6.amzn1.x86_64 @@ -109,7 +109,7 @@ libsmartcols-2.23.2-59.29.amzn1.x86_64 libssh2-1.4.2-3.12.amzn1.x86_64 libstdc++72-7.2.1-2.59.amzn1.x86_64 libtasn1-2.3-6.6.amzn1.x86_64 -libtiff-4.0.3-32.34.amzn1.x86_64 +libtiff-4.0.3-35.36.amzn1.x86_64 libtool-ltdl-2.4.2-20.4.8.5.32.amzn1.x86_64 libudev-173-4.13.amzn1.x86_64 libunistring-0.9.3-6.1.amzn1.x86_64 @@ -181,9 +181,9 @@ popt-1.13-7.7.amzn1.x86_64 procps-3.2.8-45.16.amzn1.x86_64 psmisc-22.20-8.12.amzn1.x86_64 pth-2.0.7-9.3.7.amzn1.x86_64 -python27-2.7.18-2.139.amzn1.x86_64 +python27-2.7.18-2.140.amzn1.x86_64 python27-iniparse-0.3.1-2.1.9.amzn1.noarch -python27-libs-2.7.18-2.139.amzn1.x86_64 +python27-libs-2.7.18-2.140.amzn1.x86_64 python27-pycurl-7.19.0-17.12.amzn1.x86_64 python27-pygpgme-0.3-9.12.amzn1.x86_64 python27-pyliblzma-0.5.3-11.6.amzn1.x86_64 From 4e1b563f26ec90e83d54af776924fb0fd0752c21 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 22 Nov 2020 10:05:49 -0500 Subject: [PATCH 222/234] Update aws-sam-cli to 1.11.0 --- dotnetcore2.0/build/Dockerfile | 2 +- dotnetcore2.1/build/Dockerfile | 2 +- dotnetcore3.1/build/Dockerfile | 2 +- go1.x/build/Dockerfile | 2 +- java11/build/Dockerfile | 2 +- java8.al2/build/Dockerfile | 2 +- java8/build/Dockerfile | 2 +- nodejs10.x/build/Dockerfile | 2 +- nodejs12.x/build/Dockerfile | 2 +- nodejs4.3/build/Dockerfile | 2 +- nodejs6.10/build/Dockerfile | 2 +- nodejs8.10/build/Dockerfile | 2 +- provided.al2/build/Dockerfile | 2 +- provided/build/Dockerfile | 2 +- python3.6/build/Dockerfile | 2 +- python3.7/build/Dockerfile | 2 +- python3.8/build/Dockerfile | 2 +- ruby2.5/build/Dockerfile | 2 +- ruby2.7/build/Dockerfile | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index c303fb80..21140dda 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -30,6 +30,6 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index b9a0fe39..2b314be4 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -31,7 +31,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install pipenv && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 && \ + pipx install aws-sam-cli==1.11.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index bc6e3ef1..52f389c7 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -26,7 +26,7 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 && \ + pipx install aws-sam-cli==1.11.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index bd7d4692..7aa4e18b 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -24,6 +24,6 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index fdaca1df..419ef7ce 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -20,4 +20,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index a69d5dd9..fe734ea5 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 5b60c838..f0d0dd5b 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -23,4 +23,4 @@ ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 9343b6ad..31a81f5f 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index b23eec65..fcef1c7b 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -14,4 +14,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 0f181c48..8d1c7e8f 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index 54b8fa53..fbfba52a 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 7dea26c7..2191f84e 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index 0e03e0d4..aa77a92c 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -9,4 +9,4 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index a4bde671..2c3d392a 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -11,4 +11,4 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 8d0b6ffa..439a1c7d 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -30,4 +30,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 3378bf48..086e0f6a 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index b9eca049..1049db2b 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -21,4 +21,4 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 + pipx install aws-sam-cli==1.11.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 6e483431..8d783f04 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -19,6 +19,6 @@ COPY --from=0 /var/rapid /var/rapid RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 && \ + pipx install aws-sam-cli==1.11.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index 3b65e546..fd43b68d 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -17,6 +17,6 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.10.0 && \ + pipx install aws-sam-cli==1.11.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From b25f2695dec37f4b25c71f33ae3166075df38b6a Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Thu, 3 Dec 2020 13:06:05 -0500 Subject: [PATCH 223/234] Clarify dev packages on base images Addresses #321 --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index df924a37..bb211d1f 100644 --- a/README.md +++ b/README.md @@ -397,6 +397,9 @@ Yum packages installed on build images: - `docker` (Docker in Docker!) - `clang` - `cmake` + +The build image for older Amazon Linux 1 based runtimes also include: + - `python27-devel` - `python36-devel` - `ImageMagick-devel` From 1fc4f2a4f3656e16297db508bbed9bc191a660ab Mon Sep 17 00:00:00 2001 From: novemberde Date: Sat, 19 Dec 2020 22:25:13 +0900 Subject: [PATCH 224/234] fix(log): apply billed duration by 1ms --- provided/run/init.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provided/run/init.go b/provided/run/init.go index 6b9339c2..9905cf2e 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -978,7 +978,7 @@ func (mc *mockLambdaContext) LogEndRequest() { "Billed Duration: %.f ms\t"+ "Memory Size: %s MB\t"+ "Max Memory Used: %d MB\t", - mc.RequestID, diffMs, math.Ceil(diffMs/100)*100, mc.MemSize, mc.MaxMem)) + mc.RequestID, diffMs, math.Ceil(diffMs), mc.MemSize, mc.MaxMem)) } type invokeResponse struct { From 7002aa01fff1952f12594af1a7f03e72a7cd1be8 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 09:28:14 -0500 Subject: [PATCH 225/234] Ensure we only use a 2.7-compatible pip for provided --- base/dump-provided.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/dump-provided.sh b/base/dump-provided.sh index 690ec844..9a3472f3 100755 --- a/base/dump-provided.sh +++ b/base/dump-provided.sh @@ -6,7 +6,7 @@ export HOME=/tmp export PATH=/tmp/.local/bin:$PATH cd /tmp -curl -sSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py +curl -sSL https://bootstrap.pypa.io/2.7/get-pip.py -o get-pip.py python get-pip.py --user pip install --user awscli From dc04991bdc702b10279f0f1adb50ae09de0dc579 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 09:29:40 -0500 Subject: [PATCH 226/234] Bump gradle to 6.8.1 --- java11/build/Dockerfile | 4 ++-- java8.al2/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 419ef7ce..3b54f0a4 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -10,12 +10,12 @@ COPY --from=0 /var/runtime /var/runtime COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid -RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7.1-bin.zip && \ +RUN mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.8.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.8.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index fe734ea5..959d5832 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -13,12 +13,12 @@ COPY --from=0 /var/rapid /var/rapid RUN rm -rf /var/lang/* && \ curl -sSL https://corretto.aws/downloads/resources/8.265.01.1/amazon-corretto-8.265.01.1-linux-x64.tar.gz | tar -xz --strip-components=1 -C /var/lang && \ rm -rf /var/lang/*.zip && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.8.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.8.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index f0d0dd5b..83c9e60d 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -11,12 +11,12 @@ COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid RUN yum install -y java-1.8.0-openjdk-devel && \ - mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.7.1-bin.zip && \ + mkdir /usr/local/gradle && curl -L -o gradle.zip https://services.gradle.org/distributions/gradle-6.8.1-bin.zip && \ unzip -qd /usr/local/gradle gradle.zip && rm gradle.zip && mkdir /usr/local/maven && \ curl -L http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | \ tar -zx -C /usr/local/maven -ENV PATH="/usr/local/gradle/gradle-6.7.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" +ENV PATH="/usr/local/gradle/gradle-6.8.1/bin:/usr/local/maven/apache-maven-3.6.3/bin:${PATH}" # Add these as a separate layer as they get updated frequently # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 From d17854762dbcce1bf22fd54c42a45fef6cba2e11 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 09:32:35 -0500 Subject: [PATCH 227/234] Bump .NET Core SDK to 3.1.405 --- dotnetcore3.1/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 52f389c7..18e114ac 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -8,7 +8,7 @@ ENV DOTNET_ROOT=/var/lang/bin ENV PATH=/root/.dotnet/tools:$DOTNET_ROOT:$PATH \ LD_LIBRARY_PATH=/var/lang/lib:$LD_LIBRARY_PATH \ AWS_EXECUTION_ENV=AWS_Lambda_dotnetcore3.1 \ - DOTNET_SDK_VERSION=3.1.404 \ + DOTNET_SDK_VERSION=3.1.405 \ DOTNET_CLI_TELEMETRY_OPTOUT=1 \ NUGET_XMLDOC_MODE=skip From 231bde0674894a215ac9a04a181924f62832230e Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 09:33:11 -0500 Subject: [PATCH 228/234] Bump aws-lambda-builders and aws-sam-cli versions --- dotnetcore2.0/build/Dockerfile | 4 ++-- dotnetcore2.1/build/Dockerfile | 4 ++-- dotnetcore3.1/build/Dockerfile | 4 ++-- go1.x/build/Dockerfile | 4 ++-- java11/build/Dockerfile | 4 ++-- java8.al2/build/Dockerfile | 4 ++-- java8/build/Dockerfile | 4 ++-- nodejs10.x/build/Dockerfile | 4 ++-- nodejs12.x/build/Dockerfile | 4 ++-- nodejs4.3/build/Dockerfile | 4 ++-- nodejs6.10/build/Dockerfile | 4 ++-- nodejs8.10/build/Dockerfile | 4 ++-- provided.al2/build/Dockerfile | 4 ++-- provided/build/Dockerfile | 4 ++-- python3.6/build/Dockerfile | 4 ++-- python3.7/build/Dockerfile | 4 ++-- python3.8/build/Dockerfile | 4 ++-- ruby2.5/build/Dockerfile | 4 ++-- ruby2.7/build/Dockerfile | 4 ++-- 19 files changed, 38 insertions(+), 38 deletions(-) diff --git a/dotnetcore2.0/build/Dockerfile b/dotnetcore2.0/build/Dockerfile index 21140dda..01474732 100644 --- a/dotnetcore2.0/build/Dockerfile +++ b/dotnetcore2.0/build/Dockerfile @@ -29,7 +29,7 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 CMD ["dotnet", "build"] diff --git a/dotnetcore2.1/build/Dockerfile b/dotnetcore2.1/build/Dockerfile index 2b314be4..b9aceba7 100644 --- a/dotnetcore2.1/build/Dockerfile +++ b/dotnetcore2.1/build/Dockerfile @@ -30,8 +30,8 @@ RUN source /usr/local/pipx/shared/bin/activate && \ pipx install virtualenv && \ pipx install pipenv && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 && \ + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 3.3.1 CMD ["dotnet", "build"] diff --git a/dotnetcore3.1/build/Dockerfile b/dotnetcore3.1/build/Dockerfile index 18e114ac..5952e362 100644 --- a/dotnetcore3.1/build/Dockerfile +++ b/dotnetcore3.1/build/Dockerfile @@ -25,8 +25,8 @@ RUN curl -L https://dot.net/v1/dotnet-install.sh | bash -s -- -v $DOTNET_SDK_VER # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 && \ + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 && \ dotnet tool install --global Amazon.Lambda.Tools --version 4.0.0 CMD ["dotnet", "build"] diff --git a/go1.x/build/Dockerfile b/go1.x/build/Dockerfile index 7aa4e18b..87ffda03 100644 --- a/go1.x/build/Dockerfile +++ b/go1.x/build/Dockerfile @@ -23,7 +23,7 @@ RUN curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.t # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 CMD ["dep", "ensure"] diff --git a/java11/build/Dockerfile b/java11/build/Dockerfile index 3b54f0a4..6b2f3c90 100644 --- a/java11/build/Dockerfile +++ b/java11/build/Dockerfile @@ -19,5 +19,5 @@ ENV PATH="/usr/local/gradle/gradle-6.8.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/java8.al2/build/Dockerfile b/java8.al2/build/Dockerfile index 959d5832..0edeb604 100644 --- a/java8.al2/build/Dockerfile +++ b/java8.al2/build/Dockerfile @@ -22,5 +22,5 @@ ENV PATH="/usr/local/gradle/gradle-6.8.1/bin:/usr/local/maven/apache-maven-3.6.3 # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/java8/build/Dockerfile b/java8/build/Dockerfile index 83c9e60d..25e65cd4 100644 --- a/java8/build/Dockerfile +++ b/java8/build/Dockerfile @@ -22,5 +22,5 @@ ENV PATH="/usr/local/gradle/gradle-6.8.1/bin:/usr/local/maven/apache-maven-3.6.3 # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/nodejs10.x/build/Dockerfile b/nodejs10.x/build/Dockerfile index 31a81f5f..4b7bb8ff 100644 --- a/nodejs10.x/build/Dockerfile +++ b/nodejs10.x/build/Dockerfile @@ -13,5 +13,5 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/nodejs12.x/build/Dockerfile b/nodejs12.x/build/Dockerfile index fcef1c7b..98833ba5 100644 --- a/nodejs12.x/build/Dockerfile +++ b/nodejs12.x/build/Dockerfile @@ -13,5 +13,5 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/nodejs4.3/build/Dockerfile b/nodejs4.3/build/Dockerfile index 8d1c7e8f..c971ca69 100644 --- a/nodejs4.3/build/Dockerfile +++ b/nodejs4.3/build/Dockerfile @@ -16,7 +16,7 @@ COPY --from=0 /var/rapid /var/rapid # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 CMD ["npm", "rebuild"] diff --git a/nodejs6.10/build/Dockerfile b/nodejs6.10/build/Dockerfile index fbfba52a..a544d6f7 100644 --- a/nodejs6.10/build/Dockerfile +++ b/nodejs6.10/build/Dockerfile @@ -16,7 +16,7 @@ COPY --from=0 /var/rapid /var/rapid # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 CMD ["npm", "rebuild"] diff --git a/nodejs8.10/build/Dockerfile b/nodejs8.10/build/Dockerfile index 2191f84e..f87e8a22 100644 --- a/nodejs8.10/build/Dockerfile +++ b/nodejs8.10/build/Dockerfile @@ -16,7 +16,7 @@ COPY --from=0 /var/rapid /var/rapid # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 CMD ["npm", "rebuild"] diff --git a/provided.al2/build/Dockerfile b/provided.al2/build/Dockerfile index aa77a92c..214706da 100644 --- a/provided.al2/build/Dockerfile +++ b/provided.al2/build/Dockerfile @@ -8,5 +8,5 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/provided/build/Dockerfile b/provided/build/Dockerfile index 2c3d392a..47474a12 100644 --- a/provided/build/Dockerfile +++ b/provided/build/Dockerfile @@ -10,5 +10,5 @@ COPY --from=0 /var/rapid /var/rapid # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/python3.6/build/Dockerfile b/python3.6/build/Dockerfile index 439a1c7d..3da42ff5 100644 --- a/python3.6/build/Dockerfile +++ b/python3.6/build/Dockerfile @@ -29,5 +29,5 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install pipenv && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/python3.7/build/Dockerfile b/python3.7/build/Dockerfile index 086e0f6a..98b20835 100644 --- a/python3.7/build/Dockerfile +++ b/python3.7/build/Dockerfile @@ -20,5 +20,5 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install pipenv && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/python3.8/build/Dockerfile b/python3.8/build/Dockerfile index 1049db2b..ecf9ab00 100644 --- a/python3.8/build/Dockerfile +++ b/python3.8/build/Dockerfile @@ -20,5 +20,5 @@ RUN pip install -U pip setuptools wheel --no-cache-dir && \ pipx install pipenv && \ pipx install poetry==1.1.4 && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 diff --git a/ruby2.5/build/Dockerfile b/ruby2.5/build/Dockerfile index 8d783f04..439b202b 100644 --- a/ruby2.5/build/Dockerfile +++ b/ruby2.5/build/Dockerfile @@ -18,7 +18,7 @@ COPY --from=0 /var/rapid /var/rapid # The pipx workaround is due to https://github.com/pipxproject/pipx/issues/218 RUN source /usr/local/pipx/shared/bin/activate && \ pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 && \ + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' diff --git a/ruby2.7/build/Dockerfile b/ruby2.7/build/Dockerfile index fd43b68d..c0fbeef3 100644 --- a/ruby2.7/build/Dockerfile +++ b/ruby2.7/build/Dockerfile @@ -16,7 +16,7 @@ COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently RUN pipx install awscli==1.* && \ - pipx install aws-lambda-builders==1.1.0 && \ - pipx install aws-sam-cli==1.11.0 && \ + pipx install aws-lambda-builders==1.2.0 && \ + pipx install aws-sam-cli==1.15.0 && \ gem update --system --no-document && \ gem install --no-document bundler -v '~> 2.1' From 6c8ddcf78a1d90dd2f26e544885dcbfad9dd0a32 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 09:40:35 -0500 Subject: [PATCH 229/234] Bump base packages --- base/Dockerfile | 2 +- base/base-2/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/base/Dockerfile b/base/Dockerfile index 6d447adc..c3623a79 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -33,7 +33,7 @@ ENV PATH=/usr/local/bin:/usr/bin/:/bin:/opt/bin \ # pam has problems reinstalling from a non-standard installroot, # so reinstall everything except filesystem here RUN yum reinstall -y setup-2.8.14-20.12.amzn1 audit-libs-2.6.5-3.28.amzn1 shadow-utils-4.1.4.2-13.10.amzn1 \ - openssl-1.0.2k-16.151.amzn1 glibc-2.17-292.180.amzn1 glibc-common-2.17-292.180.amzn1 pam-1.1.8-12.33.amzn1 && \ + openssl-1.0.2k-16.152.amzn1 glibc-2.17-292.180.amzn1 glibc-common-2.17-292.180.amzn1 pam-1.1.8-12.33.amzn1 && \ yum clean all && \ chown sbx_user1051:495 /tmp && \ chmod 700 /tmp diff --git a/base/base-2/Dockerfile b/base/base-2/Dockerfile index 42ca14d7..6f41cc31 100644 --- a/base/base-2/Dockerfile +++ b/base/base-2/Dockerfile @@ -6,7 +6,7 @@ FROM amazonlinux:2 ADD ./base-2.tgz /opt/ RUN yum --installroot=/opt reinstall -y filesystem-3.2-25.amzn2.0.4 \ - setup-2.8.71-10.amzn2.0.1 glibc-2.26-37.amzn2 glibc-common-2.26-38.amzn2 && \ + setup-2.8.71-10.amzn2.0.1 glibc-2.26-39.amzn2 glibc-common-2.26-39.amzn2 && \ yum --installroot=/opt clean all FROM scratch From 39e8d0d57fa2cdce5d955e41e7e979e8ac24c142 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 09:59:51 -0500 Subject: [PATCH 230/234] Ensure we only use a 2.7-compatible pip for python2.7 --- python2.7/build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python2.7/build/Dockerfile b/python2.7/build/Dockerfile index 826024bd..520142fd 100644 --- a/python2.7/build/Dockerfile +++ b/python2.7/build/Dockerfile @@ -9,7 +9,7 @@ COPY --from=0 /var/lang /var/lang COPY --from=0 /var/rapid /var/rapid # Add these as a separate layer as they get updated frequently -RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python && \ +RUN curl --silent --show-error --retry 5 https://bootstrap.pypa.io/2.7/get-pip.py | python && \ pip install -U 'virtualenv>=16.0.0,<20.0.0' pipenv wheel --no-cache-dir && \ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/1.1.4/get-poetry.py | POETRY_VERSION=1.1.4 python && \ pip install -U awscli boto3 aws-sam-cli==0.22.0 aws-lambda-builders==0.4.0 --no-cache-dir From 34dc45175525d8f11d150998883fce4fd47ed33b Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 15:59:22 -0500 Subject: [PATCH 231/234] Cleanup unnecessary go code --- provided/run/init.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index 6b9339c2..f594f297 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -43,10 +43,10 @@ var watchMode = os.Getenv("DOCKER_LAMBDA_WATCH") != "" var curState = "STATE_INIT" var transitions = map[string]map[string]bool{ - "STATE_INIT_ERROR": map[string]bool{"STATE_INIT": true}, - "STATE_INVOKE_NEXT": map[string]bool{"STATE_INIT": true, "STATE_INVOKE_NEXT": true, "STATE_INVOKE_RESPONSE": true, "STATE_INVOKE_ERROR": true}, - "STATE_INVOKE_RESPONSE": map[string]bool{"STATE_INVOKE_NEXT": true}, - "STATE_INVOKE_ERROR": map[string]bool{"STATE_INVOKE_NEXT": true}, + "STATE_INIT_ERROR": {"STATE_INIT": true}, + "STATE_INVOKE_NEXT": {"STATE_INIT": true, "STATE_INVOKE_NEXT": true, "STATE_INVOKE_RESPONSE": true, "STATE_INVOKE_ERROR": true}, + "STATE_INVOKE_RESPONSE": {"STATE_INVOKE_NEXT": true}, + "STATE_INVOKE_ERROR": {"STATE_INVOKE_NEXT": true}, } var acceptedResponse = &statusResponse{Status: "OK", HTTPStatusCode: 202} From a71b6d72ab9d3b5aed0d1f81cccd6f7859196df1 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 29 Jan 2021 15:59:37 -0500 Subject: [PATCH 232/234] Remove unused dotnet code --- dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs | 5 ----- dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs | 5 ----- 2 files changed, 10 deletions(-) diff --git a/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs b/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs index 1a3d6797..76d64ca8 100644 --- a/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs +++ b/dotnetcore2.0/run/MockBootstraps/MockLambdaContext.cs @@ -42,9 +42,6 @@ public TimeSpan RemainingTime() return StartTime + TimeSpan.FromSeconds(Timeout) - DateTime.Now; } - public long Duration => (long)(DateTime.Now - StartTime).TotalMilliseconds; - public long BilledDuration => (long)(Math.Ceiling((DateTime.Now - StartTime).TotalMilliseconds / 100)) * 100; - public long DeadlineMs { set @@ -64,8 +61,6 @@ public string Body } } - public long MemoryUsed => Process.GetCurrentProcess().WorkingSet64; - public Stream InputStream { get; set; } public string RequestId { get; set; } diff --git a/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs b/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs index 1a3d6797..76d64ca8 100644 --- a/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs +++ b/dotnetcore2.1/run/MockBootstraps/MockLambdaContext.cs @@ -42,9 +42,6 @@ public TimeSpan RemainingTime() return StartTime + TimeSpan.FromSeconds(Timeout) - DateTime.Now; } - public long Duration => (long)(DateTime.Now - StartTime).TotalMilliseconds; - public long BilledDuration => (long)(Math.Ceiling((DateTime.Now - StartTime).TotalMilliseconds / 100)) * 100; - public long DeadlineMs { set @@ -64,8 +61,6 @@ public string Body } } - public long MemoryUsed => Process.GetCurrentProcess().WorkingSet64; - public Stream InputStream { get; set; } public string RequestId { get; set; } From eca75c1c0d096955eb3f400e85703889dff4f4c9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Mon, 16 Jan 2023 08:08:44 +1100 Subject: [PATCH 233/234] Add deprecation note --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index bb211d1f..9de871c9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ +# Deprecated + +NB: these images are deprecated in favor of AWS' official Lambda Runtime Interface Emulator, which you can find at: + +https://github.com/aws/aws-lambda-runtime-interface-emulator + +This project is now archived and will not receive any further updates. + # docker-lambda A sandboxed local environment that replicates the live [AWS Lambda](https://aws.amazon.com/lambda/) From de9a2bf5b73f6330fff10e0203f94b9f6f784ab6 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 15 Jan 2023 16:14:40 -0500 Subject: [PATCH 234/234] Use different AWS repo (#368) --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9de871c9..136a5ff2 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,12 @@ # Deprecated -NB: these images are deprecated in favor of AWS' official Lambda Runtime Interface Emulator, which you can find at: +NB: these images are deprecated in favor of AWS' official images, which you can find at: -https://github.com/aws/aws-lambda-runtime-interface-emulator +https://github.com/aws/aws-lambda-base-images + +And browse on the ECR public gallery, eg: + +https://gallery.ecr.aws/lambda/python This project is now archived and will not receive any further updates.
  • (am$cT5@D3l6R&ratNv%LppFTM+WuU4Ib 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 z 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 HAHDv61pJLx diff --git a/examples/terminal3.png b/examples/terminal3.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf9e6eae268844944fdd0276791ee6e02619778 GIT binary patch literal 648629 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

    (am$cT5@D3l6R&ratNv%LppFTM+WuU4Ib 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 z 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 HAHDv61pJLx literal 0 HcmV?d00001 From 6d32ccdc44add3fa4fbb2c710ae3d308d9434217 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 22 Nov 2019 14:35:11 -0500 Subject: [PATCH 069/234] Add link for stay-open mode --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 80d1c44f..14302450 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,8 @@ the [AWS CLI](https://aws.amazon.com/cli/). ### Running Lambda functions You can run your Lambdas from local directories using the `-v` arg with -`docker run`. You can run them in two modes: as a single execution, or as an API server that listens for invoke events. +`docker run`. You can run them in two modes: as a single execution, or as +[an API server that listens for invoke events](#running-in-stay-open-api-mode). The default is single execution mode, which outputs all logging to stderr and the result of the handler to stdout. You mount your (unzipped) lambda code at `/var/task` and any (unzipped) layer From 67f1bbec3eb3b4c98430e1b57f871b20c0f53a5d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Fri, 22 Nov 2019 18:29:51 -0500 Subject: [PATCH 070/234] Add cause to lambdaError Fixes #227 --- provided/run/init.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index d5749f44..b75e27a9 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -698,9 +698,10 @@ func (e *exitError) Error() string { } type lambdaError struct { - Type string `json:"errorType,omitempty"` - Message string `json:"errorMessage"` - StackTrace []*string `json:"stackTrace,omitempty"` + Type string `json:"errorType,omitempty"` + Message string `json:"errorMessage"` + StackTrace []*string `json:"stackTrace,omitempty"` + Cause *lambdaError `json:"cause,omitempty"` } type mockLambdaContext struct { From 638fe6689234a8fccc9962732cb650f99cd069db Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 23 Nov 2019 09:46:34 -0500 Subject: [PATCH 071/234] Add documentation for developing in stay-open mode --- README.md | 31 +++++++++++++++++++++++++++++++ nodejs4.3/run/awslambda-mock.js | 1 + nodejs6.10/run/awslambda-mock.js | 1 + nodejs8.10/run/awslambda-mock.js | 1 + python2.7/run/runtime_mock.py | 1 + python3.6/run/runtime_mock.py | 1 + 6 files changed, 36 insertions(+) diff --git a/README.md b/README.md index 14302450..60648b54 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,37 @@ If you want to change the exposed port, eg run on port 3000 on the host, use `-p You can change the internal API port from `9001` by passing `-e DOCKER_LAMBDA_API_PORT=` (it's unlikely that you'll need to do this). +#### Developing in "stay-open" mode + +While you're developing, you'll want the server to restart every time you make a change to your Lambda. +You can automate this with a file-watching utility like [entr](https://github.com/eradman/entr) or [nodemon](https://nodemon.io/): + +```sh +# you can `brew install entr` on macOS +find . | entr -r docker run --rm \ + -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ + -v "$PWD":/var/task:ro,delegated \ + lambci/lambda:go1.x handler +``` + +Or + +```sh +# npm install -g nodemon +nodemon -w ./ -e '' -s SIGINT -x docker -- run --rm \ + -e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \ + -v "$PWD":/var/task:ro,delegated \ + lambci/lambda:go1.x handler +``` + +Both commands above assume your handler is in the current directory, and the container +will restart whenever there are changes to any files in it or its subdirectories. + +Some other file-watching utilities include +[fswatch](https://github.com/emcrisostomo/fswatch), +[watchman](https://facebook.github.io/watchman/) and +[watchdog](https://github.com/gorakhargosh/watchdog#shell-utilities) (Python) + ### Building Lambda functions The build images have a [number of extra system packages installed](#build-environment) diff --git a/nodejs4.3/run/awslambda-mock.js b/nodejs4.3/run/awslambda-mock.js index 901e1f94..c77a6096 100644 --- a/nodejs4.3/run/awslambda-mock.js +++ b/nodejs4.3/run/awslambda-mock.js @@ -33,6 +33,7 @@ var COGNITO_IDENTITY_POOL_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_pool_ var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) process.on('SIGINT', () => process.exit(0)) +process.on('SIGTERM', () => process.exit(0)) // Don't think this can be done in the Docker image process.umask(2) diff --git a/nodejs6.10/run/awslambda-mock.js b/nodejs6.10/run/awslambda-mock.js index 901e1f94..c77a6096 100644 --- a/nodejs6.10/run/awslambda-mock.js +++ b/nodejs6.10/run/awslambda-mock.js @@ -33,6 +33,7 @@ var COGNITO_IDENTITY_POOL_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_pool_ var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) process.on('SIGINT', () => process.exit(0)) +process.on('SIGTERM', () => process.exit(0)) // Don't think this can be done in the Docker image process.umask(2) diff --git a/nodejs8.10/run/awslambda-mock.js b/nodejs8.10/run/awslambda-mock.js index 901e1f94..c77a6096 100644 --- a/nodejs8.10/run/awslambda-mock.js +++ b/nodejs8.10/run/awslambda-mock.js @@ -33,6 +33,7 @@ var COGNITO_IDENTITY_POOL_ID = (tryParse(COGNITO_IDENTITY) || {}).identity_pool_ var DEADLINE_MS = Date.now() + (TIMEOUT * 1000) process.on('SIGINT', () => process.exit(0)) +process.on('SIGTERM', () => process.exit(0)) // Don't think this can be done in the Docker image process.umask(2) diff --git a/python2.7/run/runtime_mock.py b/python2.7/run/runtime_mock.py index 539ec980..b2aeccf3 100644 --- a/python2.7/run/runtime_mock.py +++ b/python2.7/run/runtime_mock.py @@ -21,6 +21,7 @@ signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) +signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) ORIG_STDOUT = sys.stdout ORIG_STDERR = sys.stderr diff --git a/python3.6/run/runtime_mock.py b/python3.6/run/runtime_mock.py index 539ec980..b2aeccf3 100644 --- a/python3.6/run/runtime_mock.py +++ b/python3.6/run/runtime_mock.py @@ -21,6 +21,7 @@ signal.signal(signal.SIGINT, lambda x, y: sys.exit(0)) +signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) ORIG_STDOUT = sys.stdout ORIG_STDERR = sys.stderr From 5368ec118c4a29f031fe4ca2c112ea98a9b06817 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 23 Nov 2019 17:36:05 -0500 Subject: [PATCH 072/234] =?UTF-8?q?Replace=20\r=20in=20logging=20with=20\n?= =?UTF-8?q?=20=E2=80=93=C2=A0unless=20DOCKER=5FLAMBDA=5FNO=5FMODIFY=5FLOGS?= =?UTF-8?q?=20is=20set?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- provided/run/init.go | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/provided/run/init.go b/provided/run/init.go index b75e27a9..4526d235 100644 --- a/provided/run/init.go +++ b/provided/run/init.go @@ -31,6 +31,11 @@ import ( ) var logDebug = os.Getenv("DOCKER_LAMBDA_DEBUG") != "" +var stayOpen = os.Getenv("DOCKER_LAMBDA_STAY_OPEN") != "" +var noBootstrap = os.Getenv("DOCKER_LAMBDA_NO_BOOTSTRAP") != "" +var apiPort = getEnv("DOCKER_LAMBDA_API_PORT", "9001") +var useStdin = os.Getenv("DOCKER_LAMBDA_USE_STDIN") != "" +var noModifyLogs = os.Getenv("DOCKER_LAMBDA_NO_MODIFY_LOGS") != "" var curState = "STATE_INIT" @@ -47,10 +52,7 @@ var curContext *mockLambdaContext var bootstrapCmd *exec.Cmd var initPrinted bool var eventChan chan *mockLambdaContext -var stayOpen bool -var apiPort string var exited bool -var noBootstrap bool var bootstrapIsRunning bool var bootstrapPath *string var bootstrapArgs []string @@ -95,10 +97,6 @@ func main() { eventChan = make(chan *mockLambdaContext) - stayOpen = os.Getenv("DOCKER_LAMBDA_STAY_OPEN") != "" - noBootstrap = os.Getenv("DOCKER_LAMBDA_NO_BOOTSTRAP") != "" - apiPort = getEnv("DOCKER_LAMBDA_API_PORT", "9001") - bootstrapPath = flag.String("bootstrap", "/var/runtime/bootstrap", "path to bootstrap") bootstrapArgsString := flag.String("bootstrap-args", "[]", "additional arguments passed to bootstrap, as a stringified JSON Array") flag.Bool("enable-msg-logs", false, "enable message logs") @@ -125,7 +123,7 @@ func main() { } else { eventBody = []byte(os.Getenv("AWS_LAMBDA_EVENT_BODY")) if len(eventBody) == 0 { - if os.Getenv("DOCKER_LAMBDA_USE_STDIN") != "" { + if useStdin { eventBody, _ = ioutil.ReadAll(os.Stdin) } else { eventBody = []byte("{}") @@ -253,6 +251,11 @@ func ensureBootstrapIsRunning(context *mockLambdaContext) error { bootstrapCmd.Stdout = os.Stderr bootstrapCmd.Stderr = os.Stderr } + if !noModifyLogs { + bootstrapCmd.Stdout = &replaceWriter{writer: bootstrapCmd.Stdout, old: []byte("\r"), new: []byte("\n")} + bootstrapCmd.Stderr = &replaceWriter{writer: bootstrapCmd.Stderr, old: []byte("\r"), new: []byte("\n")} + } + bootstrapCmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} if err := bootstrapCmd.Start(); err != nil { @@ -900,3 +903,13 @@ type invokeResponse struct { Payload []byte Error *lambdaError } + +type replaceWriter struct { + writer io.Writer + old []byte + new []byte +} + +func (r *replaceWriter) Write(p []byte) (n int, err error) { + return r.writer.Write(bytes.ReplaceAll(p, r.old, r.new)) +} From 31c20295dd5b219defac014588d60894a71a8e0d Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sat, 23 Nov 2019 17:39:02 -0500 Subject: [PATCH 073/234] Add DOCKER_LAMBDA_NO_MODIFY_LOGS to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 60648b54..5a2294cb 100644 --- a/README.md +++ b/README.md @@ -344,6 +344,7 @@ Administrative keys for lambci/lambda:provided - `DOCKER_LAMBDA_STAY_OPEN` - `DOCKER_LAMBDA_API_PORT` - `DOCKER_LAMBDA_DEBUG` + - `DOCKER_LAMBDA_NO_MODIFY_LOGS` ## Build environment From bfcf4008790238d0ec6b095cb3a2cc725fa3fdb9 Mon Sep 17 00:00:00 2001 From: Michael Hart Date: Sun, 24 Nov 2019 16:11:23 -0500 Subject: [PATCH 074/234] Update README screenshot --- README.md | 2 +- examples/terminal2.png | Bin 629156 -> 0 bytes examples/terminal3.png | Bin 0 -> 648629 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 examples/terminal2.png create mode 100644 examples/terminal3.png diff --git a/README.md b/README.md index 5a2294cb..40516d57 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ environment almost identically – including installed software and libraries, file structure and permissions, environment variables, context objects and behaviors – even the user and running process are the same. -Example usage with java11 runtime +Example usage with java11 runtime You can use it for [running your functions](#run-examples) in the same strict Lambda environment, knowing that they'll exhibit the same behavior when deployed live. You can diff --git a/examples/terminal2.png b/examples/terminal2.png deleted file mode 100644 index 055b0913b96023db1c23759c747b7c2986653137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629156 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