From 1f999723932ffa17ca3e0d2350cde4ff3a935f77 Mon Sep 17 00:00:00 2001 From: Alexander Yu Date: Mon, 12 Sep 2022 13:40:43 -0700 Subject: [PATCH] Delete blank-java and move its contents to java-events. - The blank-java example is just a Lambda function that handles SQSEvent objects. - Moved this example to inside the java-events folder. - The Lambda developer guide now must remove all references to blank-java. - Tested this change using the sqs path, as well as ensured current examples still work. --- sample-apps/.gitignore | 2 +- sample-apps/blank-java/1-create-bucket.sh | 5 - sample-apps/blank-java/2-build-layer.sh | 4 - sample-apps/blank-java/3-deploy.sh | 16 --- sample-apps/blank-java/4-invoke.sh | 10 -- sample-apps/blank-java/5-cleanup.sh | 38 ----- sample-apps/blank-java/README.md | 96 ------------- sample-apps/blank-java/build.gradle | 60 -------- sample-apps/blank-java/event.json | 20 --- .../images/blank-java-application.png | Bin 41120 -> 0 bytes .../images/blank-java-servicemap.png | Bin 20056 -> 0 bytes .../blank-java/images/blank-java-trace.png | Bin 29867 -> 0 bytes .../blank-java/images/sample-blank-java.png | Bin 49708 -> 0 bytes sample-apps/blank-java/pom.xml | 136 ------------------ .../src/main/java/example/Handler.java | 65 --------- .../blank-java/src/main/resources/log4j2.xml | 16 --- .../src/test/java/example/InvokeTest.java | 71 --------- .../java/example/SQSEventDeserializer.java | 42 ------ .../src/test/java/example/TestContext.java | 45 ------ .../src/test/java/example/TestLogger.java | 15 -- .../blank-java/src/test/resources/event.json | 20 --- .../blank-java/src/test/resources/log4j2.xml | 14 -- sample-apps/blank-java/template-mvn.yml | 20 --- sample-apps/blank-java/template.yml | 30 ---- sample-apps/java-events/3-invoke.sh | 3 + sample-apps/java-events/README.md | 2 + sample-apps/java-events/build.gradle | 2 +- .../java-events/events/sqs-record.json | 21 +++ sample-apps/java-events/pom.xml | 2 +- .../src/main/java/example/HandlerSQS.java | 35 +++++ 30 files changed, 64 insertions(+), 726 deletions(-) delete mode 100755 sample-apps/blank-java/1-create-bucket.sh delete mode 100755 sample-apps/blank-java/2-build-layer.sh delete mode 100755 sample-apps/blank-java/3-deploy.sh delete mode 100755 sample-apps/blank-java/4-invoke.sh delete mode 100755 sample-apps/blank-java/5-cleanup.sh delete mode 100644 sample-apps/blank-java/README.md delete mode 100644 sample-apps/blank-java/build.gradle delete mode 100644 sample-apps/blank-java/event.json delete mode 100644 sample-apps/blank-java/images/blank-java-application.png delete mode 100644 sample-apps/blank-java/images/blank-java-servicemap.png delete mode 100644 sample-apps/blank-java/images/blank-java-trace.png delete mode 100644 sample-apps/blank-java/images/sample-blank-java.png delete mode 100644 sample-apps/blank-java/pom.xml delete mode 100644 sample-apps/blank-java/src/main/java/example/Handler.java delete mode 100644 sample-apps/blank-java/src/main/resources/log4j2.xml delete mode 100644 sample-apps/blank-java/src/test/java/example/InvokeTest.java delete mode 100644 sample-apps/blank-java/src/test/java/example/SQSEventDeserializer.java delete mode 100644 sample-apps/blank-java/src/test/java/example/TestContext.java delete mode 100644 sample-apps/blank-java/src/test/java/example/TestLogger.java delete mode 100644 sample-apps/blank-java/src/test/resources/event.json delete mode 100644 sample-apps/blank-java/src/test/resources/log4j2.xml delete mode 100644 sample-apps/blank-java/template-mvn.yml delete mode 100644 sample-apps/blank-java/template.yml create mode 100644 sample-apps/java-events/events/sqs-record.json create mode 100644 sample-apps/java-events/src/main/java/example/HandlerSQS.java diff --git a/sample-apps/.gitignore b/sample-apps/.gitignore index 6599623c..61f810ce 100644 --- a/sample-apps/.gitignore +++ b/sample-apps/.gitignore @@ -11,8 +11,8 @@ build *.zip bin obj -main Gemfile.lock lib __pycache__ *.pyc +.DS_Store diff --git a/sample-apps/blank-java/1-create-bucket.sh b/sample-apps/blank-java/1-create-bucket.sh deleted file mode 100755 index 64a5f749..00000000 --- a/sample-apps/blank-java/1-create-bucket.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -BUCKET_ID=$(dd if=/dev/random bs=8 count=1 2>/dev/null | od -An -tx1 | tr -d ' \t\n') -BUCKET_NAME=lambda-artifacts-$BUCKET_ID -echo $BUCKET_NAME > bucket-name.txt -aws s3 mb s3://$BUCKET_NAME diff --git a/sample-apps/blank-java/2-build-layer.sh b/sample-apps/blank-java/2-build-layer.sh deleted file mode 100755 index 9a1dd8cd..00000000 --- a/sample-apps/blank-java/2-build-layer.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -set -eo pipefail -gradle -q packageLibs -mv build/distributions/blank-java.zip build/blank-java-lib.zip \ No newline at end of file diff --git a/sample-apps/blank-java/3-deploy.sh b/sample-apps/blank-java/3-deploy.sh deleted file mode 100755 index 6949f21c..00000000 --- a/sample-apps/blank-java/3-deploy.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -set -eo pipefail -ARTIFACT_BUCKET=$(cat bucket-name.txt) -TEMPLATE=template.yml -if [ $1 ] -then - if [ $1 = mvn ] - then - TEMPLATE=template-mvn.yml - mvn package - fi -else - gradle build -i -fi -aws cloudformation package --template-file $TEMPLATE --s3-bucket $ARTIFACT_BUCKET --output-template-file out.yml -aws cloudformation deploy --template-file out.yml --stack-name blank-java --capabilities CAPABILITY_NAMED_IAM diff --git a/sample-apps/blank-java/4-invoke.sh b/sample-apps/blank-java/4-invoke.sh deleted file mode 100755 index 2186f191..00000000 --- a/sample-apps/blank-java/4-invoke.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -set -eo pipefail -FUNCTION=$(aws cloudformation describe-stack-resource --stack-name blank-java --logical-resource-id function --query 'StackResourceDetail.PhysicalResourceId' --output text) - -while true; do - aws lambda invoke --function-name $FUNCTION --payload file://event.json out.json - cat out.json - echo "" - sleep 2 -done diff --git a/sample-apps/blank-java/5-cleanup.sh b/sample-apps/blank-java/5-cleanup.sh deleted file mode 100755 index e79a2438..00000000 --- a/sample-apps/blank-java/5-cleanup.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -set -eo pipefail -STACK=blank-java -if [[ $# -eq 1 ]] ; then - STACK=$1 - echo "Deleting stack $STACK" -fi -FUNCTION=$(aws cloudformation describe-stack-resource --stack-name $STACK --logical-resource-id function --query 'StackResourceDetail.PhysicalResourceId' --output text) -aws cloudformation delete-stack --stack-name $STACK -echo "Deleted $STACK stack." - -if [ -f bucket-name.txt ]; then - ARTIFACT_BUCKET=$(cat bucket-name.txt) - if [[ ! $ARTIFACT_BUCKET =~ lambda-artifacts-[a-z0-9]{16} ]] ; then - echo "Bucket was not created by this application. Skipping." - else - while true; do - read -p "Delete deployment artifacts and bucket ($ARTIFACT_BUCKET)? (y/n)" response - case $response in - [Yy]* ) aws s3 rb --force s3://$ARTIFACT_BUCKET; rm bucket-name.txt; break;; - [Nn]* ) break;; - * ) echo "Response must start with y or n.";; - esac - done - fi -fi - -while true; do - read -p "Delete function log group (/aws/lambda/$FUNCTION)? (y/n)" response - case $response in - [Yy]* ) aws logs delete-log-group --log-group-name /aws/lambda/$FUNCTION; break;; - [Nn]* ) break;; - * ) echo "Response must start with y or n.";; - esac -done - -rm -f out.yml out.json -rm -rf build .gradle target diff --git a/sample-apps/blank-java/README.md b/sample-apps/blank-java/README.md deleted file mode 100644 index c5d8130d..00000000 --- a/sample-apps/blank-java/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# Blank function (Java) - -![Architecture](/sample-apps/blank-java/images/sample-blank-java.png) - -The project source includes function code and supporting resources: - -- `src/main` - A Java function. -- `src/test` - A unit test and helper classes. -- `template.yml` - An AWS CloudFormation template that creates an application. -- `build.gradle` - A Gradle build file. -- `pom.xml` - A Maven build file. -- `1-create-bucket.sh`, `2-build-layer.sh`, etc. - Shell scripts that use the AWS CLI to deploy and manage the application. - -Use the following instructions to deploy the sample application. - -# Requirements -- [Java 8 runtime environment (SE JRE)](https://www.oracle.com/java/technologies/javase-downloads.html) -- [Gradle 5](https://gradle.org/releases/) or [Maven 3](https://maven.apache.org/docs/history.html) -- The Bash shell. For Linux and macOS, this is included by default. In Windows 10, you can install the [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to get a Windows-integrated version of Ubuntu and Bash. -- [The AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) v1.17 or newer. - -If you use the AWS CLI v2, add the following to your [configuration file](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) (`~/.aws/config`): - -``` -cli_binary_format=raw-in-base64-out -``` - -This setting enables the AWS CLI v2 to load JSON events from a file, matching the v1 behavior. - -# Setup -Download or clone this repository. - - $ git clone https://github.com/awsdocs/aws-lambda-developer-guide.git - $ cd aws-lambda-developer-guide/sample-apps/blank-java - -To create a new bucket for deployment artifacts, run `1-create-bucket.sh`. - - blank-java$ ./1-create-bucket.sh - make_bucket: lambda-artifacts-a5e491dbb5b22e0d - -To build a Lambda layer that contains the function's runtime dependencies, run `2-build-layer.sh`. Packaging dependencies in a layer reduces the size of the deployment package that you upload when you modify your code. - - blank-java$ ./2-build-layer.sh - -# Deploy - -To deploy the application, run `3-deploy.sh`. - - blank-java$ ./3-deploy.sh - BUILD SUCCESSFUL in 1s - Successfully packaged artifacts and wrote output template to file out.yml. - Waiting for changeset to be created.. - Successfully created/updated stack - blank-java - -This script uses AWS CloudFormation to deploy the Lambda functions and an IAM role. If the AWS CloudFormation stack that contains the resources already exists, the script updates it with any changes to the template or function code. - -You can also build the application with Maven. To use maven, add `mvn` to the command. - - java-basic$ ./3-deploy.sh mvn - [INFO] Scanning for projects... - [INFO] -----------------------< com.example:blank-java >----------------------- - [INFO] Building blank-java-function 1.0-SNAPSHOT - [INFO] --------------------------------[ jar ]--------------------------------- - ... - -# Test -To invoke the function, run `4-invoke.sh`. - - blank-java$ ./4-invoke.sh - { - "StatusCode": 200, - "ExecutedVersion": "$LATEST" - } - -Let the script invoke the function a few times and then press `CRTL+C` to exit. - -The application uses AWS X-Ray to trace requests. Open the [X-Ray console](https://console.aws.amazon.com/xray/home#/service-map) to view the service map. - -![Service Map](/sample-apps/blank-java/images/blank-java-servicemap.png) - -Choose a node in the main function graph. Then choose **View traces** to see a list of traces. Choose any trace to view a timeline that breaks down the work done by the function. - -![Trace](/sample-apps/blank-java/images/blank-java-trace.png) - -Finally, view the application in the Lambda console. - -*To view the application* -1. Open the [applications page](https://console.aws.amazon.com/lambda/home#/applications) in the Lambda console. -2. Choose **blank-java**. - - ![Application](/sample-apps/blank-java/images/blank-java-application.png) - -# Cleanup -To delete the application, run `5-cleanup.sh`. - - blank$ ./5-cleanup.sh diff --git a/sample-apps/blank-java/build.gradle b/sample-apps/blank-java/build.gradle deleted file mode 100644 index 0c2e47ef..00000000 --- a/sample-apps/blank-java/build.gradle +++ /dev/null @@ -1,60 +0,0 @@ -plugins { - id 'java' -} - -repositories { - mavenCentral() -} - -dependencies { - implementation platform('software.amazon.awssdk:bom:2.10.73') - implementation platform('com.amazonaws:aws-xray-recorder-sdk-bom:2.4.0') - implementation 'software.amazon.awssdk:lambda' - implementation 'com.amazonaws:aws-xray-recorder-sdk-core' - implementation 'com.amazonaws:aws-xray-recorder-sdk-aws-sdk-core' - implementation 'com.amazonaws:aws-xray-recorder-sdk-aws-sdk-v2' - implementation 'com.amazonaws:aws-xray-recorder-sdk-aws-sdk-v2-instrumentor' - implementation 'com.amazonaws:aws-lambda-java-core:1.2.1' - implementation 'com.amazonaws:aws-lambda-java-events:2.2.9' - implementation 'com.google.code.gson:gson:2.8.6' - implementation 'org.apache.logging.log4j:log4j-api:[2.17.1,)' - implementation 'org.apache.logging.log4j:log4j-core:[2.17.1,)' - runtimeOnly 'org.apache.logging.log4j:log4j-slf4j18-impl:[2.17.1,)' - runtimeOnly 'com.amazonaws:aws-lambda-java-log4j2:1.5.0' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.0' -} - -test { - useJUnitPlatform() -} - -task packageFat(type: Zip) { - from compileJava - from processResources - into('lib') { - from configurations.runtimeClasspath - } - dirMode = 0755 - fileMode = 0755 -} - -task packageLibs(type: Zip) { - into('java/lib') { - from configurations.runtimeClasspath - } - dirMode = 0755 - fileMode = 0755 -} - -task packageSkinny(type: Zip) { - from compileJava - from processResources -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - -build.dependsOn packageSkinny diff --git a/sample-apps/blank-java/event.json b/sample-apps/blank-java/event.json deleted file mode 100644 index 568467d1..00000000 --- a/sample-apps/blank-java/event.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "Records": [ - { - "messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78", - "receiptHandle": "MessageReceiptHandle", - "body": "Hello from SQS!", - "attributes": { - "ApproximateReceiveCount": "1", - "SentTimestamp": "1523232000000", - "SenderId": "123456789012", - "ApproximateFirstReceiveTimestamp": "1523232000001" - }, - "messageAttributes": {}, - "md5OfBody": "7b270e59b47ff90a553787216d55d91d", - "eventSource": "aws:sqs", - "eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:MyQueue", - "awsRegion": "us-west-2" - } - ] -} diff --git a/sample-apps/blank-java/images/blank-java-application.png b/sample-apps/blank-java/images/blank-java-application.png deleted file mode 100644 index e52a4c4c8457fd74796e689b23d15b302ec74671..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41120 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

r)jE&Ir)-jP0HGK9$6^026Uk z3ul3^`iG(xPHy5#BDmEvV%vur+?vJ{#Dk((X|7GlSsJOp2e2X&QBpG!8($fJ34&P+DwMW6?;ePsHk>nsi>P=s}O3Xc8C z?R-UAMyff2ZD%hBY5U4Kg7@#)_&3uZhL!kI#T@;?sVZt}pT9L*bet>E-5%SZm8PdV z6DHa-`;}`brwR)#zuyqyvm{vI4| z?18q|&j;kgP8O+5@-nFvzBu5^8U18RRWH}*$F_UNl{Jb850sGY6#FQDFxQ`6AU=vv zaKL}|(F0e9j`>?JHVD1ik)IoPb8f_$g0ovg?aR+hrTR!T+ki>^--4iFXCldtjLYn* zy5?;$szdiT;CUR}mXgZNJ;vw3aX7EhQ02)Vy9=7U&&c+kfv?R+-2N)e5eUNbaoBcW z%btwqjC{k_w7-1bP3DqpRJXI`U?`(_;-aU0Vb)TZ^yGHkQ&L%58;LV4^Y3?qlZtqweX`!4;{h$$6yUW{q=^~099Cg7suiZv!V2yYfDQiF?hTjbvk4KW zH%doQdvB7Re|MAD?J9+a&sv6Oj&}%^p~PsEI_mm0shGHi)$9t~q zlk^UPXqs1}zz*_r{SlIFCHJ>WTSpmD9KbPOPHUZbD!imuOMo_~xw@q&#_Hvi4TJMz zx_-rD6vo*?Yy+eVyIY*@tlK%+V$r-BZ_!DG_*%h1=HzQ^oj5VEcP zezIuSrt$^0$Mb~p_B85jDMnpMuP2o&+r1TSZ0?5E9n>UjE7i7hH?nF{E$Lwtb;N$d zYZNTQS#9cTX(k-vs_0`Z(y`+9>|CfW2|+J+P3^1@Ahy?O;m`Tl6gEjqSzI-^&g?lKossrNR}q@o0m)QC~~H>lFjLxlo}~bp^{A(qujQr4mu^&{wor_VN+E z>TwmH9Y^A#MagYVDvOVkS50h3YZh}~k~u)uzwX^l^lA6)?j8R`G`d64oh4$YrENgU z`HlHUudd&V{K6m`#2U+pOAH5UEH?%@c4rTd5Z4JUy%r1^K9SpZiR2if64h-}x3StO z4*zBp;R&#Nlhfv-3p_;-14c>S-kQL903jNVHS-B`p3kcFnf#)Wj=<(@i8w^xYrw@>Gu1Q^!XmtDAB12qvH z&PNO278}`r3_pKISYd$vMOVJ~JH&(#8T(r7h?=u~dMoK>rw)G>r=;lPN@d@E&Q)M? zeCLPT#0BW(6yG=4t$B9$GJD)@-%a33&;&n{+e?auHS;2u`$&>IB&MId)_<&tL~FkG zJwU!|Xa6tf`~nm%F6AsedfYHJlqjvlA+F9^&_Ntq>7E_RKnDdX?MTp7pGsXX!H*I@ zuE9sOr><;c1cl1t>aTzF3-n%*xJ(kh@Ie8|;!>@J7rN2m$TaDS;GR+<;}NU`+xZoQ z=i0-4L~=(BBYgO=KrRgAWY?4S`RLF15gKU-*R@fc>q9GegKpsAt^x=J#wgY74QoGc z_Gmv^LO*^%z*yyTp+7CH#G6hxpe$%<|LQ4{IZE70BM`oBfOs;>fPK4p;f#f_!1&&{ z|AQ&{Mw`vN&De&PJX3tl!d=ce?1ByEH&s}pcrcqYH1%`&$|e@KS*(#bdmIIlq2hdW zP|@}WB!EgLR@1Wf)u28s?Dm^I`FG}86H!{JKJG#Au)QZj7VXn0q&wm39w}OE2U*km zL>mR}AOu6-0_lPGm6}aN{f2*e+IZ`PF%M3)G-z5TD-R3 zGVkS*OxQ(tGpqUmO>oVd@pM^FrftP;e*wOGLEDtL=f;p~QwV3-0;hwnx21jDrC<7Q zW$mY17w2m%{y$+?Aymmw&*W5c3jw1CvBZ)R?gFk!Pnq!3E6Jy z?a(^*RLCupZ^q1LvVy%h?DHL#_G}iN4ICWAt{koegUy^5&%NBA2c89oS${L;AQbdZ zqj+DgDUmC8i|jT(2uV?q#+ppCxO%~;CSNbx*5??;qU#F&8dZ0zcRcym{!f9swmI&0 z%4SXd=)288#bV(RU==nluBGu+15IaeXeiuox5|033fXB!2=_}O3u|!Db9t-J3k5PN zvbwYTdS*kFaf_s@qkZ{nfJX4-dJcye9X=G=YmfJ^LtcaalbDaiBQja5jt@HMgXzGg zJ0Z9EhINym@AsRQ)w{V9=9@@%);nW`Wa3X!Z+0=Vp#3hplWz5z3Sv|`M)|a8fw&uR z$jE+gHr5H;IANF{KYYW<_FKh3zwGiHy zzfxuLyAVo+8;27`QHCy&Z1AtR%tzUrrKM)A<7;+myUVD=sDq_Li_~ypTuY9tMw*6Z zVfR-o3?}g*+^vw^=tkA{X<~qTXkmuHIw9Y%HoEjz$@fq8B~vr)e~h&2HourMlo{#` z$FM`Kj%EtokqVgYiy$j*lf03`dCY(@7Kp6di z#A^X63cgg-Ch^{E6Kn^Czg>6les_9AU6KitZSV1qW%A zGUnvj7`jb*w1QyLq8Yt}dYymNwQKpUIwvOE0c+|Qa0}1-T1c_ zAk&kxBV!|+cBZ`->QtG91w?Udz51AX-N6jR z6ou;#Mww`0ZM)h{weRZd$u4sfxfBR-;XChWNOEn`AHR7IH$afhwiVhO#=c?(DvGuZ*fek=ZQ1;coDHt&?zqEb>rVQj>9?eI4tw1AQniL1T z+8vQWrOt>ECrcI27rFV0uZui9sySrny!!}y2(2qZpj-afPT;g9qFF$5wrcw>XC-L% z&twApgYuQLPP*bk53T&#EI zP=^Sw*WL*OIj@^D-$pSmrg?jkEP~<+mBJM*FqZRhrxM4?atE`2M-OTUhd@ z4o$F>#vl{RW4Dekf*k^{DV($HhG{fy?*q?nyw_`h!Zx(g1`+GNR0o3Y@ig z!Y!0`Rfi49sA-aacZtTg(dnGIFpc#qBfTGT^FTtVw>ZJ?>VvL|ns(G>l*6v@ePm+` zBX4mFmyl4Axv!h(GDM>;)V_cjb6Q$Q2GZ?KzI5zM{xaKpBtu~!` zJhz(R-^{ICOsblHYxXadX^n_r7PS_q9pCpXPGo&*Ne#KOEs|&nP4J)9@&P^^RkcLk z_C()kuUT*&ff8s}`E&11IW|!RkwQY|TW1+)Y4@wNSJFk6ab%ZOlVf=lTO+8ytm+xa z-n74Fd}4G<_2?XFXfd6=1X&w*jaK&E>kq``Ppzu}F^tivcUE2qQgi38Or#ar zOo$rV4s5EG93j^>R89f-nql7GJfO!H!lCWLJODUX)Me4cS}*&U7z++nM1{eOEJv?m zOvh%A-iNdrT1p77=^d2wVj;cD^1K=Y*OFGo5DJ|LY(~Uz_BG;>I`YIw{)c_Bu#`eT z#H?>AO?q`UTN&xX-&UJalG24)>)21PBpK1y(EIfdV~s-j&{qL~n+RcKh|TN~cRMfS>mJuQWPOULjM?GC*{GJBEbtPPa?^(S=~; zBZfe^jy!DeX))8B?)AtLc_vMujEOT)85Y5*rASMxJSsYwklSQ_sG@R4?dx0c@p$b{ z()Xv9|I38=?I>25?SPRcuB^glM)w6;HE!pV8@9f{6RQ3A*|<^PK!t9hrM4WUa7KC8 zQ{>L(=UnR@TgvgU@&T{sy>9`WpS<}gJqoY|I|ReUUnr#7E-GIrcB{6*ITxFq@)%)_ zafb7Rvv>AE0ONI$KzQCjtxKpLN|0fR4uuz==iA89!Hbc{k7;G|xdNdNv-i;ZET6QI zh0#BE&%eZ;x=gr!k8eJ|ABfU#_7lywu2dalR2Z!3mKfGeDF!Qp(TeaU{m$`9l)sf^b&kULt{}UcdjIzD;i&@ zboetE)5b$;vc=H#h`y(Cnk~&Q*Cg5J#wHM5D1N_sx}GYX7K`71QoPm|ldxoN5WvQf zbmyL=pRRTqA>M-+Pe&@qk2-De3?zJGXNXVfeQ3kg+;wa7BbznfeH|k-0S9BJ1wi@u z1$kY~-qtM{2qyD-aEIRV?L_-ntKO6{s$%W4np2zz;O*$vu}IFulbAxGFu!$v{vU69 z7Z^Os45JGp)L6~!fY%4=g9fqyck_c~Gzawt4DnwAW4?S3({q?!D}vV7;5Sryat7qL zKNWK4umc8XpYs1U=gPz@giBOMiMCrbhur=Wd;EsuNPJsZ$0QlpL9LaR`8Rn1Ra3Zy znZ?N7$MNbaf4|m8%_bR09*!~+@pdt@Gn&pm%5*5J|A_ca=y$ihC5-Dep24=fv{-ZS z$lph3d#AI&=?IUOz$w;eV*4L`J4z&5vOL=~_8soWBv3T5E<1WhIFg?h=YyX$!5$^l zD0xEml$@7}n^TSaieJ$XMwq@#8d={{q+GEW?x|>G^%#t>n7BLfMPi`4iJJ**njsfT z2*;3L5GUTH?E?sQE#eH-Jlm29Evg0AAJQ?hNuH+oN-H!Pa|cW`z6-pP(o!SvL+h_v zKk2d7Fufe#de)*^gj$$&mvZ5Irjbdbs>AQ?eaCmvn>}V@a-~k+e}?S_FEm#%XoXQjXYhH+sW<*^iM#^5Q*s*?0bc)Dl(_KDxyVHwQOgqyBO>kFJ{wTmzCYv-YJRQcTN4Q^y9U|Rnq zQA01C`@7vE2uMBLPo|Baslt8jg>F`)mH#y) zmt9&Sm{|}5Fp{eX2@|pB5_o#1pGX87HB7;_6-2`530 zN_@fVO7Hz?ES&Y^gPXlNtG_4=3`t$z$7IV=@xWb%$;rU@c99g2WOje_G+dzDW6Kf- zNqs`SClOcw-*EEL$)U?lcO`zFU@e@}lqO&IlWck`ad)D5s{b}xm|%Wj%GHuPreIhzf?JVc>%e>DNRvoHTFX;akXmKnf;oqX)SD_z;$ko!nlRMNU-wJ01{kC7^u zpC8A6QFoh-xFPE?ev8u_1$>5CS9-rldEkPSySnDv&Qx+T<56$GV{~ugpnIVhKr*+& zOTMa>=RoT(lhwy#X6?eepUYU3 z>F)4hvxoo0ovp^z{VucRMG&y@2eX}Lbs?N#QBY|oDA!yO=jU%%3h6Qw2JdghvJ{{zUW4UTWRKZlHdwkz+&rbzt*v< zn3r*rjHHG5jmxGlQ`V;FjW$1~D>hWowJe4W+x@V2)HJx;=lLv)m=u3CD1GMZMC`24 z|8vr4Xr>@)B6kSWcNL|(lw$z~cfPn+plHUdi5<+|DDRA_=YD)Uy2iU`{e_-va^KCy zj7PQ2Qv$SfT$TCbuOiX!*zNT9bcauA5Xeh;{@}%}_i?lD6~|e|daOfta&j;4!{9}) zYMh1y*_6QtB9su#wZ}L5q}>!TJM2bsbZym1$^P+2>z0sEbDoW1UH2c`?-D{E zEs49LqqUJ&aZlYlhBp0lC#o1@UA8HxCa9HRqx;S5`Ym3yjravk`nPs4+VKh++la%? zch^OPCOpDI2?k@)u}XbujR|Z~ak)Jbvx=_enbM!`{57g$LLmn7j@ofe*=h1lBlNAP zhy-yWwtP25$kU<|VWU_*o83kb&(oDOk#p|aEn{x@>voKhgp?Yy%{&0rNPNT2r+VTS zS`T^mhooN2cvZjj90A&6z2(R!wumgb=YquQuFOw0!(rl_f%$gmi?F>RD=E0$UY;we zez?46Q&)I$^T{4AU(^DCKrX+EN>*o*Bj*|HsiT#x+})JIciFlS$k#COP?`&L-&#I@ zcro8T&Do^SS$Kfz+>DDsZBSxl1s#mlxUplYWyyB;UqzOl0o+nn6nr_G@(-587DyBn z@|-5!BbaQk>z#VL?4B@a8`=?JY99cO>DsEMh!z7l{cNAW%YY>agPImBgF#r{go;%Z|Xc1b-OK zCS1#j{;|=BYEI0~ScBu)L@v$<3i60uS@W?2Uv>5lpWyzL`Xu}6e^wN}d*CyBtg!>7)2@?wYM z+hFGxX9hu(+>YmaQquD&JuszEs9BRHHH*qu1CHDic8IH0o_>?k+}_zw-~)Y#q-f}l zO1R>wf#OlZ9le-y+}TIwWL6oVF&gXe2h29fTr$M(46|KSJ4<2SfDR>Mcs-*x zpk2QG`R6$Lqf(T&9RvB`7-IwQ6rb^+e=&6*Hhe4EY_iYC0LCKU@71-(wtXbIcyxK( zjYU>mYh3hnbjG5$@2ORgJFJ(Pi_(qhRMSN?F47HS0WPb&fj(+PM8D24|n})5{rFupCF4UlkaCs zuJhZyOI^9ORi&2EQQbf4yIbG5DYu7e@EA=A)Sl3B8=kxoC^QHKr}g4bM-D6U#BE#C z7G`XP)c$<7$z4DGHOG6K=#A$oaY04*pRkIrJ!Oj>dt+xre$gWUd#UzQ?i9e2#<{M* z*Cy*jU-P4VtEy4~u9*n|7F!To*l>ILqC6<((y z*@*I^Gi=IF=b}BSjupS!Z+dt2@HL(T5~F-ugmCSzUo(-3U#Wq+NcJrp+h9XkjrN=6 zPEFp7SsU?7U(6E2!aGt7_0O||SKF1kPIvTG-8UmWyZUyKj=0jzvAPqE>KtKx(KQX4 zLrY_QiBttA)1~rnl{HsJd^;=p!G|=PT6iq8YV-AXXJ1NJi}rdm_)d-Shd~vNKjeTO|6>$nbl{V!y3Crmd3|H^GkU zPVy|S9E;D|Znp#aw`sHpZGE4#SLFt=LjJx-zw0;cR-Yf@?yl4$`kL`^YMtmo@j5%X z!>{7RVtW}u@n&qVBDjv!dUc?$EBj+v%`D< z&mUZ$)$LdlYqa+Q6Yg8E*mpM@!s#WC3M{NBkDd(xOKq-_fwEU+S$Sd}I41VMYN3kC zH|5^)JA+`AAXHRb3Jergw!seOa{0Pj8xvMFVQ{1#j=}EZEHCHcw-B{MN|mcClw3sl z$Sq=V7BVnk%UHDU=Jy8^eAM4BvaaK1{vY)aO$mq)kGN^rql^6)bv8VGP&DVioMqQ1 zJsxN&CdKDsiFw%Zn^x#Y^l>Fz1(qe{HY8k2?Q1@JM_SBZAGNO;r4ry!T3kBgqfjBf zi=Z))g%tyV(A$k)i?a(oJII8j*R9*GaUvD%Ku0<&g4UD3y-S+`2>$>r{yhQj*kmPlTyH@!p&_Kd9Rok zce*^$t0bh+k+hc@$7FqWz_0^W2TDE)HxxS=NWcj0On?vEOZ3PypA3K3D#@3*DPDZu zd+OO-aHQ~$cct+#_=so1_c(wyxV4%j20Oa4rEY~Ma|}Pv!$4X@9ck>CXUu9+&IEyn zBj>UpHLnm+s?2DU{R*2^!AzP!{=_ytk&OJW!kI>X*l!)aMTt`%<+>I5{k7b7bF1=q zo&IRlRGnIhQMFIGMy=xopHuDdYbEj`TAAamCdVk1w(N~;VmRx?nEH1$qz(DP;9Og! z8l4e`xn=J5H{In3Ct1gd_F@5^lcuA+zsIu0Gp+|vLX-`TX3()i_*0ko?gG5pTHR;1fA`wlO+$>rL@VBX5+2YRJNhB=+4 zWy~EZR?-_&g2+xK^AB8VQ8!m_A^b@-+p4$pl0+aKI(*F(Z1@sRyGgECE8Ck{L;(>;xko zN(vSVZ&QuYwIA4QC}%^Dn!G^M&vWT>Aw>dF)3eX&E8HUvOa9GFlkIHL7;{;C;R`_J zEy4$m98v)4WIyFjaH(=%&&Q)W{NWd=-6_mTFX9}{uhTVt$ey^j6rwKR{SRBQ9CyE{ zd;I+>!V2J;@4(*|^W0g*0uB;z#^yqms|R6$Ky6YEVDb<0iSL~*ffi>GWX813O>?nq zUN21Rp2w1{r$|)}$btBLDn<1ecMncAo}7LsmaN(-5@9`Sr7s7b1{`G)3yGut{8ili zpSg{mjdQRJM-C2;g=VHAt1{+R&`UJD-Dvx$S0@K8Qfry4Op}Z0`P5f&f^e^Osy$vf zM3PosO&VFxj^jhw_5{15w%4c|c%k4b`tQ@Oq#j709d$*UK~AdlnE^NxX@Tv3wL#)r6<6&>5b; z{pDOmxAcQdEU~!Y^?85p$!3n>{l3)+(c0=%eXT%pa#Hy=AvnY})L4HD;##&cm}gxv zyV>-zlH$qk*ZRdKXfbr z%Qo@B$^s-Hyo&%A+}F6=nb(d0 zqaMfEbnQ&PB;4#NIpCbE7&_YR)$S*_G`4FbZ!;_s?79avSIw1XLkJTgB~H!**t<1$ z$6A*sBDJu{7hlgCYGSi&i1(wJC9mB|o&|(-6xk$j74Hjf1@6*0hzgGyiX%Yv1(Zk< zOK5^$KxdxG{@dK*Ya6c%cCa|pi9@J_5Nf;ST=Q2m1*4`o5!4n@){|35p*8-CMNx}# zGlmDp7j8rhu5Q1Qf(IW7DhXGUz1Gh4?v*<`ic4NH47J>TQAOXW5qBpk3Em8m5-D6`6m&0Crm zkNv=A`{OQx+E{#c$gOx3cgD zH{h+jP&{ZXw6q3ab|g}sLN8*hdB@qFqsGP=&!vw0{>Z=xTD_}>rBiMlFDykSI76Xs5Mqq=|L*5R*f zf!yV_xcX^i!EMoXGFvf?WH>1N!o3~5pxUIReH|9QwIj!%m^B z^5wGuuc6=mD2($H9y3HOoRIjmb5Uj+fbRY9F5%7WJitojeH9z&mUDR1MRNgwvdOe| zE`G#6Vig`wD!LeQ3^X%J;>f1Rz^Y%Nh&{Fz6%D|+nclcBN3I^^0Kao|sO z*GlZ`fP~*BY@OL`Hwu(e*q#_<4DGByPN4QzG_vQ%J>4h#zr~bs!<#&tY@J-$p=Oz= z-hfECq5H2IRTuewf!Fais;%k8^Ay?aF8Uk|DF+I+`?!sEw= zD!NI3oa)T;2xb!IT+xG*l}7Z#%O&3QQSP{Kub_{X|K3Uek|z1jphY6=5VR(p2J6W) zurG~e&RP${8aVOKz*t=zzqNR6wTLj zhfn@oERm`xf>*)QZ+R~?Ot*cEC3w#iEC%(F`LI%s9OltE)xlNW~hVhh^@(4leLI?BZUJf@n22-`y6 z5EDSTzHxSoes)nnYC$Ht`Zi2Y!>$;;H^7atVI_Fhgk*4a=-2T>2AjROcnCardMy{X ztVuAvm?q8JC4PR>we{S=(kC!-b0kF0 z6*cP%9Tr!R9Ms{q48A@#?XSU*442WvmUThM--WkM=`>joi&CewJJ-*-P2mS=SeTHf zO>eu%m|ll9mp%iK*{}-tZsTyh*CU9Alh?*%kmoEwmWzZ$Fp1tyT<;juf$1}iCYOm; zoV$8d9~vG;Vn;^@tAev8wD0shTB}1g-?6>g1;dj%C_}-G4U;2n-Lz2T^T$fY!t2-} z8K;^UK*67vg&?fUr7$qupN=>j{tb7*ER(ZOEBvVA(Nwhg<3Yis4l7nm7gqR|Wdb)} zg@2pempW=A5R&KUcnU`l#+L8mGI~ev({qW8rc1FNYhfgbW>%q`>dlw`N0iu zbUq1|0Csj!Z(~!H{GV#`og-d6RmsYG(~SQ)H*wnimiMo^#-|X3f7LbccnJPg*NBh% z_2FN2jUWtUI7)5;I5=uidFhX8|H_5Xn=*a-wLd>FVg0XaRPsek?-tDjpf|F0VoUQPJlZ1(?4 z@BUx^x_}diymQ3ApDU4ft!(k|_|#@AiEO0S^P@}h{u!utv;W`jz!qfbSRR{SjtO=N zquaf9_;Pc)RvX?R@832b5>PLT_vwgyi=)kh_^GV-Fts8Q;UVZ{m0IVy`>n4pEq6oB zQO^|A3`!hV$VygKKUu2dU&k-K(QIag2om6u;xz^CwW25qa{^_gL%!J7>uK}l=g<0j zOD{)ag^^7nG$qbbI&7yY=msnM-cZdx@AJ1Cq;(_AqLrU-Gwhw5+R4)~g8leM6ql75 zkXvkhi%L%0z&My<+jmhhUk||iQkrc ze(OKQlZGeBfG|kaZ{v2P-K+U_(fGRufIFn(_o_$FE_QrHz%J0+$9@sr9$bOR`3!z)4F;OIPnxNEq{ARry<52mpuvG6<-P_)K-(*t!4HLqziUG5hKm3 zp7g>jU;*D1FOW%}~Z2Zjh6dovI!N}x`HO`{f>OKpYlH#!d$Q@p8oZ`r; zLx4z-KBmq15MAdzU(+CJ$1hr9dLvJ?4|%RX-@5yp>NUmN7RYc2AhUQ)wA3!JvO)gt^vpM$A~|I-np?7cfF#epXlXqXD^mab3XN(F|8~u_p8(jS9517%xc;i zgZgP{CD<6&7VfwP3Ts`X{SV?>KVCMMlwt4RMPTH^>)D>HW%tcD2?7e4golg z=eM)Ei`Kljr+?IHBGpB z)rLwxa}h*J24muV)eTrxVCbN}Hi4%TH(UaJe>>JbL$^$Gz8;Wj+4z{CXC7y2og4WgH>%1~R8`6M zBDtM>O{!EVbY6mI(fms4pVu}tL|QG5RNbVii4E;M?n({Ul|3@}w8Qf~uNSliJw;}F z!aTzwE|!EkY}4~@59+O4Y+o3@dbKWziRr2q$r!)9b0ac&i5q1G0#=%% z8}?D=4`ekdaXH#?N|#%KVTtC8t4Z+H?I-3}Gnq49VyN*!z`fy~0OnKZUl%TpnD!dn z6}nwDj_^J-MV*GkiV9$@i!TQ=Ymr}FO2wU-*7KqGm)S?(;|bQ%aNXC&ro~Rx_V%XR z3lm1nvafiJ!e3|feDO75n2A@glurN>1o|f1G?b68p(&?aeAk&Y87066ogl5_R|g42 z#fWNmc7mJK*49c-O&MDa#nbL!P2bi{K?he@dbicYwNHcckydne-k+AQ9&WoU*7(qk}+lass|JoF~8bEK9SC6hX9SMmIv^ zJ%d|e*3G=`L*=B#_{f7mZ^##eFX-4>IUOvaqSwX$*=K(RZ?zG9x2eJValRK@Ekp3# zAO+K&&GdQL>$zFH#rmiH#o1Zc5=tqM8jFQGW4O;A@o%-m7SX%(R7p1TnNB&P@52^l zBKB07i`?9lrOI_8RAfMz1T$Tbl_&CV4qhTpa+gXW1CO$_F*G>r=r(}Xoin>)lX0V9 z+;`^;MO`f5V?K(X_$;kEiI$;v#vB1R4I!3Sf`ZtFUBw2pi#2b;_&ox|wVadL%%vSD zioz)g7YL8P<}QcAS|A7nkh0b_&642;Bcm4EINEqy>n?-^e_(qvJa%z<{IP|+WO+^r z94G5lKmCYOsD4X5%3!=l4{-7&x6n|eIg!Tnq*!`94(LJn&Orv;RiWrig!xQh!r9C{ zTIq`lzh4Q1%-&fU%i0l*qqF?c!{e9R9|?L-CUn@1^<)DSVrH#%7b*xDWK2x6__=x8 z$!t20Az6a+upy#xGGd~v&!YTZsAO4P`Z44tbWxayG^?&NLp+k#jpfJN9AV@W@s!CE z1AsA|PiIV)w|f%RxKWvXy~;MZ?oYj%^sj%viv_`=P&98JtA1)EwXSFk%`Ij+-gw!EF4CLR761fFlT3`{L*PZBK z)a6$%QcCyB)+{XPr~c!WmxpI@P}9l>WjB3&S~Sa?O09$H8!0i=ddqyz(m4pM@Y5FnK0 zKfCX{Uv_79c6RoDy>p*$cjn&nn{y6pZW~wWXY>vu)Rh}XDRmmir)^qd4*sFE&jK%7 zak~oPGo{!G$c@cWM(VjxfxPcGgLwIuKhlUgfuP=@6=Dr_JZJy;%lhbauJx}m;u6#; z7jFe#SN}V%o;`EjJ#H@sdap12=2?AkGlPwOP-RMqA&?iXSKCfsR5 zqWzw$8Ur-u_zbIv&{1&647CYoxL73>4Bl$78uyive|8XxlxwbtR{e=E<>e3IR$Sf1 z`w7*dRZBM2=K^emfRx(Q>R0xKZQvB6%Ae_dV8$k}(B;g{2fLGx_e2{V74QU?3v-th zvt?+|Q=|>HUxe$TfvLq>0=fPURe$7ZwI9eid-zI&6$Wz%e!b(1P{+~pmcM_xys~!n zW5m(DH)P>hSy^zKnF-6G?ugUUJ0-C~B|b2tm|7#>d3pGb>Nl1reS2|D?dDl5@Q`Z@ zY|f;*Bd?w2^ZR_UVksZv``XU)rW!XEbC)HAahS9wP6<NP0*xH1=~NStuZ+9PgsX!^#Yk*hjl-8^jyB`fZwe6aWUtU zL60e-1|0YN`cTO_UVlXqo~xacZK3*EF-nWeIqY+U#s(5iVXz`en%@U*_Sq12DMw$9 zFVAi8xB=^+M|zITfJ(t$8$C7YQ>AWNy1x8=+3=B_5l!_TS z7_#W9s<+W&zd3~Syiyx3WK7dUo>$?n5FQ?pKb#5jK!4nc@{vVvE+KNXny=G6RQ}9I z<3ddupBk?^Dol9Ur+#8j0}H`?T=IN#t0m*DDP0`5kyp<1mLtW!4dU|3YQUFwkqEI< zEHDI)g^g32!CY%-!PH%327T}*`SsZEU@Y>$9M_10j*;(!%*y8xr{3ExSM!R}IE+Oz zdN#iR6%s@!bzbON#Xs5araRj=Ue9(uG>ItI8wvw;*erc*wvsdL|20VtDBQiGAK<0% zGVGMbsq}##i{$H|R_E11QP#Ytxco~jW7KpySSi;Jx zd!Dra4;u?vf!pm>aww-%A(Q^gnQ%?Vo=H-uf(u4}nC~$kS#JsNc~DSS>1BJSMXBGj znJa+&%E7j9Ee64v>CI!q3v@+gz_I1Tem3^F&sCSf!d0H;c&Z8=lYo|kCPL}Wf_KfM z23TbAVbGr(gNd3OFq7ar1QJ~DuyC4DTv2wjcm8?1uBGWvctodPb-}}I%ZScv+nO!P z8N1YF_TXSqBWZA8*wFPy5ZVZ)Y<4TBx`c0`8zur03*?O$37PTgy%QRiJ!9u{8C;8q z>8hCB$xHf$*oIrwmnXdwuO_H|^x_D#({xd^;Svcr|DkNt_#GqC?GmvqS#^Vt*u+YW zb+eKRy6U+M)mZi=Wxd`5j6Fa3L=o)`{1mI0%sh+|J>reGs>zJDyRYcexG$$SQtcna zR<(q4g)wR~8`!VNGl$b{EhnmzvGF`FPTZ#>#(gs;B%!50)EN*D9C9Ua1_ z(bgqJ`*erL%7WgfYULLjwb9PaOKuE^23F_&NxBOFY1ULvGe)=p znaCUHh^G7QX%+{P)Tl5S#k&H!jPqG!3mfKnmF6Um8o#D(goW!KLQS3}$fwkXDp{x6 zo=GAPg@G!0^^tNT0&>bxsH*5i}BYR#Ze75gLWokH-lZ%n{B-z;Z40 zr<{5rLot7B0r$xK?9GT%+AE*WGYvZXJPfJS+Z#JjPmq(#L8X?>zL*2A$vSgKt{V0w zPu2;vSF&>j6h|6b&NTau8zI^Y2?GY&Ko~GcM4{H$=LpnXZ)ehmiv}-lI&E3@J7J4$zw{M zg7H?hNY{NJ;3BVtF>^%OSp;U9%lV5==b=T4$QsuM_rpUKzAi3(-%qKT<-QDf&y%FH z9k#9|PmG;;N0BxE}S-G19Mqb zZ^=6o?S;rbngXLds>&^>jbx>JTlAC!-f1fMPA z7H?wDH)411I$N)Hh)>A8&%t`eq!MvstMvmiy0o}`VyjqxiTfi^Ia&{2YMAAa4V~nQ zv4g|%%P&OGjuOEA!UfuxXc3yqD?7P1(i!J=14d&AQTz?}XKIo$Ia-0$soN-!KKg6^ zXjSa>-WBqNAzRVNo7+!lT9n9bd+uN(RAObRf)w^f!EDDQQ?MD~Msx52u7v%*6fn=Z z72qxsdnp;T#4fnNXZ%^5&l$7WMip+%!|$mvRuPEY0YypD$)gU74Ox!qNMI|+)u@EZ z%8wQSin0RVV&x|~OwQHAF6LHF{9#hblY+G>c6^jjKbIliU@V`=ti=>(>28gw*4MXH z7(j}vNx0Y@e7`R%*+T*+iam%b(^K(L+a9c->l9yb>vpi&<6;pFSjOf_%tk?3uYyOI;G zfqpIu1L~)FlJ!r;7#QGvn7U8FtFa(r48=fOjbku&it#)zoOP2{>(<~|6gr^m99&NR za%&*2E>ys9`jRB=Puq7-_frOLc~XZdpev-Eu%8cbzJE$2OB@72#E$JPtE%JrV)-@T z>Fa(cbO*)sDmYsF=81$sfFu3UHazd(s+6t_B3TlDLcsOmviZQCbrd-9W)bvpzFlj@L$&dK%tX+Wd2f0TgXL{$;<}v=K%y)h$96zT*^Q0o3P0<#pbQGVbKoS z^5jXb+oA2qf-+8y7KIq{+mJ_Z@XUolgP5gBNaETrXd?z(`?WyEF9k#maP|K*ghP@h z^VSR2lB1$h7QMX29&CS++28$33aH1qVLwdb%i8qd-ZliJ^woO=^J@4lrjmJS*T(nN zp@4bKzzYvHZ_j6Lc6mK`VPFPVdy*oiQ*KFqeNbn1RfdjPWyzQSJa=Xow!8uTMHkBYTLy zSE}=771mPi_l?uo4w-x7@@bFc+}&S>%5JWG@4FQSPM#QQN6KFjvw^b3S(bgNLJZXz z8616sp^?pXW6lxmIxjYHLZF^=*`)BxRQ5j4@bc#k<3RVjZ&6DwU(3b({0FW+{q zLCXC!(b;PLLK=`%7u389rn^lqer`HoX-gyFQa z3l%3f>W{kwxvjhaYX;Ln4g$v^4V>wzPNLI;ZL7iPGfBPM^Tx;0N+8S*o3FyAyCA*u z@zr`q+O{nlL$>HWYV!fs#4Nf!AA(yfm zw9cmOYdW!#k_vu)x9)fpYo5LULbxof@`J_T(HV5u{4=~-@-MvFT84OIrR3&uW6>4j zhFaFON{&B(SZ=NznUzWecc?+V&)#e}dyTV#H9461lLY15c6;LF8cecv$Kl{wrrPa2 zOn<49@BqpE%BLi8EW!G(t!oMPM)DEj3mos+LT|n8VQ1GuN~STgvzrF4s4RP+lbVNGY80!UC>Q_}z=)6aKCfD$#*7g;fz*Phd#Bk}?E5{2YPT!UMw<9?34t=6 z-mq`8L%|_yg;_twUI5L*m*E?e|FBwW9SD`RU)|p{y|3Rv+qBwv`0T2u6)X4ocU_5c z2iCV4o8UQS>D?BSZOL{z=d)2#qDy5H*mYGpx3Zmxp(l?_l}O8MC~tBp#AdPoPP1Ar z7ZCQgeFDbQldOJSB0v2}WlT_vl8?l-6J`xLElnEej`F7q73Bb%3!vjzY? z$eHag@U?AqU&YEx8}>eD&7IV}7EMRF8(1vXEx&v1>!xcpn!F33576)rS1+BO7ITTU z-Wz>v7DxEq#_lE%WyAA|dwSC+lDa4aMR^6$SD3dDX3Ps``TVn0QwhNBaniR&T#r$y z&xL`DbyV6q_U7%_ktI4L_UfVSf8tz=M5R<_Qj;=zze zRJEEvr}8ArT>NP8O`a|$^R7w?=CQ=Q{)h|y&Cv#RDporHn-UK!YZl7xG4d_Q_>Owe$g9IgnYj1RA#Ys)aH`;wVW(@fSb=gR%3IYHR= z=9jQrf44Bi|9>&kq~<}+kclCTm4br$r@Ma><(R{1e3fu@Arp%s+QO{!)TfX?q47VQ zhuxg3o^72_%5KRubm8-IpXFv=+#6yTh2JA3P7 Ktz5wQqtYs-Mzq_{XYNa z_dNH$?(4?u-u0#K&Sz$J=FH4F?{m(3_S0(>d29@F3Qlu1YUlTl)w-<2PU;^*K>${V7I{rVeLP!J;{XZ|FcTRHfhBCQ`tONh5_U1ze**~>n?U}cKoW09M$PBF&3~1nRkUHf zp!%RIiDxaV=3`>_Uyr`uF6MGRdYyB7**X*OKcjqx*V(qmr5sTqA3!Tw>F$KLuo?N! z&|y zinAvf%4;gJm%N=Tx4HiD3|H;#?a#t3W5QF}P6UO> z6y!4RF

iH%(yARqzkswLST%C0V=I}2!??|kOj?;P6oR_oF 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 C=Byn6 diff --git a/sample-apps/blank-java/images/sample-blank-java.png b/sample-apps/blank-java/images/sample-blank-java.png deleted file mode 100644 index 989a8093b4b6406e4355f6e86554bc42ca47b019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49708 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 - 4.0.0 - com.example - blank-java - jar - 1.0-SNAPSHOT - blank-java-function - - UTF-8 - 1.8 - 1.8 - - - - com.amazonaws - aws-lambda-java-core - 1.2.1 - - - com.amazonaws - aws-lambda-java-events - 2.2.9 - - - com.amazonaws - aws-lambda-java-log4j2 - 1.5.0 - - - com.google.code.gson - gson - 2.8.6 - - - org.apache.logging.log4j - log4j-api - [2.17.1,) - - - org.apache.logging.log4j - log4j-core - [2.17.1,) - - - org.apache.logging.log4j - log4j-slf4j18-impl - [2.17.1,) - - - software.amazon.awssdk - lambda - 2.10.72 - - - com.amazonaws - aws-xray-recorder-sdk-core - 2.4.0 - - - com.amazonaws - aws-xray-recorder-sdk-aws-sdk-core - 2.4.0 - - - com.amazonaws - aws-xray-recorder-sdk-aws-sdk-v2 - 2.4.0 - - - com.amazonaws - aws-xray-recorder-sdk-aws-sdk-v2-instrumentor - 2.4.0 - - - org.junit.jupiter - junit-jupiter-api - 5.6.0 - test - - - org.junit.jupiter - junit-jupiter-engine - 5.6.0 - test - - - - - - - - maven-surefire-plugin - 2.22.2 - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.2 - - false - - - - package - - shade - - - - - - - - - - - - com.github.edwgiz - maven-shade-plugin.log4j2-cachefile-transformer - [2.17.1,) - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - 1.8 - 1.8 - - - - - \ No newline at end of file diff --git a/sample-apps/blank-java/src/main/java/example/Handler.java b/sample-apps/blank-java/src/main/java/example/Handler.java deleted file mode 100644 index b0962713..00000000 --- a/sample-apps/blank-java/src/main/java/example/Handler.java +++ /dev/null @@ -1,65 +0,0 @@ -package example; - -import com.amazonaws.services.lambda.runtime.Context; -import com.amazonaws.services.lambda.runtime.LambdaLogger; -import com.amazonaws.services.lambda.runtime.RequestHandler; -import com.amazonaws.services.lambda.runtime.events.SQSEvent; -import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage; - -import software.amazon.awssdk.services.lambda.model.GetAccountSettingsRequest; -import software.amazon.awssdk.services.lambda.model.GetAccountSettingsResponse; -import software.amazon.awssdk.services.lambda.model.ServiceException; -import software.amazon.awssdk.services.lambda.LambdaAsyncClient; -import software.amazon.awssdk.services.lambda.model.AccountUsage; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.lang.StringBuilder; -import java.util.Map; -import java.util.List; -import java.util.concurrent.CompletableFuture; - -// Handler value: example.Handler -public class Handler implements RequestHandler{ - private static final Logger logger = LoggerFactory.getLogger(Handler.class); - private static final Gson gson = new GsonBuilder().setPrettyPrinting().create(); - private static final LambdaAsyncClient lambdaClient = LambdaAsyncClient.create(); - public Handler(){ - CompletableFuture accountSettings = lambdaClient.getAccountSettings(GetAccountSettingsRequest.builder().build()); - try { - GetAccountSettingsResponse settings = accountSettings.get(); - } catch(Exception e) { - e.getStackTrace(); - } - } - @Override - public String handleRequest(SQSEvent event, Context context) - { - String response = new String(); - // call Lambda API - logger.info("Getting account settings"); - CompletableFuture accountSettings = - lambdaClient.getAccountSettings(GetAccountSettingsRequest.builder().build()); - // log execution details - logger.info("ENVIRONMENT VARIABLES: {}", gson.toJson(System.getenv())); - logger.info("CONTEXT: {}", gson.toJson(context)); - logger.info("EVENT: {}", gson.toJson(event)); - // process event - for(SQSMessage msg : event.getRecords()){ - logger.info(msg.getBody()); - } - // process Lambda API response - try { - GetAccountSettingsResponse settings = accountSettings.get(); - response = gson.toJson(settings.accountUsage()); - logger.info("Account usage: {}", response); - } catch(Exception e) { - e.getStackTrace(); - } - return response; - } -} \ No newline at end of file diff --git a/sample-apps/blank-java/src/main/resources/log4j2.xml b/sample-apps/blank-java/src/main/resources/log4j2.xml deleted file mode 100644 index b9a6c317..00000000 --- a/sample-apps/blank-java/src/main/resources/log4j2.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - %d{yyyy-MM-dd HH:mm:ss} %X{AWSRequestId} %-5p %c{1} - %m%n - - - - - - - - - - - \ No newline at end of file diff --git a/sample-apps/blank-java/src/test/java/example/InvokeTest.java b/sample-apps/blank-java/src/test/java/example/InvokeTest.java deleted file mode 100644 index c65b9371..00000000 --- a/sample-apps/blank-java/src/test/java/example/InvokeTest.java +++ /dev/null @@ -1,71 +0,0 @@ -package example; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import org.junit.jupiter.api.Test; - -import com.amazonaws.services.lambda.runtime.Context; -import com.amazonaws.services.lambda.runtime.LambdaLogger; -import com.amazonaws.services.lambda.runtime.RequestHandler; -import com.amazonaws.services.lambda.runtime.events.SQSEvent; -import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; -import java.util.ArrayList; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.stream.Stream; - -import com.amazonaws.xray.AWSXRay; -import com.amazonaws.xray.AWSXRayRecorderBuilder; -import com.amazonaws.xray.strategy.sampling.NoSamplingStrategy; - -class InvokeTest { - private static final Logger logger = LoggerFactory.getLogger(InvokeTest.class); - Gson gson = new GsonBuilder() - .registerTypeAdapter(SQSEvent.class, new SQSEventDeserializer()) - .setPrettyPrinting() - .create(); - - public InvokeTest() { - AWSXRayRecorderBuilder builder = AWSXRayRecorderBuilder.standard(); - builder.withSamplingStrategy(new NoSamplingStrategy()); - AWSXRay.setGlobalRecorder(builder.build()); - } - - @Test - void invokeTest() { - AWSXRay.beginSegment("blank-java-test"); - String path = "src/test/resources/event.json"; - String eventString = loadJsonFile(path); - SQSEvent event = gson.fromJson(eventString, SQSEvent.class); - Context context = new TestContext(); - String requestId = context.getAwsRequestId(); - Handler handler = new Handler(); - String result = handler.handleRequest(event, context); - assertTrue(result.contains("totalCodeSize")); - AWSXRay.endSegment(); - } - - private static String loadJsonFile(String path) - { - StringBuilder stringBuilder = new StringBuilder(); - try (Stream stream = Files.lines( Paths.get(path), StandardCharsets.UTF_8)) - { - stream.forEach(s -> stringBuilder.append(s)); - } - catch (IOException e) - { - e.printStackTrace(); - } - return stringBuilder.toString(); - } -} diff --git a/sample-apps/blank-java/src/test/java/example/SQSEventDeserializer.java b/sample-apps/blank-java/src/test/java/example/SQSEventDeserializer.java deleted file mode 100644 index c2576307..00000000 --- a/sample-apps/blank-java/src/test/java/example/SQSEventDeserializer.java +++ /dev/null @@ -1,42 +0,0 @@ -package example; - -import com.amazonaws.services.lambda.runtime.LambdaLogger; -import com.amazonaws.services.lambda.runtime.RequestHandler; -import com.amazonaws.services.lambda.runtime.events.SQSEvent; -import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonElement; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonParseException; -import com.google.gson.JsonDeserializer; -import com.google.gson.reflect.TypeToken; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; -import java.util.ArrayList; -import java.lang.reflect.Type; - -public class SQSEventDeserializer implements JsonDeserializer { - private static final Logger logger = LoggerFactory.getLogger(InvokeTest.class); - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - Type sqsMessageArray = new TypeToken>(){}.getType(); - - @Override - public SQSEvent deserialize(JsonElement eventJson, Type typeOfT, JsonDeserializationContext context) - throws JsonParseException { - SQSEvent event = new SQSEvent(); - logger.info("DESERIALIZING TEST EVENT"); - logger.info("EVENT JSON: " + eventJson.toString()); - // Records key is capitalized in test event, but lowercase in type - JsonArray recordsArray = eventJson.getAsJsonObject().get("Records").getAsJsonArray(); - ArrayList records = gson.fromJson(recordsArray, sqsMessageArray); - event.setRecords(records); - return event; - } -} \ No newline at end of file diff --git a/sample-apps/blank-java/src/test/java/example/TestContext.java b/sample-apps/blank-java/src/test/java/example/TestContext.java deleted file mode 100644 index 69e0af00..00000000 --- a/sample-apps/blank-java/src/test/java/example/TestContext.java +++ /dev/null @@ -1,45 +0,0 @@ -package example; - -import com.amazonaws.services.lambda.runtime.Context; -import com.amazonaws.services.lambda.runtime.CognitoIdentity; -import com.amazonaws.services.lambda.runtime.ClientContext; -import com.amazonaws.services.lambda.runtime.LambdaLogger; - -public class TestContext implements Context{ - - public TestContext() {} - public String getAwsRequestId(){ - return new String("495b12a8-xmpl-4eca-8168-160484189f99"); - } - public String getLogGroupName(){ - return new String("/aws/lambda/my-function"); - } - public String getLogStreamName(){ - return new String("2020/02/26/[$LATEST]704f8dxmpla04097b9134246b8438f1a"); - } - public String getFunctionName(){ - return new String("my-function"); - } - public String getFunctionVersion(){ - return new String("$LATEST"); - } - public String getInvokedFunctionArn(){ - return new String("arn:aws:lambda:us-east-2:123456789012:function:my-function"); - } - public CognitoIdentity getIdentity(){ - return null; - } - public ClientContext getClientContext(){ - return null; - } - public int getRemainingTimeInMillis(){ - return 300000; - } - public int getMemoryLimitInMB(){ - return 512; - } - public LambdaLogger getLogger(){ - return new TestLogger(); - } - -} \ No newline at end of file diff --git a/sample-apps/blank-java/src/test/java/example/TestLogger.java b/sample-apps/blank-java/src/test/java/example/TestLogger.java deleted file mode 100644 index a81a274e..00000000 --- a/sample-apps/blank-java/src/test/java/example/TestLogger.java +++ /dev/null @@ -1,15 +0,0 @@ -package example; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import com.amazonaws.services.lambda.runtime.LambdaLogger; - -public class TestLogger implements LambdaLogger { - private static final Logger logger = LoggerFactory.getLogger(TestLogger.class); - public TestLogger(){} - public void log(String message){ - logger.info(message); - } - public void log(byte[] message){ - logger.info(new String(message)); - } -} diff --git a/sample-apps/blank-java/src/test/resources/event.json b/sample-apps/blank-java/src/test/resources/event.json deleted file mode 100644 index 568467d1..00000000 --- a/sample-apps/blank-java/src/test/resources/event.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "Records": [ - { - "messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78", - "receiptHandle": "MessageReceiptHandle", - "body": "Hello from SQS!", - "attributes": { - "ApproximateReceiveCount": "1", - "SentTimestamp": "1523232000000", - "SenderId": "123456789012", - "ApproximateFirstReceiveTimestamp": "1523232000001" - }, - "messageAttributes": {}, - "md5OfBody": "7b270e59b47ff90a553787216d55d91d", - "eventSource": "aws:sqs", - "eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:MyQueue", - "awsRegion": "us-west-2" - } - ] -} diff --git a/sample-apps/blank-java/src/test/resources/log4j2.xml b/sample-apps/blank-java/src/test/resources/log4j2.xml deleted file mode 100644 index 3b69545f..00000000 --- a/sample-apps/blank-java/src/test/resources/log4j2.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sample-apps/blank-java/template-mvn.yml b/sample-apps/blank-java/template-mvn.yml deleted file mode 100644 index a2c3d5d6..00000000 --- a/sample-apps/blank-java/template-mvn.yml +++ /dev/null @@ -1,20 +0,0 @@ -AWSTemplateFormatVersion: '2010-09-09' -Transform: 'AWS::Serverless-2016-10-31' -Description: An AWS Lambda application that calls the Lambda API. -Resources: - function: - Type: AWS::Serverless::Function - Properties: - CodeUri: target/blank-java-1.0-SNAPSHOT.jar - Handler: example.Handler::handleRequest - Runtime: java8 - Description: Java function - MemorySize: 512 - Timeout: 10 - # Function's execution role - Policies: - - AWSLambdaBasicExecutionRole - - AWSLambda_ReadOnlyAccess - - AWSXrayWriteOnlyAccess - - AWSLambdaVPCAccessExecutionRole - Tracing: Active diff --git a/sample-apps/blank-java/template.yml b/sample-apps/blank-java/template.yml deleted file mode 100644 index 748d3b7e..00000000 --- a/sample-apps/blank-java/template.yml +++ /dev/null @@ -1,30 +0,0 @@ -AWSTemplateFormatVersion: '2010-09-09' -Transform: 'AWS::Serverless-2016-10-31' -Description: An AWS Lambda application that calls the Lambda API. -Resources: - function: - Type: AWS::Serverless::Function - Properties: - CodeUri: build/distributions/blank-java.zip - Handler: example.Handler::handleRequest - Runtime: java8 - Description: Java function - MemorySize: 512 - Timeout: 10 - # Function's execution role - Policies: - - AWSLambdaBasicExecutionRole - - AWSLambda_ReadOnlyAccess - - AWSXrayWriteOnlyAccess - - AWSLambdaVPCAccessExecutionRole - Tracing: Active - Layers: - - !Ref libs - libs: - Type: AWS::Serverless::LayerVersion - Properties: - LayerName: blank-java-lib - Description: Dependencies for the blank-java sample app. - ContentUri: build/blank-java-lib.zip - CompatibleRuntimes: - - java8 \ No newline at end of file diff --git a/sample-apps/java-events/3-invoke.sh b/sample-apps/java-events/3-invoke.sh index 0504ea1e..5df2a8ef 100755 --- a/sample-apps/java-events/3-invoke.sh +++ b/sample-apps/java-events/3-invoke.sh @@ -40,6 +40,9 @@ then s3) PAYLOAD='file://events/s3-notification.json' ;; + sqs) + PAYLOAD='file://events/sqs-record.json' + ;; *) echo -n "Unknown event type" ;; diff --git a/sample-apps/java-events/README.md b/sample-apps/java-events/README.md index d99fa3b1..d04ccf4f 100644 --- a/sample-apps/java-events/README.md +++ b/sample-apps/java-events/README.md @@ -98,6 +98,7 @@ By default, the function uses a handler class named `Handler` that takes an API - `HandlerLex.java` - Takes `LexEvent` as input. - `HandlerS3.java` - Takes `S3Event` as input. - `HandlerSNS.java` - Takes `SNSEvent` as input. +- `HandlerSQS.java` - Takes `SQSEvent` as input. To use a different handler, change the value of the Handler setting in the application template (`template.yml` or `template-mvn.yaml`). For example, to use the Amazon Lex handler: @@ -128,6 +129,7 @@ The following event type keys are supported: - `lex` - Lex dialog (`events/lex-flowers.json`) - `ddb` - DynamoDB record (`events/dynamodb-record.json`) - `s3` - S3Event record (`events/s3-notification.json`) +- `sqs` - SQSEvent record (`events/sqs-record.json`) # Cleanup To delete the application, run `4-cleanup.sh`. diff --git a/sample-apps/java-events/build.gradle b/sample-apps/java-events/build.gradle index f98131dc..a4e58ea4 100644 --- a/sample-apps/java-events/build.gradle +++ b/sample-apps/java-events/build.gradle @@ -8,7 +8,7 @@ repositories { dependencies { implementation 'com.amazonaws:aws-lambda-java-core:1.2.1' - implementation 'com.amazonaws:aws-lambda-java-events:3.9.0' + implementation 'com.amazonaws:aws-lambda-java-events:3.11.0' implementation 'com.google.code.gson:gson:2.8.6' implementation 'org.apache.logging.log4j:log4j-api:[2.17.1,)' implementation 'org.apache.logging.log4j:log4j-core:[2.17.1,)' diff --git a/sample-apps/java-events/events/sqs-record.json b/sample-apps/java-events/events/sqs-record.json new file mode 100644 index 00000000..b88b763d --- /dev/null +++ b/sample-apps/java-events/events/sqs-record.json @@ -0,0 +1,21 @@ +{ + "Records": [ + { + "messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78", + "receiptHandle": "MessageReceiptHandle", + "body": "Hello from SQS!", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "1523232000000", + "SenderId": "123456789012", + "ApproximateFirstReceiveTimestamp": "1523232000001" + }, + "messageAttributes": {}, + "md5OfBody": "7b270e59b47ff90a553787216d55d91d", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:MyQueue", + "awsRegion": "us-west-2" + } + ] +} + \ No newline at end of file diff --git a/sample-apps/java-events/pom.xml b/sample-apps/java-events/pom.xml index 771e1af6..0a7c881d 100644 --- a/sample-apps/java-events/pom.xml +++ b/sample-apps/java-events/pom.xml @@ -20,7 +20,7 @@ com.amazonaws aws-lambda-java-events - 3.9.0 + 3.11.0 com.google.code.gson diff --git a/sample-apps/java-events/src/main/java/example/HandlerSQS.java b/sample-apps/java-events/src/main/java/example/HandlerSQS.java new file mode 100644 index 00000000..3b3e16b6 --- /dev/null +++ b/sample-apps/java-events/src/main/java/example/HandlerSQS.java @@ -0,0 +1,35 @@ +package example; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.LambdaLogger; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.lambda.runtime.events.SQSEvent; +import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +// Handler value: example.HandlerSQS +public class HandlerSQS implements RequestHandler{ + private static final Logger logger = LoggerFactory.getLogger(HandlerSQS.class); + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + @Override + public String handleRequest(SQSEvent event, Context context) + { + String response = new String("200 OK"); + // log execution details + logger.info("ENVIRONMENT VARIABLES: {}", gson.toJson(System.getenv())); + logger.info("CONTEXT: {}", gson.toJson(context)); + logger.info("EVENT: {}", gson.toJson(event)); + // process event + for(SQSMessage msg : event.getRecords()){ + logger.info(msg.getBody()); + } + // log execution details + Util.logEnvironment(event, context, gson); + return response; + } +} \ No newline at end of file