From e5d55eb292f1ede2638daa541d3d422b7bdb9746 Mon Sep 17 00:00:00 2001 From: "kirill.turutin" Date: Thu, 27 May 2021 17:47:03 +0300 Subject: [PATCH 1/4] Date-time format fix in Page builder; Java client test example --- browserup-proxy.schema.json | 275 +++--- clients/examples/java/.gitignore | 82 ++ clients/examples/java/build.gradle | 39 + .../java/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + clients/examples/java/gradlew | 185 ++++ clients/examples/java/gradlew.bat | 89 ++ .../libs/browserup-proxy-client-1.0.0.jar | Bin 0 -> 89599 bytes clients/examples/java/settings.gradle | 2 + .../java/com/javatest/JavaClientTest.java | 37 + .../java/com/javatest/JavaClientTestTest.java | 22 + clients/java/.openapi-generator/FILES | 16 + clients/java/api/openapi.yaml | 873 +++++++++--------- clients/java/docs/Entry.md | 2 +- clients/java/docs/NameValuePair.md | 2 +- clients/java/gradlew | 0 clients/java/openapitools.json | 7 + .../com/browserup/proxy_client/Entry.java | 9 +- .../browserup/proxy_client/NameValuePair.java | 52 +- .../proxy/api/BrowserUpProxyApiTest.java | 2 +- .../proxy_client/EntryRequestCookiesTest.java | 2 +- .../EntryRequestQueryStringTest.java | 2 +- .../proxy_client/EntryRequestTest.java | 2 +- .../EntryResponseContentTest.java | 2 +- .../proxy_client/EntryResponseTest.java | 2 +- .../com/browserup/proxy_client/EntryTest.java | 3 +- .../proxy_client/HarLogCreatorTest.java | 2 +- .../browserup/proxy_client/HarLogTest.java | 2 +- .../com/browserup/proxy_client/HarTest.java | 2 +- .../browserup/proxy_client/HeaderTest.java | 2 +- .../proxy_client/MatchCriteriaTest.java | 2 +- .../proxy_client/NameValuePairTest.java | 14 +- .../proxy_client/PagePageTimingsTest.java | 2 +- .../com/browserup/proxy_client/PageTest.java | 2 +- .../proxy_client/VerifyResultTest.java | 2 +- clients/openapitools.json | 7 + mitmproxy/addons/browserup/har/har_builder.py | 3 +- .../addons/browserup/har/har_resources.py | 2 +- mitmproxy/addons/browserup/schemas/Entry.json | 2 +- mitmproxy/addons/browserup/schemas/Page.json | 5 +- openapitools.json | 7 + 41 files changed, 1134 insertions(+), 634 deletions(-) create mode 100644 clients/examples/java/.gitignore create mode 100644 clients/examples/java/build.gradle create mode 100644 clients/examples/java/gradle/wrapper/gradle-wrapper.jar create mode 100644 clients/examples/java/gradle/wrapper/gradle-wrapper.properties create mode 100755 clients/examples/java/gradlew create mode 100644 clients/examples/java/gradlew.bat create mode 100644 clients/examples/java/libs/browserup-proxy-client-1.0.0.jar create mode 100644 clients/examples/java/settings.gradle create mode 100644 clients/examples/java/src/main/java/com/javatest/JavaClientTest.java create mode 100644 clients/examples/java/src/test/java/com/javatest/JavaClientTestTest.java mode change 100644 => 100755 clients/java/gradlew create mode 100644 clients/java/openapitools.json create mode 100644 clients/openapitools.json create mode 100644 openapitools.json diff --git a/browserup-proxy.schema.json b/browserup-proxy.schema.json index aa5a9647bb..a1b28316a5 100644 --- a/browserup-proxy.schema.json +++ b/browserup-proxy.schema.json @@ -456,6 +456,143 @@ } } }, + "Har": { + "type": "object", + "required": [ + "log" + ], + "properties": { + "log": { + "type": "object", + "externalDocs": { + "description": "HAR (HTTP Archive) Log Format", + "url": "http://www.softwareishard.com/blog/har-12-spec/" + }, + "required": [ + "version", + "creator", + "entries" + ], + "properties": { + "version": { + "type": "string" + }, + "creator": { + "type": "object", + "required": [ + "name", + "version" + ], + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + }, + "comment": { + "type": "string" + } + } + }, + "browser": { + "type": "object", + "required": [ + "name", + "version" + ], + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + }, + "comment": { + "type": "string" + } + } + }, + "pages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Page" + } + }, + "entries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Entry" + } + }, + "comment": { + "type": "string" + } + } + } + } + }, + "Header": { + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + }, + "comment": { + "type": "string" + } + } + }, + "Page": { + "type": "object", + "required": [ + "startedDateTime", + "id", + "title", + "pageTimings" + ], + "properties": { + "startedDateTime": { + "type": "string" + }, + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "pageTimings": { + "type": "object", + "properties": { + "onContentLoad": { + "type": "number", + "minimum": -1 + }, + "onLoad": { + "type": "number", + "minimum": -1 + }, + "comment": { + "type": "string" + } + } + }, + "comment": { + "type": "string" + } + } + }, + "CustomHarData": { + "type": "object", + "minProperties": 1 + }, "Entry": { "type": "object", "required": [ @@ -838,144 +975,6 @@ "type": "string" } } - }, - "Header": { - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - }, - "comment": { - "type": "string" - } - } - }, - "Har": { - "type": "object", - "required": [ - "log" - ], - "properties": { - "log": { - "type": "object", - "externalDocs": { - "description": "HAR (HTTP Archive) Log Format", - "url": "http://www.softwareishard.com/blog/har-12-spec/" - }, - "required": [ - "version", - "creator", - "entries" - ], - "properties": { - "version": { - "type": "string" - }, - "creator": { - "type": "object", - "required": [ - "name", - "version" - ], - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - }, - "comment": { - "type": "string" - } - } - }, - "browser": { - "type": "object", - "required": [ - "name", - "version" - ], - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - }, - "comment": { - "type": "string" - } - } - }, - "pages": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Page" - } - }, - "entries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Entry" - } - }, - "comment": { - "type": "string" - } - } - } - } - }, - "CustomHarData": { - "type": "object", - "minProperties": 1 - }, - "Page": { - "type": "object", - "required": [ - "startedDateTime", - "id", - "title", - "pageTimings" - ], - "properties": { - "startedDateTime": { - "type": "string", - "format": "date-time" - }, - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "pageTimings": { - "type": "object", - "properties": { - "onContentLoad": { - "type": "number", - "minimum": -1 - }, - "onLoad": { - "type": "number", - "minimum": -1 - }, - "comment": { - "type": "string" - } - } - }, - "comment": { - "type": "string" - } - } } } } diff --git a/clients/examples/java/.gitignore b/clients/examples/java/.gitignore new file mode 100644 index 0000000000..0462914a60 --- /dev/null +++ b/clients/examples/java/.gitignore @@ -0,0 +1,82 @@ +# Created by https://www.gitignore.io + +### Gradle ### +.gradle +build/ +bin/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +.classpath +.project + +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +.idea/modules.xml +.idea/*.iml +.idea/modules + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser diff --git a/clients/examples/java/build.gradle b/clients/examples/java/build.gradle new file mode 100644 index 0000000000..704aaa6ce8 --- /dev/null +++ b/clients/examples/java/build.gradle @@ -0,0 +1,39 @@ +plugins { + id 'java' +} + +group 'org.example' +version '1.0-SNAPSHOT' + +repositories { + flatDir { + dirs 'libs' + } + mavenCentral() +} + +dependencies { + implementation name: 'browserup-proxy-client-1.0.0' + + implementation 'org.seleniumhq.selenium:selenium-java:3.141.59' + implementation 'io.github.bonigarcia:webdrivermanager:4.4.3' + + // Java client dependencies, might remove it once we deploy java client to maven repo + implementation 'io.swagger:swagger-annotations:1.5.24' + implementation "com.google.code.findbugs:jsr305:3.0.2" + implementation 'com.squareup.okhttp3:okhttp:4.9.1' + implementation 'com.squareup.okhttp3:logging-interceptor:4.9.1' + implementation 'com.google.code.gson:gson:2.8.6' + implementation 'io.gsonfire:gson-fire:1.8.4' + implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.10' + implementation 'org.threeten:threetenbp:1.4.3' + implementation 'javax.annotation:javax.annotation-api:1.3.2' + // Java client dependencies end + + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' +} + +test { + useJUnitPlatform() +} diff --git a/clients/examples/java/gradle/wrapper/gradle-wrapper.jar b/clients/examples/java/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/clients/examples/java/gradle/wrapper/gradle-wrapper.properties b/clients/examples/java/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..da9702f9e7 --- /dev/null +++ b/clients/examples/java/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/clients/examples/java/gradlew b/clients/examples/java/gradlew new file mode 100755 index 0000000000..4f906e0c81 --- /dev/null +++ b/clients/examples/java/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/clients/examples/java/gradlew.bat b/clients/examples/java/gradlew.bat new file mode 100644 index 0000000000..ac1b06f938 --- /dev/null +++ b/clients/examples/java/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/clients/examples/java/libs/browserup-proxy-client-1.0.0.jar b/clients/examples/java/libs/browserup-proxy-client-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..3f71097bc3409433482ff637446725a8924fde35 GIT binary patch literal 89599 zcmb5W19W8F)-@b=Y$u&`Y}>YN+qP}nww;bTwv&!++x*k_z4yM~bHDGuV?1Y^sxhi+ z?{jL@ntQIj)|#tiC4fO70RX_k0RYU}(VPFcMVcljBnj^0e~|Tl+ivK>x?Z z-cA2{SCFrZ8Q56;<%a(`2KJw0^zCh29E|LpZ2#-%KVR?975{g%t-Xz_+kc&d{{J&a z&(`e!n#aJi#E=6B0Py){Kym+Q3rJ!68XrP6mk&{-YV2 zOC63ZS4l3Cm{S(KGK@1dk+BCXe?(7`)Qf1%+yc{0L-Bgl%EI0lInaftVSdDhc+Fwc zUfYTYpTGh9I0ARe=*Mm9dp`?pcRx(3E#p>J{KTWK3`9^|B&^M?%86tgELsyb8zng} zrRbL%2+W#oD0~u4iJ}g30xeuhjo-VYweTMm@fzHA*CsA^LUNg1r1Gt*CEIA;r*T45 z!>1ng!-+-IEAAYS%ZKp_+EWPfy9;8u z>{2?pRNc45`t;~*`^K_f0YAxw){Ox|D5|SHjC1}<^Rj8=@%Da&-NL|OmJ=xfg=_I# zd$0@1+eRhd^c=1IK5!5?Rrwq%p<&3`aIhO6A$fghvb1{U1aWReUf8Tvl!Qfl*Pe28 zDuvOJ#}*G=5jT62%bF&}fzXf`dq3Qdp9NVl`oeOQbc606w=fH<5O)|q`Y|xIwziD- zbD~bX(Ke_k?wgW>zGS?3_MWf<#bH_G_Z&(FHo77C%MXi>c2*^M4(=r7i4+?{?Luno z>8ph$WaeZVC9>Ar6#owoJM!TxsP84jD(uTC)_T#NYcRHOkHD3=2;D=#!6Yel16NPK zgwfs6a7JqF)YY&=JVHjPwAoUk?$&52+vSe^O87}U3$r8(VLp8aC*!NGI*QJr&}f2{ z+1U94J8w$~gOW2avLw{4J6AJy5VSO6tZ6M;#;lSsI=QQ5E#;Ycqi}MYn%+SzPbtiE z%F6SEHibv3e0r5eIZP-)T45EJ#qT%!%m-`?s=`lO`DXg0EVtAL2=J7?c?13x4{>vF zU0q*z5cVEJ-UA|MDeEG5D{bv6wb zgPj$MnwHpK^H|>k`~7gcWBA9dfBK12Sa31em<(PH)jCq#^1NzfCNc;# zS_Qk5h&CT|K$>~N8Ti~cQw3Kw)9!d*(zsx+X?qDcqiZAG1L0+kAglAjx1W8SXdP?T z;`H7t<(V5lrbjXhFAkv+XrH7t#kbT`6Jt6EAUemu9DjJyW3ld+WwkOUM1KdbD#1^C zY^%$f>X>qNg_u!IVPA*Hp7DS=I<8l)$W%CcP4CttJeti>_ z-#wpUbYC6QCPV!kqhu8u7nD(XughZB)bY^TJ+spHV5cPIYLeRJj&IdWh*vKMz90wR z#OFeeuT#%tqmdpcp(P0u;u^_YY%;Z_WqvHprCajEsR>(JuXP@*SQu+8tJEc1o3rgY z`$a{CAwlkrA5G8d@y9`hn2^CtARJ%(n)Qi76j}*tpLKT6Y-qD7X3qbfG-vsy5JcSE6>Xjn zQ=QzqfGWiDx8#T=3eK$-yYE2&F~0m6R3BX9XxB`f)O$dvYVNB1-{B%yiRFJ>efz7G z12g(>{#g0$Z(Et+UrS!&%i$w`6jN$xsFaloT_K9Pno8)3-NDR)fP=*IN6x>P7LVz1 z)Q?*l7nAageJi-`!QG0X&(w15vmG%!&^+)w^gP^qdw+a|^L24m=mSZ20!f9q#_zA> z{T-92p^2h;LUh20qkj84?)#yg^+e09>H+yi$DP;sCR%lrW)+>Kmf3zg5Ji>8)(Wtn z?ihAlx1x+0J9-Z6$iqIZ!Ia|^Aw8C81?1}}2J#(9K3COPnt? z)1AQ>MvH`{xn#OrCVPQ_#1IA%_eIX(JPS$T;%CZ-Lp<3m_ePR))fn4ph_NNoiX7;~ zK~o!r&R*IcbBj|vMu}sajJIJl|G1EAmvb3j#E^{bc2RCJ zD>EA7+&T4lSBG%axWWSCKZ85GFU+xHC)v0HJbvpA+F_PIL;6C&*oB8vTUoat6a*)G zN%`)3^d`8^p@B00T!mVlnuuA{{(EJ@o|35Z9SBLP#`knT<5ji;{YM-dUCY9M|l8H40>(`H0 za?WZ8tIzMRA7e!nO+?5R=3t9!Wrjxy+O`U`3Ia(*3DxM73m6XsI;sX)WVFi9mR!)- zSZn3dGF`vRmXr)bIAq%qozH>b zn09o)pPD(HcxYO$vUjlVTAJC98Zzq)8I-s-%#jrTT1=W*%@04FY}TZ>bxARvs#pNx zyZEuJaELv-BI`0EXz>ieoN8Qx5;<)EwQ(&zT81hT<>0^ph3uHLLmg=0wj+DywjtDU$MA?bimDi|P4C1ux zs209gMGoS(do(v*wI}gc2m2X#w^C%PcJoqGt4(z)W10O%e>&~eQWtoPu2Q$OGPNL? z1UZ2w&}(BRwhD`;WtTNJs-#DTQK6naToA%CgFMe4h~HWBByd^FQxr9CPo@=8)zpl) zh&1OsA3?}lSXjAm#jiI|BW)(EbZQ>75Xj1cRz_a5f;xv*at>}=p-{0}FK!|<2dnpk zvxaH1tRX9lu)Gu{%x@q!gN#~f7FPElwNWFdtE8eDbU+uWMny*^gjz=rBSE#hFHeOe zVxO&IBGTWkcJ{P1l{a>3K|M8t9^mJwH3e-mb-`a#Q$veR(AbUlZ;G3gzGK8b7WXhz zz4@T0nlB%SpYu*Aevxe)Bvi!;vxKt{>*2L`7b9#I;G}A6DH4hxwlzLlR+f93-Jgwg zB%)Qb@W>Ag&O@Cuj&vkp$K>Y_wHI`kD9D^yXrPy8`1K2sDY&;T9rS1`^Nw+R3Krjk z`0_9kHUF?f3c?b~)8FIVkV<;t#4sJHtB04(frSVHD%4JT^y2Y8Z_?I+G>>X_1)omp z(tAeyrHG~>4|v%e9lFIA8qmeF`6}2p-vEPLbK^Iv9_{8y4`6PsaD)gQeiZyXvh^h- zQJaBkbueEky@`hx;o2wz2mR`E&~tdQ27%-i!gdku(8Lc@y`;(pCzPWv-H|5bx8a#%tiDKzpWD5ccgmFCZHegIkVOal z*B6T##z+<1^wqKKOo-O`p4&2$4v_<7`gI-mcrnDCWMNk_9IVo?8;zKfehEN15woka zHzuFE6GSmgs4}GwIpWHhwTmU^VKol|n( z0xjkUKIHbwr<=Dv!pumor7tS9-VIM}6J^(_6C_}pNt*sm6i$^~ z<1Md-E8gfhKiCT~kBZrETmhBhSlIpD*eUdEO^QPet6t4mRvCk07+HUsyR`JxYU6$l z{lUhC#A+s88YHdom=Gj#0-CJz#VSYJ^?1*HLX0j^$2!>LU=X02H)%MGyrFX4lm03p zMnX*%EB}xH<{oMGppti2DnS=svR&Gyg?ELEU_IEsxGkuymts6jJ(}a)naa4XhZ|!p z0UYTOy6I|YB(`e^e2R)iVTU?^i-f({Gu5comar3(i{y8iBX{e5Lwy#msTaPJaKpwc z2Ge1#Z&oCJ$B?O%26l+PU9Q_0jNl2g^$&S846M+37y=P-g+h*nd@6`JtjEwwIH5UG z4e5ovdRkApAgC>ScFodWZ&qA6g=K_rCE@2{Bh!<6H$6(!lROsZ!m|0Zdf5(Oodmo6 z$x7b@D}`m}U^&*i8c6cho;F!pkMkp7-9*V8NB9wzWklK5`n`4Ur_6}@_`GC>8l<0H=HmT0R{mm}|&1xl^B z7Y4G)w~tL?475^}B1Rrd+V%!I+Hg~ZC65M~NySukkTD6XGQD&t*|{?fj;`6%Ib(A_ z)!f9U2G5wP&3ijKc~N!nBWMoH?4-449WWxR=Q*0{DdLw9f2ZV*b~bkQceFBJ&lJCt zbL42{)Z}H#*Q(#L?LEx>`isnc3~}ULKQx?NDbDd$rMK| zM!h(hZi76gzzZ|B<_l*F7B8Jo*^xH<5oOlCqp9=>q^-Q|st)OTHPvqUg#p1u|hEoBi#fWOtA}Ezi}Y)Skvl z>LFt_g_wD});X6{Y?_``b6>C;Y<|{cVM6@`Eay6r9mN~&vf|3*DFPC=_w{+-M%a6Y zLCTTO!f0Qcy?8%^m~=DZTX-Bul|UaBz7lZxF~_zs(>=+LT{187wevfA7!7$32)bi=5+%xltjwE+J|Q@Kt5A5-_KWe zD%uBPv7_95!(*i9 zQm@N8=os3#32%otPq38^5=2$-^B;wc{Xq;BsWuS9&Be;dP^+w-GZE+Vv+_`_@~&^C zV0~-n8P-O(+*v^%y0rmxf6QngM;mXU>y%%)B4|$xxCNW29D8-c1~|e+6SbnpKxPAu z_CTQ6LPRTS!BPi}wQ_rMFgQ~3iN!04!v$!nKX}y^H9qkU8W1h%vbWAKn_=cjV5OTn zg1Qf0O`&Z?1W$^4!|2ky<1AgEo?v_0H;>@8+a5{u=79zaL_?e0#g<>Cxe<$C_acPY zg6N!I;hgCE0Kz?8Z@?JA0D3f?gR?T@fSELLvDsn+qQS2Hp4{tB!fxIF##g3H>YqCc zm2ECFeT)7SFzJhVw+5$;!Mr4^Ux0nZq*S3Pc@FB+ghmAEudU^OdUc)A+#Q?CbyNz@ z9#EajaYS($1W+_M7@z?H>Z%!RUDMBdGII=u4q8zQjG2e5+(&8JTf5k&zXUM0O{x0L zr0-`fMspwP5-8qTbQLF=&Ridg*iXPNAeC#yO#qcX!0eUNEzHb>nMtNAI9n?Bt)Ue! zl*4n=TcB1P5!l8Kq?~6=XIZi{U!VRss7})$pWZkuuVrYR5F1@N)B+Qhd{np>2lBN* z2Xc2MSeD&Pw0BIH&qxRECt{k;^;##{C3aHF?}*K?5E?DHRT|eLkh(d#)8$AHta>#_ zT>~-UNY=YPHZmXY%+mQ!F0T4^?Gf7>ac5wj+JkBUE@l|UKBfW#>lhO#!f?&koXIEt z_%YUTA}w(uBp>ZaAD~Lbk#wz4AHQjx+hztQXX~}moADZA9(9*Iq`c0Mi!+1C8dlo3 zaTo>77q`-Q)nwI!LvgibI)i#5hoSc+N)N@Wf61nxy+A>~OG5_%#Y!e$?5lT0>|W|E zI7UDaSOAV=s$2euKryu^l*zHg566-_lq&r+R)7TVwdO6P{ULuuC;ueX1MYbFipqVz z^F+I5vh`x+IU91jSohLh8cdiz@wC8a>34~2x{jS<-P??)2)+v2->lDH9U|chzCgY~ z30_{Dp`9JdOKS?XG8OPh+XO0cwltJc!Q8)aZ;3J>|q@eY^tw!bTGP0n_-*^Z<~O1j(yviZjvg zq(IgByMYFbVhoj#Y)lOY5EAo_z2*{BiLEb^mXsuDS;09RdOt1#4Q?vXcMI1o-WXC& z&lFxAA8?xj}-u~Z4ZH z19}6D8vq8nQi15!Ap`KK1MrLi@Kglo(gN^q0DK|`d{PH|G6r;&0`N`&-J(JDy+rVh zf$VO9>b98#d0Tk{{0wB;if90sGB&`SWP|PgL~ogG3tApb{_W>WGoo3wtY3MMR_tYA zzi75_U&wnaZ*csGlrC|~>fexJx)3N`!!#43D^1|s5)t^gL|(QQ7}heHE>t^Wa~(~ev@^7I+eq^l3U z%0Zqc?I;Rcrffc(@v|Vc_o_jed^njrIGJ7ZxABrj%wM`;?yn{hFU!FBA1R?PDz$vx z0i`}La-Zz^A25RN8KEyN@b{PaCq5CSK5%lM-1#5Cg6|=rFFbfBpKoj@peH(w!ta@u z^FEOiPc6H=?^Bd=JS}kZ656#AU3|G8L>BWo;iWbB;}fSrC){#0QNSULI6$+3UmqPV zl=7g+=?LJAUk1&+@O3hN_e%BS9uKUWt(1Yd|K*!SrkohPJO$V4CUMe{S5wL`D6oK0`V&sV*L+2JG4kZ|{JueZq#G00$nOY5W(HbaM-c{p;-1&FGN{s( zJK>+$1xbC(j!vy*BQBeFRVnMLZ0dSIZ^{?Ey`(A#)l7-#iZt{Yy+6;@j&Z4{rc0j$ z%~hcE%TH6|H&oPb=XVd6>1eeK{pzAgl})ggyYJ|D>wri_96uwV9F2MhM!wGc;Djj5 zwm6-8%;@g<_y%XBkhpmbGl<{oK3GGSst!vhpB2~-0QO6Ad$k6`dT<0GT>jV(r1ncO zv3)oKupU5cXJmV|C2@V(e6X(&_DfL1dNlYUoq^a7w^MAC-(WpjaA7qP2KA)KU^OfT z^lE;DbcSO;fY~o)4C`Hfz3}K|J8SW>U25xMJtNqwjgg@Z>0Cq$sS<%*( z_lx45Ld6Mg5t0UjcfYX?EbEa2Ws^?&f!H&Zu#$`ijIj;;ysEP2DPd))3E zC}D*|T>F{1qez(Vl)2OKw8trJ$34#zrI3j`Voq7o3dCpkpMDVmW*k3!6^dKh4j22| zm{;lI?H$KkPuy1o%KWNTC*C#mSdc`ba zwDoR~9)F-XKEB=-+8fKc?@7V+noRM!-XD6u zGE%|R5uSabH$ND=t$eys8BX~n+~o=LeB(rUqA{FeL!i?Y;`!Xp{d7}+)RW?K8bM>= zb-PcpC7h{oyDt)OF!t+lB*kuL4CGqYh34!mhQ1&P&`K58^LZxs`6i+3nO@rS zXT;muIusZ1bx{>MXEP$Y5k=5QbN!#I%EZwSwMB^pUn&C7jc-v;e@dVq*4kM!Oim2C z1=v~BPEtfUMA=o-PclT_GVW>`W|AD0eEvrnZ+7M2F#9W~|MItU`po~z>CZ@i<@C7} zlB=sK6zB6vg%NQ~vCtz2|53!p7b7B^?}|UBw+?}2$XF(up1SdiecJl=Bp2Ks!Oe$n z*x+%=tLT-jF{zw+hB-;DtFN}p9ZuVz8{Y9e&M@_qjNp-&MBw;EzZ4?va#{7r z&z8LA)1Qwz25*H)xUCvhjkrv+{WYBeSIlakmq_?2tRQR^l%H_EeK7m6 zr0i_9jxnPpiYKxue(;v2w~2$X!CjYxI+=q!MeSGJ#Y-J4ilM`5|BCS_p-vI*ashk< zg7&skpjsk9plW{BuMmvj{m)So(=|7IvhhL^nOFQcjpg}%=p1XVS)Y%vc@%XxAx>)+ zcW2HUZm%haP-Y|JCc18oHbcO57Uhb4>f6W-csNpJ($ic)I9aP^>hAOu()Zl*Kyt4! zH=E<{IP%)RF8-wU<0eo)fyYtanK;RIIJ4!Uub`){OOFWfK!H{Mn%X}Gfph5mGPcy; zui^i@g7eQBe%n_KKNz)_1*j~fuu30(O;gApT(Gc_pD>VMr4`Aftlgq&G3cs>^#>vB z8-O>m{+T^5P?B;o7sHf|@g~-JOwMK(u&ciZOl9tRV8|)A^;0XEtP50<4L9-<&cFd_ zrrIqYiH4z`@x+i3DFX^ON6&^~jrfsSF~0SxlKRgs-WrGKt_#I(tW;n`RV*^8*MXVH zGr>uD;RO-mIH1cToZmtfNkXUn2N|4r{MY)gK zI1W!alqPCd(?0D+>>W5oo{_*tmEF7iNkJy{i+ElVL6G zv&YhQIhR#KDyog@`)#90R1Em{??RYiaM>HHN8Z?|ol&0k>P_}c}1wtubsF>53` zWG?Aq48&k&Wbnik-V=N?p$UH&aTExA_@vo#d^|0DlM_kkYOZ>&AWu}Nz6aR=gxWvyPa@bx+Bvke| zT^?@ZBQ&p5On$mN>!rEJRd6SrlNa>*>XmqewQVHgVXhdA)H2Hp;~}ifM zUX9SFAic_^ulqFl+m?A&iFalF0zdPFFY&+YqAzRK zPP5br4&sWoW9i{qld1I=_D6?1f~5W`-(P=~@9(I;%J;jC^3F$vBv~TllpBGumuWwZ zQe8xfpsRyMo>*DqXLxKxU-1hg@)Z2k!@Vy#NwcK-#;dO5gVin{id_Y381ui4t(@Dl z7m4UZQW$3J!N?YXHa0i^^0)F5IENBqYBaS;TzVm|j^AVx!0REGb))$G32uSX6?K}V zH3Uix)IFB8pUCmzcLb3V{V@oiHTd~oOn@{>k*LR5quhpjn zK?*a@uln&^QCbuMhh5lPDP&re&%!!8nhwbF8bes~Px@oOI|2{P9kswiR|GweeTC>qppU9~|im6G0FfHPOMq%s1Mi`T$wmt*M#g?zKLJeO}%eP*oORn+aY4GO{7 zk3NI!^IIy#Yep)~E)b3abZsaRC;6+W=twv2Uu|vJSS+3VW$W9&ZEL1~*;+#8e?%IV zNXTCvmZMJqUh|;92Bsa{Jw05bGV?XIY_T^-OjOj z_?BziIq@5{uQ^G%i=uYH9iW;E9^82x0YdUIu{dUT4sW>&+xRT)I8D$P*i1?9(-{nu z%gEeKr3S3ZOC z6Ie3k8itcjaJ<4+OmuUwf%rj=E26nH=`4`YInuvibzPW;H*i|lQxB5 zQ{5QCz7<&vHu7kbS*dS zNbsP7=z{+juk-zb*Hiw@>%w2WuAP(4GW3Vni^RLmzj(a^jpU2h8UM}e;eUADl2BEM zi!buk5fn{!;OgiXJ9^vU#c-{iJQ>!q?N%X4SqM3$cE~@OJ-7(*f0$i<2%;-1~Jbj=7*sa+CVLuXs!sdde{K@M(cCl&Q6q59sPk@CsVE zx#_GnO)O$dlQ7|{RO>#_SrTKG$z8Owy<-5!R6H`jf*MWKz;pYfnP986TTE^|Vh@Ems{!m6 zjkaiy>Z*KILF^X{oL!+*!6Khbz0(|zqQSp+XIEG;VH=9VFu0ux_&FDQ2|X8G(?roe z0HZnyc(&D6SCF`~V=`|T)iXy3AqevBCHo_4(Uu3+UhmjweyrFveW^C_);D~q=`C6! zicl~*oiy{8axHzoT!4eaDaFzO1i8+a3lQ5>@2T=0G#ce7p=_*$Ok5Us!_lqUYq4vJ zJZ%-G>vme}PKp=dABBAb`YSyUhbNZye}O{r?}OssqV0c00Cq^w{{%&ARs9cl36!!g zP>BBl#qYs&c8TWp1$QlQAK%SBKs>vxZ&wBI1}VUZrH%DxX>PB^ZyTmQZ*LFZyP0vA zY6G2-0Ifq>k#?vB)~6J^J`(jDQkRgpogTcXwc@VFm*JqO>Awg<&!%DVOX69E({xT+ z;F*)R`cqJcQx6>ML6p7{HYx7gz=&d7U8*_%Lh%3SHcvNoWk(G{A0p$dbA_@c$lK9A z4__Lr;#bkXe7+7VrkgBN$-jMmrP0o_Yurd(mPEsC&2vbY@~kU&ob-2^jp2^zuEmn= zi8v}ve4R3R+gBRUb(bB**zFYJ8DmZT%{<+Z=QLn`I=UzhS9QHnWuEpL$&nee5@x@nQOgE8W_rod+ohL(P+tE2oJL&{R z=)eVqxN(o`=}D6flPNcdnfMg;Ymk`Z7cj>JwF)Kcs_`S3I{rF7HC!fl--E#ewA!ee zQm^9jU}CRRB9>6QpqmE_D1>T2rDn~nZ>m*aaX`%urnM}zEmDhZ(@tD$IqXnh4q|*Oz z7)bR9tAa;mw&jtZzI5~+*rJ}a_2)qB$1^1t@P{v#3y^Q;i>&H9CY_eaR<|35-r zN1d0ST(EXLy}+E2Uy(o{d<=TFju2|!+$W^okyabgdbb+U`In40@M2%$OU7%h3Hc8h zZzlm@K*V4JjVC=W+kRO}D{aCgHbj*Pz8bW9oz{5gl=cl`e%?ZRCt3Ei1I*EWy>ok} z{FjVZKglwo1JAtCcVXc{rMAkZ)GMzv81+1gzU2dYariRxOXCldd!tc;3BRU3_W=7VI|5r1}n(t2&$*&$3udjX@ zs{cM!*~s3^*iGKZ!O7C`pZHO-P*_!l=cLc7~oryp<-kY-o$|0l+c?Ll()RN3i4GhO3w-$db3!jRI)|R)E7&x3& zlCPs|nXM+Y!>WJ`rWm-H)ig6JXl-qxZ_!*MN27QYcR?u>kGbRO)ICw|l)c98E0>{Q zZP(SPF45RXw`L9sM*y`GX_cB&phaGxwOK8mrn*2UW1*T_La_+8u*}f^s!qu~LKn-? zYL~CH2enx(O39VBH!DrYq(Gr;qqmuP5|~rGRO^;!bEzew)L zr0{ueJbN5yV@RXUdd~srblOe=PM$QW*K%vy^2iB9C#__ZQt;1CwuNcm;$Ap)+Rpr8 zR;@?b;N|eU4y*S%TRe(T%WO*e@p+6Dmigu}*a*eC|eT7jc!d2D9(S@`G-e{9xh)K(!SkF%+&BhSQ9cu?`>8f!S zmP(KUAk z$h{}1k%^QYT?j3ytJMd_Ji-uS&3CXr!r9YsNr)8CRdI}A?3)m0pk;c-4M$g2fn7R5 zeVWKt&4SrmPL?{HnY`Udk7vh`f=q}#LwipSssT-+u{4tfd8n+aME6eblY-Z6joXL@?=x1-6k@nbn*%8R% zx~LB5ieximpMC9I>y|u&up&tPiG=?%;NhY05@)wKGDp7^1+_3%hRQb6Sy+fYmQ!Re z7kK11wWy)Vd*tY}vBvto=?yyE)&$7a4tIyi_akoO{4)49S1hfLC~F`Uf6Yw>Vsfbc z8=icU=A2Jpub%>fw;kTRGLAf-9QtF3FRV3aN6RL*^E50c6pVfL4VIqK`v+xH_|*AF zDKagHEn_BP1MT&=53e|02$C;aB1m3{b4njR&9qW-o?@atXDa=R1@*4`pop*E*VZBJ z7B`jSzEO)d486qrj_Bl8(?aim3UV^JcAu3g>X;wFAHuE(K0FIr z)t`nC-bBdWe#N^Qpa1~O|DBe;y3rNBbE_n}Hx-`w1X=itqxW7kNmpc*Jn(BK!UMfrQ7$=MzvDn}M!B zHi7_F%U&QJTH;z6I{-b7aMRBlSuwI4-C&xW1MpGD-5K6C#Sa4-LZX!r#OPwd-znI% z*7`LKNFdKLY{GK@NrU?l^WJkEX_do;*ffOEJhI`@?3@7^>-;(^p%!UgTxXFkJ4<5$|}1WQ_(^>9Y)RwY9x{i zbp858q8VG@HVs%w3xko$5MQM=Wx7fDoXuueuG*l}idKOedvx=jWTyL%Z`;Efx1C~I zX)aVEPt6({J3Vcs<*gOlIK+&EGi7)|ubAw)W}>3AArkQ!^RoSk!QXP9k=4(k1zc3u z{jZuOYsAZpEJ|ghm>8fl5uKZ@QzVDVWN}GTDG6n=BV?jIx@l)I$uX00{f{P?ZKlFT zh#EdAl?gKniefU7g?i|NfF|6V_Kha84yF}J0YxDmh1L;_?@3{;Bo}Cv9VkTSHZe;+ zS^06Jpl-y58Is}y2+N|nklT1IWY#R|6PvkSrg2iaJ7So*nnOYfN3Bgaq!=+UrDTu9 zAm#hn;%7sm@3g_^?gAlHhwpdr-ROUkIF1Vb0#D^H$%89;oT>H+Mtr?O5X)kH0F@Ij z`SlVhx{|mo_J~6MJzgnVx?UwoMizh5mNQKr52DO2 za=zP06Cw_?ReZv%k7>tA@C7zjNKi;pNIg#SS3dSIqX;>XBAq5l5kG>p?4IOOQ3g7= zQvmWdr=49}RM7JO+1T-Cl_+DkitvA}kZLFZ0P6p~N<{VSC2dRu?2YssZS4Q)y_GE- zkd)B9o5d1{0_EkcL7`?$O_6?pUN7Lo^ZSX%>ni|Jky_3%X)T=%u1o!lV(`BHkQ>7A z@qH=69gRd478#Ub-?g#F&S_W37$p&HtBmlxlY5oz| zkqW6#4!JIgoIo%1L9uH|T`HV%R~#ypdw3z`Es5 z0R$R>=$u?^T+;A-98~7O60zKy$RQTGZ$m*LF02x1Uc9H8E|-;9OJ#!DT!1dEHiK0j zi2%VTP*#Q*Y=RYB@O!@A*dn4Woe6qQ4m;`q5%!S6m`Z_ZqP*I;yxGh!(PT9(-rOv_ znoBk%{H|Z(MJ3Py!lTVEsl-@fjzI_m0%9BGcfH%j5G9KOsU*swA)(n|hDG_dD0tR9 z^aL9b9xb~v@mc22evaltCIKpD^N4b$68M%aD`n))N_b==84Sl{CPcBHf~Zut)m7?I z?#0$=j~APjN0>Ilnu?VjY7=VZJE^EAOXh|2u3Omq5ee=(=rJP(JJUPKM5suthxSKGPmlY*-VM#c}aAH^zi=IqDu zGiv(6MP}0?AeM~TQ7h28-mTgQ6CYBjrM)^+t)oggbEFOwB7RxTeFIg(<|h|tqC~X( zPX*Z%?eIOL0c~sIB#i9hUb+lL!n@_l+ifZADP~45F_b(U$8j@*F!0|+Q4C@{zTRq~ ziQ~aaa#I%8_l|_urL-|S@WKV?Jzb=T`r_eb{zMQ3pDmcZvIVSRaG{M@ipWZo4N&f} z3AOF{6wTi+uh4wZ!}$BG@?&lZ)Lrp$20%3p!SJEKdSkycBRm?`Bn47>ArG)cMqHTW zFV|OR&|V1U6$~y#+`uo2qo0&&sf^^F+bY3`%yD5ha_%A7ed0reYbGooIpug2a~IB^ zmiGYQUZ3}TmIhok31S6>JZHgV~Z}*{~C}R?H(dC*A`>Jn)HF;Ro1j{9a=GYHQjou?=m;; zfR~-_NVF2^P=hogbEI*~Prn@?NQ+f?fKC-dv!%p$39`R<)fRG@7(%nR<1r6<$;g#u z7Jz2n1J$%e^!5{s*)A);;g+kFnA61O$sWehq4Nz}bMx*H^XR}mD0`Hv)w)~a#R0~8 z$31J(`fe-zF0*rgjA?12X(iy)SzXGOYoSt|&uKQtyf&j;TBHd_k!3ooe>JIV%Y$h^-#qgnYC;Vs+EXn0tMdYhYj%#=EnVlH{~Dz$jWRZ%KI3ixzgEaYquFXve7-0 z#&znLTrP}u;{_$|d1xtJW+?x3$(iXp)>b@X3g@6R_aIot$@gsb>9T0I6WtQ`VXcL_ zTQwtW-9lfPr{cFnrz;GDC$_nJ(1R-?iOY)S`Hh>a8(bQ!D^7&RuuVF+XC}C3*%z5W z{q_adv5O^L%PIDU>Lx_SEwFbB;R`J7SF4QMJZ1dg4nf0p1^LvNIqDUc5756xVOt>Z z(tBUAc*0jG#q!_TSj64T_MiI|F>6O7djlief75c6vXu&!5VAKh#Im6pWMQIg9SweC z2AV2asggQ*SmPj=tiP%!nKiQjJ<-|Vgs{4g(tCVn_)yIImd%Z8M}wFEZI6M+9=7qt z+Rw+IQ=JYb%sy}TrG$k441t&68m<-4 zd|Y*7@T2TRleFn*%$t_jC_mc`P%8?<_P>u+UZhvYo<`H}DS_xw?o%BOleSITWwl48 z%Q<9~Og&VUZ#A26KB>(&KgYmmKiW4BX+d-T?`hB!8 zBn?PH0HR<2xGBTXS+1VLm0(e0wrRZfX{A~bNDaNfe8tG1;weyL9vJOgBWmBi1D5o| z>hdiCG;T6^!sX=<9*jcu0zzLg-#QHPzKR5B+K0!*{=WLY@S@oeHkfgk&T_U ze(LGzM30L^)3aSMUb#1R5rx!aLi)L-_~@Y}-5OT6BmCoSU7yHW1#4nYAUEy6crN(o zG3EmZ2Dy0M;e3lnO|ktMWXvTibb|XO(O!{%Eu6|8!;7d-0Eyj?35FI;exA3@T%`6^ z>CISH^x`85RI{_*1po+9A3_W{-(D(RCMFvGowKKJC ztxh1l0SOO(mdh+Xp3kQBdZ-qnBSdbaCJ#5ToYd=hV>l%_0;c~)l9bIwrOp~O%MltJ z%CXdNx>j-@C-MfseR{y%sn_X%f5$Za9ALkNwsT{_F3N!?^Ncw9kMvE%nEg#U7yv*R zJOBXEeEfo?{^3^Gc zRN-TYT}*btNt$e7;XVQNF&q9cGUK2&a#vN%#a zb5Lfu)^Ld)8$$_W$PgQCmBcU;*}645e3x-j^k@_=%H-8yxh${eIPPOR@7OcXr-N6o z_7^Rq)-WubnCL+?=}=;1HTu5fMjc~8hemHY;M~_gLf8@`cb1PH#n&d+@0S+w4ah;Q zWRmAGn5geZGFX(A7htBPi5uTt>1jBjQXQGxy8gC(V$EA#iL8FW3O*){7CuCDJ_tY1 zEVfKH(wa!Lnj0ofX=ZTyJ&UZxQIsrdW8ZExpW#K?Y%^F4imjX^f{a3^O8n z+fl&AK4o*A5qXd6Xb|_EEj49^LeEKv3H}A4e#aPN(@AcKJjKVrz$;%h{N^UM30aYH2ZnMb zS!0kD!%0f=m%v_K*@r|u6J>(>>it-RNnZ1xgiboaDTZoJHy?L45>7Na0PAcM<4Z$H z_G(S(H>)}`!6Rz84ddbFY$RqB8Yf6f6Y>&x8|Y#?ytA;b*AM$_bcHQN$*2$ewo$Pb z$wiHRcR<#{{nb`B(DqY{qnz5MO6iu1xFQM^W%*-%%af0hObcc<=F0{XNh{W`oQBF^ z@rJt~bhWCpD(!%5GqL;QqDqTGBR5ud?f)NR?-*R^x9tmex|4Kl+qP}nwz=YDh261j z+qUhFZQC~b&HtW#-`e+lIQvx1RkdnWJ+sz_XN)=K_+j+2{1KsUy9nPs9!G3EKEKS0 zBS@Wy99=Uy32z_$9LS@9}B(WYuw8VClzp}GtndmV z6~Dm{#xtJ}@Ksw~7$u{?+eo4;co4F(2p4J=JMIV~GdURrE$X3{S~gg9SKjR-2tr2& zLeeh*hJFi>=H{OOTBU{@JIl+s(k^QY4q!n-A?Q+TC_o_7mEeD#*AwMQ73N`ew6cS< z1^uOj|BLq4QmE!!IFbO*#)X}tTEQc&%^G%ksrLGt$tZK=-QM4rxoH=Rt;?FSF*n|y zRm7e9U_qyPuVu5yk=d06W3wmL(KOpIENBBZh!^LCpq~ZSjSXXSq}M~&YFWBJ9Sg?p z@EH1bIT+S!n|Ip_yE%ZK%|*n6PJrtut25JSUe$F6ZZb3tj-rI_q97GB;>zcZo^XNIL~q$;XRTtF}D1!p^ZjP>$VW8L?v6@w~6{v|42 zTfsBY{qHSe?>hQgAWMc3pbnAGtzBaB)y>;&5Y_Y? z)ib0zTRHXY+V&TB-`TNJmP)eE)@WO*3KuYzIvW8bC42}OizV5o+|Ks^=(6zRq1Y#{ z4_WM+Xw@^x?q~@h-v{-o=Ol5`ArL-x+UwPGq(5)re7_|`)y}ZHB_ctn%DJ9GUCK~> zl@3XYa#so)%v4HIJuHx4fP-Z!IZ&si^SrqyIN%NO#}nhuXo6QPWU7rw|ctgF^1 z_|0exK~gphwAhQ})8PSmzMrrU6Iss@z0pGly*WCzV^Woy=cju~Fv~vp=lPO^j9yQg z4%dngo;7@7{8`I=h`L^n2On8Ht4nY(9BVl{@YKHEBfmI`rJUXU)S~_s%8fIcnqGAi zu44BcwtID}Zn7)?o%ihgr`WAH&Y(OHj(<<}eO5upoHvQ->aZUez_T{6MHhV~jJFka zZx=$wPJeByP8vU2K4m;6#Jh3<*!?uP|7%kB*UElVQQj;#d0hCCl5%L+68&NC--)XK z9h)HdpAR=f7iWwA2cY=pdG*D~qVTV(dhqABZ!G_d=Ovt-?S)JY9Zektzqb3Yvocdv z+i6Y=<#REPc101#Sm-$LYYmZw=0GOzvIGVMg~OVV!DK!b)~mT@kVcW1l-j<^zb>-t zjlsZnj^Ed2oTaufSXGtk|5iL3DoUKY7kkZgvk zNu+~q#Kxn_5#z(ioCFXTZ0Pydux6CFOT3l7D3GMqrX6-A)cVIGFJ4qy*+?jPXvm`{ zM4{q0aC7l%Tf_&VA~6Pv9%w&ZN)Hg`{@wFnUf(3K8ud@VaKdg%#DLt8MR##$?J4`q znmvzYcS;*D$^B5+(s_P9uX8lj4u8ybS9_c}I5~qf5oKvXlJ31)nB(7>IHJ1JCh2hg z{?IMQ+i;gmHJU$NGR%JagI~^co^CSz{DKoI@Gb`by3rrgbV+^Yyl4P#5Em7-c*Ugw{Q6z3uFr|QDL3~OXih~8g-vH7^2YJ(V(er`$ zfM#wtEgu9(7x2%6+E*m=lUyEfkF=QFU#AqE6_^VuuV$nC{_!kbf{WlU%=fe^`oC4D z{sxRQt4YP5U!#$gC#zLXP4uhJi%p;H zm+)gadcY@6D!;v1&nxC4$hl)y&<~U>BJHf4($$rR_wU0!M`1Cgkcq7K;x#p(*vSs) z>MXTZ?55coxL3Qpx`52EzXEerdpHv?UJ`ejm33ihXX2`_il|zZR+=zxq#v`XXi{jC z+9}2S7_aRHgl}<=aMh_FtXPsPqy^GUv%0c{U7~o2wJKQ^csb9!s{9WqW~z_F_yF&xQZJ&EHOK=(GG4)G=Q$_Wvfh{|V_Y6w}h!(Am-s@UP&G z>XrJzh!FI*w9%T{Z(Dj<+JDSj*Kw9#2Y)i-yeQkI8>9jg!+Cv zucoJ^C%}GSGyP(gmgBmJG$T{Z+Q%R^k1cQ3mgd(r>l>e(9ps)C zdy+9!*!B9;QKB<;E!1VLDxv$1zvt?vWPW0#Q7=~ldT06_J&O&t;&6_w^5@38^69CZ zRkELo`s#icc{1hZ5tWwX{NyB8FvHqRYCVCEcEH}1K6`m%oP!7f%rq=4q$h^i<`hd0 zMe!~(uGfD9ME>yQ5y5?>LHDmT$o#)egN9C)#{ZTDRkW4o1Tc8l(3DnD5D>1y`~=2G zbx>^wp_!xLRZ}T<^Xp+#U2|C&WkuduyI!c6x%BY7Oo#AEecCAli%=6K$=bILGOo^> z+h1PJ-r&DM17ifxi`o!|8{RP-#s?VFdvFfpG5Y<2L}8m**3ClRSjQ@FZNqcvyGOU| z^ZUw4^S4{`wEifq?=-GPT>u!I4@FdgV=yx}_gum@gPQ~@@_H(j=AW)Jj!VGWJfKay z`eG|}fv($7M_machWp$mTUb@6u&MX3z0TXkC3QVfMVYz%7B#j!&y@Rsb)T068l*%L z&6TL|UJtM>^N+~|aCYTp5vNo`sgf;;m{D9Uj9bpsZ9?yWZi_6p-UV(88I_pcO7Ah{ zBZ1pc`KJ4k*6k@KmtCeOCz-a(ur(Nymk>^h!PZk+BN)x;H6f22kea1dHx12yq_40*I(gPo`+-<>?n4|2w|49PX zbd|PfoGWKJCzzgufV*)#6B|%P43>#TC)`B6=^($X3T`oSI<<5BfcxK ze79R<>H#zND?dhpDL`{+dSl%bX=OgDh^Y4z^Yx;Vi87U4O~+a|?glEeDk@K9sAm4K zt)W%m;!=11rV~N1rpBh6eB-pw<(1pT*A*PmqvYoPEo@|SZduZ275?=x&U9J=`*+kh zdJS))Yf%=cjsU**0|CefMoz5H4-6ZSUqbuF5MGV6&p4Ayy<<|?rsiaP#EvRlxgG2f z%oP~m{uNyQ8KkJx#O@aXBK<;QYf!DrdJ-%&B*H17{1B20fjWJrVTkBsL}KtU@whAE zN~bI0HgT>P9-cLb~Dnd;+raN4kBB|#a=7AbULx+-ku21BO;qb#g?fqG7p z+7cC0KMz<{P8~uV<$7xjr8FmJf*=G^nt2QpSoS(GEKOpRPRTngE)Td8fQ+zCe@PId z2cqKMGYBc`&pbha!8r1Pz7`E)G5XoE2h2FuT(kIpC*A#1Wo-EQrF?#cm*kg;D8v6E zyuREprA^)cEw#p zUE4zapdfRAA*HKwP(0jK##~Yk$sZ9V^~HYAkl(IHsoE`y2t;9ONgO(A$?VBwxy(!J z;l&JRx*XFml1Nb#c7iP*jVb3_Y+_xQPs6sFaEUk+izT$Qj%sQwu|0utm|(j+wFNKC zr{R1h-ospx7MrslgGs&(CWO-#Q^zQ9x6VYUSIsY__t3U(tFNd`(M_E`L^GQ{$jQ)QjnP@(oy4^+v^+MM1f)87#AVX5E? z%t(5amYHpwtz=qRUD|>#jaZ6(`0$(IW_V$}lNM85G( z!0EYXEjO8Y4A6hf&t$EP4s_}5?}d=mt5MawFfC0a?XUO@Mb+ErtHKUJo1iXv!b}%ft=_DwTmpZ zKr>}|3=M9l=lTngytUge{#mG(AP5ELXcrW{AHxU(YIoxrCZ4P$C&(1sRjxM~BNrAS zUcJUI7{+`{iFe9PYDgXGbe(ro6AH5&s%wbdx$t1nJ$IGHtavo76-IJ27Ecm;03E2!hk65W( z_+yZk@ZQxik=r{?w`=0EyjP|LZb?s0Io7+%jhnX`e@G8QA!SPo#9Y}} zG}3tw_T9SfrS)H{PuVvg=Eo0ECzu1sFWrdo4i9~!d!W5PnWRCoA#5-IO`!8nF3F_O zc2fG{E(Ctjs{Ug;&+=bjY+&4$9g-lzaQ7H4j!rZ_QDJ2Xm^N6{s`8phJeGb0pCM~6 z!W_Dj4t)#i<%omITk-MM^v`q)Nw4dL0scQ6?K+B-vQDGtmwL7v*UVQz%m z+4Cj_j4yAlA%z=VKbK!*I%Q3>U*8JG*;TK{Oq7mO6H0_`4S_+U|Q8PG;j_idDN*ds>qAmHAX zKQIl$G?;3L#$ngz4KQ1R<9y$MJvAPqU<~`8Y&UgI+gyY$3dqJsX6?vJSl4{A6Twrj z{?`&&>%w5Wsoxl1OQ=sw_tU<8Fz%1&<(A012QJ2Of-~RM+9?#MP7GlJc;6KqM03s+UT{=8^uPR|ZWWFI32(DIlMg@%T=cmKz>AZD#^w0w(na^Dtn8ptp?@ zI)*GE5#JJpqE;%RX%vRMf)XFeFs3xB)X?b&DVkYWfoPgZp_(^Omt*o-%#hZOqDZ4P znBj0ooj^YaEj?l)yvR)UGtVQ!ER9^vd~gxRL58PHVm()tMa$w{M28cQ@#U>FPrg$= zJVzK_0M=wNZ(H^j^SMs^=jxr=!jQ|tx9ZhK0kwAE`-`b$<@>*}%Kv#Od-qX-p1)qm z-7oL#|4?Zwn>xChIttqX%q-1a9RID-E>zQYLsmuklmjqJ7U_8S?|ym81l=Ri`7IME zQ6)=hH&Ch~^jbPf{49#+NTmb=?Z~TsErRDc&2K?#D6dO;9nkt?H{14{4tX0A0^oZiubp_ z<1EF5=R+b#@D3Wq>2FDIduNzAi1q)(nk1VJ%ID(SKjOqaa`74{OBJ9la^81AL6Q(6 zqqqWt6@{JqzN5TH{C$ELeL|DjI$e%2{Z40$5)Og{x-QPGvd%ma$M?D7MC&ktmioK( zkCrPbn{5KHXxti{F>Z<)`VE4`zZyy5YmAf#m{h1FOSYVj5YiIqsluJUdQwlG4NW+nK($yyUGX=y^oWi12rSpLZ z$39_R-)A)E9!I6Kb>R?rcY&9vAjZoMA+&21D!{)D3+M}_3MhoIze0KDDOfeI=%8SVvnh3iU$y68Cqi{b-R^En24w&?H9N1%qXOW`FgC)) zz85rY*I^*o%vd--NE2YaV3q{HvIL}mn87}GGyqJ&z|B^=_Cht;>{IWie1-G|S$|}2 zw*_H?19p{vWcxn$7Kuv^c@Ni{?Z>uuRBSR}tEt&9H=p}CTY@6bF{!SpQvS%^gZ90k z9Fuf!KsaAT(KRWxtQS&S4OSy8bTyU|xW{}(5+0vZ|DIdFq@lxZ53SE^>k0arb(yi` z;Np0iH;ybj5uJkj<+mcOlXHdB2KdC4*HzO>&_!!m+J= zYZag3!iI>Xb2UnenzNcyAttGgX46CmPQ!`N>R*v$H-Bas{8iffiJyH4UP6+{UJ?uO zla!+@Cxqt;Auw%{SA=7*9%9EUX_~)BoVSE2=A7VnWUhEcd=zgyB%6q(>QZB9@6)Hl zSnnI{2(9ronSJ@|mLVx3@1P4Ezz7Q+U=7cSHcF~oO11pTT+7RzKv_dY!%E^m3=ipq z@=1uoL!fAg#IoNvMJ>K>?U^e%`|=}PMLQ!9^m^3s|7q*>Q2tdx?22yv+IabsV`&3X zcVHEP^Dv=}u3#HWcyTKKg$+DmHFqNa;OG5@_}R&u1$XD~$3xh=?@mbR7vbEp3c-0A)o?P`T=4FRga3$+5Jv_TdM zWPm;_F%GSij51EiLUD{ucP?-Ou)J~2S;D^g>|MIo=rI@0lpi<~dn0B3E*rJyd5ESj;CjzY56R9ss;Zj{KoYmcsg5Sl zmfKjQ))}W_x)^gQ&)ev--g~Yp307LbEVxVC&>PA_K>O*$#+#4SBoU#i6seh*!T}di*Iu#Y zPP4jbD_(ECAhXbPxvoor$>lbpqcE0c!R!&Z;yhw(M8TukKZR!Isp(XlUS8v7(V~m{ z=!xux#gsug4U^z{6~$Q&U-H*6wx!4Y;sbZEMD*Bx@WK zK7DiH#J(~QVk^JEj7Km(KKGz?tD3V*vRk*jUO{alXB2BpXI-$@!YM+pwkCCR2I~2l zux3XYglUzsB&Y z|Is0GwYBt~*kK6C9S>KVptC%3_BAq>evAqOgM=~U@a5yl?)eRbG1C8z#g`D{@hUW+ zAZGwGCb9-a1A@Ecjkm5VTN)!uhm82n`z*ybRul^Yi%G$bZkU zNziV6mm>twrI71Y#F1z?1r3o|DjtL9VLgW@WOzOdkqx;8B5seeTXuSf7CLA*+wSj8 zllTdSTe|Ri+hWc)Bs$!Q(C*z#5CFV8k-F!cY&9d{&o^!a8^tD+0Ij#Z=j#0=&EAl7 zrQb{ZwyE)r{T3$R;_M+y{Uv|WOZ1Ex8evuS9g*Y=Spv$|r51o5WyO@f2xX4c3+XT> z&ADw+fC!Wi4f$ha!)*D&Un0dFai7Q=rL4|HD?S3|CZr!f^V|tX5SxZWyn}`F%y2|I zX6OXNiC3@(_p=Ga)i4-#1-T;V`0S8pamkMG2seiHcyc=Uh?=7rqvT`u-a_0Kc?euu z+%tAMIBbV07V<&U3SFqVj5lWaIS_^KBet1*M}LoL$8?H3iv9{_LPyLAcd8T6&bX`7 z_ll@WOoH-SRq*Y4g*h9c04gLg4L!kj^8*}GKv>p9$MOW-RdA_ z5Ko&J?V({$_v`?`aP$uW|Qy2 z-5^58=tIUl75o)qX|+ylKbHf@UuyPmE_nF1br$>@8?OaEcM$^RI}vyV3F|hgD2JBZ zcp6&&{#)<#pAi_VU?|t9U;K)MFMh>;(71f{bwq*xu(AIC_Hw7Xwla!3!l#*Ceew=f z4s;&S6tf356dlxGP{$ONu?{ppl(7F2R4h4j;=DpAZumX){k#4xf-)nDr0Soeef$H$ zqPOw$nq*1A(!@NDxngpM?hlY{p04nGd^aNrquAv34zKYJ&kmZKxcFKe zVRXJw;;=+eG6#NN`5OY?G2qCUITN3J&W~slFGTWQ)lDx-VdE86%oh$!+UvZrXQ`pK z0EJDOW2AzL066LDgb5|l?4?FOfNDtnwT5R|VR@6H%+}1GIV2-ablvIYZHQ}h7Lhopj4R(0wZ^uAH)h(x3w5ob6h0Z}BT2Jw{9vr%i1 za6fo@mP?C36PL!C43kE-VpVX%4q#^umFLd6&6b*wJiH4-vaMkKTn=PAm1Y(toqEOlmNc49 z(B5H#DZ#_z&?hu67@~|@v5UGlEaYb0D$=W{>{IP^SMABg zTltZ=8hT^lAi|wDc9~)9A2;%Qr1%&=+rK&ensAG7IhCajNv!)&sb867)HBa*t z#k{0mzvc14_w#4Rr#I`C1Hx?^fLl36jA-Htuu9JweO)y#F@`Y3cDI?A%6*!_HP>Ej z*6H9g>}0m^=ZqZ&k5c!c{}D%;nj>%y3fx|$mmrFg!#93h*&XxffU)$#SF6c6Glm-I zN0beqqUcQ!%&0b`Ea_2G7*vJ~_9{yDGxwTbiBRrE15hp>_CF56P&|WgEmp8LLA=S| zF;N>n|F%m3mv&ii0&j3G^?a+S)K0V2LYnt~tSWhEUC}XPZBH4aIjkF7NgO}jC_GCg z#e4Q_IvSs-BdeHGB~|_;x1pudW9Hld(9s&nviG1fDfa)^SR&Aa7VGe9_>4LDOVhg{QP$ey8=D_0N|4eiWBEnkN{pemIw(rVP^vf85MOQ0JzPE zn|*W>!GDifhTBz+HL*a4gltzh&Lk&4&~1=>20@l-lm-Sym0B>xMO@~^yXki4rLzYE z=jy{Z2`>46eI%zv)C8L>!;+E+xo5}09wU>Ni@$QW))Fd*BNeY zjS?<8jI-iBnA3FHf9L9TrDLEK!?9rd>(>*#sVfS4r?=q@?>YAYK8R(Z2=_T(@IEcR zBFG@$K_eTk2AXR|?2bkF>Mhn)jE-38Jw1HO)#=4@c_D#ZN*hTeM{ zOm90A9q3Dme{@-eV(Bu-VRE?Hestb?l(p4*w3&F9{_F3%`Zv7ZGsXLDCD089ck`Rc zL)}QXWOuhfxAcy+-647D7OX+@>xh7<+Z!jOtjIk0WD}m@;UiNoKB*!7m>W?{`jHm0 zJ!z&cn!T^@qt9Ux)sF4eqt9GV;(P3Q&t!UL%b8PjQ-w!IlV;{qN3+nH#l|61`U-T^ zrD1u=%I<6P_qQm*@)8W*UyzF|@bDWQ~oc7(gUPz>3acK0Zg*nI|14)w^TH!^E{|F32SI;XkHl zYH4b6b*H4$k8lhTRIjuXVrj+5TYtyJ6x>uC@s=*9b%xfDiejMH@;Y4 z@Oc6h)L9*6IIi%r(Un!-xKBuEswX&VvTBEs=q{i^G}f75sV+1$kEpSY@?I!V3Ydp6 zTE$ef{S{Q~Nnl7N(r_7*Zo-P@sUj@~JaW#lr7y}ISS3PDZ6%y-HHJ?|XjVrMEoL53 zoYX(`g=)zPxymTu{1u05w+vK{48yh=-OEfnYf7sO3b3wj!*H+u&MEehYHV`KI?RYA zl(MTxl|yS&!RSR2WVtzEf5X)^Xup5?sL|JKtkLfVF^umHQ@yR)M$KjN z+wfOyp2lKG&)LX=1q}PO?sweWU+=Sgd`SJ^B^H_qP(jw2;ZM&Y=KXd`bOSBho2feI zJ9%!Lj;+aK58O3|SDV(bo>$-Zm^{gXpi}nr;kY!NH@L$kpY>q2hOI9VC+uOUQj<8G&v+Y_Ercnl zc%xgG=`!AVx!vb+ElAQ+D6Na@KjXDsyfQ|-Im7@ueoCD75nAO(@rXIHNAArdp-~3M z+A#6R&=NAq#O(OX28ovxiUd(Id6kS_8(JX~^+Pi8teQMSG)l(qkYM_J{n|f&jM0dV zN8GBp6BpNhl@@x^m18K#aS7>hk8}C>|`B$7?p+x~aq)_OZfgOhv^L#MwL1#)K z-ys%3`0$H)Fw?uD-7So!+YAM1oLwGu?M4co%RFWp%UKJC;{*@-`{)LDka9}CTV?D! zjP6>OgrlFtP)3~r(2s`S73~hk&UYUNt@Bw9coUfUym=j%OfF9?yAz20&mtYD@MT;4 z&dI&z%eup}8( z+nC!WFj?gyka?YviIx}iUP6C`DL z_nWGfaN$O8IYDG{r=YA$-d{q57 zZ8$oQ7gAY?ehtpd&qB}t<1^16m(Txy{vR>jwgmQR_UMW}SI#7m^p?^PMEt$v*9K=9 z5#4qO{)65A@fEJZ*-T~b@#_~WJ?L+&8*l78p-^x7sM~aUOQ1#EDm((zx=dH(CD>;n zkIV(_06<`G3n}hDp90DAmqyh5toWrB^?@!;4c%^qf-w$Zd8+@Fc2HZk^`MC<{aGKx68VKl`5ZW{m z)-t<)f9#PM4T##1>~eX(sz~*K=nNH0E(J1KdLqPmth_BJOn+cZ&2o89tVh@p9NQ=s z>3@=XK!IdMdl8Nx$I^3brF#*M&)k89G9N)R1y7*AwyG7ymJ`1;PkYuke%Gid{mvAb z&38|{xt5cU!o4;0PzYc~p9!_TVFrYpIHFAEf=ERdEOl^Z7~DSOVkqAR zf!Zd7%^5zcn5(llsCMGAx7`NcXX=q%_1RNz)ub(eE>9@*Z1E)$4sLoRH=a*xln#}DNtxICCmX8+3&i5<2E6v zn6Y&CjH)Y_kgDNifZ3>p!Zi!EpIy~UdayZAZwpZ=8+kShIgOW|#Y1n?Wm#4sL=rT-QzZUn?3` zvZZ0uCu0~hNJuFjcx*V5o*zRdh?9&x#-Wm)G@AxcR6^UE8)R)TKm_WoCZrdJji(M_9~CkmvbV85bh!VwXwIr{RTq^7ypL z1QzVvl!l!*j+^KJ`+uslLZ{IBS0T24dcisdL%u6}H_j7ez&n*Cm{gZjszpHc?%>dVxipxCEp zz1nEA$TkLYZFZ)kPE-CcW77$$P%BcMPOe_hNblH4Ce^dvl$erKDm#z0U8DShfx%}t zuKGo^u+~33=G4nQffJstjL_b{aIQ=d#TiGUt)lXqNm7*Kf}^n`)RG!7l|~h8s$1kN zMF#jp&_wy8dzQY&jwQFa?!;tfrXvlWZ@3&4trTM1#z{`wU~pbE7u|)`fFzTj(QoYO z3VTtZ22^{5gGH>*jHRKk_OvB8y{5y3d0LSpI>mF6nPZ)s*^zM;0f>&thdH`Y#x4!y zt9*;r;c5bgq}T>p=?YlfsL**`UCX#l#JeZF50REOjbyWCA8mT7#pJ`Ta*~@}Hj3Z^ zkiKR5Y4+A(hSfxoC~^7xCPd|*zafS>d1my<+b!nu3CgC{(1n`)G?|sb7{w!xMHa10 zp^s2CwF#&12}?+vh(n+%XUj!YWN`~}Jpm$i8<@GCJ(KDo{dt!fuD*#2+k$xMHr*+s z5P@18j&NRe6?On0Am#)2Sxl8v7I)_QBbn<9Y)K4Z|KA zcj&v!YJTd=`V)9PapV4IQS3cjaRuYj3r}~3F_P$ApA{w)IR;{On=46Ez0paU z=uq29wkqaTmvJblXbEo6c5;3GM&^1ns1D;leMXkMr7YDPSXPnbO__e-8H*3R__cV0 z{;oQ_b?wHuJ~&>fdjgE6VpbpKzm~`S+t)pKjqfVKnxPpKTkV=f$t-FBU3~zf3$DMd zl&sbvql#nN4hadPNPm%1Dsih!xy`Pf-oi$|RX+faM%=q>bKOe&nax(y`8Yj@3d zyo}beO2>+n8Iq}2J-s%~Dhh~U++KA@>c@Zdc13?BtP{6P8bVLe{-c$%TJ14IXx+~$ z-5Ara~*J-2b}6wP@rZN_u5@S zi$%k5I9JKC%xSwS0}z`n6tJX`JBl%BBj)(kikrqCplw!1t?-=9dyP6@of>`;Zw+=& zZU6n?QZ#BQLyq>%(A+o}*P=B~(&4Ok{F9m(;{=^1!WrNv{EkJ`8RfJ_l0b}H(oV<} z_1YD=XVK!m2R7=GVvGQbQ!Vu6^W7c4rQ4F4Ai54OFnne&LR8KXrX5nT^8oZG-(hh- zRgYYTjiNsM>_^_e)3UWw3M!iN*ST3&o{6P?{2oC|~==GuR}?#uvEA#S{Lr zPzLs)Qa)dfKjG|1z0r|MM|aYQ3W*c%VH-&LU^V1{Gkl@^uv%fn=eAq{^yrk43A`&E z0Ywuz9iB!@9T2jrw}83Op*wUO#Yl2&jTjpns>v8b6$g49UJCm8u!|DVK5cLgW(GAr)z@+2RgLh%yap2{NW!_t&*f!XcHchu{ z*Jf^B9+dKFd4*8gQ^ynZf{rkN)ye!;Ec$&NnAHq!xtxJ|nSD(Y>4@g(MB%MWxrRkL zlhMahJaUe}HRTnV+-fCKfR$M=Le{77;3gJr@Pd__fGRgc^c=$v&D;^@rJs|L6{bjM%b zb;V12ez5EbHtfOB^=r=J?S=+p9*6@Mrs}tOs2(=NbXQa1?S`~RIs=zJ03E7_?rt+d zfDYNiR*lXt;r(p~*u&XldCM&-i_-w_Ebi0oGWQMLlzC^?6iaN{{fae}aSkY=0-B6N zh8jxQ&IT~rdEL7UNVt1Z(q~P+xr+rXcIbxJZae_ZW&F~zpjkp8&gsbm!QT+Y4F{S?i ztDS7^C}>~6YTTEb1^@rd!ThH>B9S*Ub24=nF?9Y1Uo};6w>K3uF|_|uQ~#@O`l4j6 ziJ*M4$cFK;cC4riK)G#xeW2IJE!?-~M1qUiBc9T2ndqr9e3qyGx zf_Ff@>f8IeO9tWR48Z9ogfIo4eQK`LI+at!iJt2p|e zLET*XoNmy^%8F*P=h*d&HXA;*b(6f-9duJz5L z%;U0%R^ieb!HK^@Prmc4T{j>NDxAL>{chE8QmQfXUO ze`A?P?7p9ZW6;t{M|PearO5)sqXo7F3TtmbZZ#@h|6)dQ;$blhcSti&t;TLsv33!) zVNeW2$2dc6DSEPm_&|PRYu4!5s;n$4OMTuUk2pIu%SvuKEee1heaF(XMhlr6wK5ftiFUI#h-4c&CeYJsSHX+1IY%AeVf955D%V}>(?mZD`iV4 zSWu^RzE4*XHVQddxX}`AN71%RM{iFR6%d&f%x=dPEP5BEe`f+$DMmo4j~mAP?^CBS zM~$Qert9myi}Zv^`fz-%XQeXCjq4R%f0Ya!cf4$|6Y@(cwDC)5s+XCSUvBpSWNt(% ztN&?&V*WX9IDCT(aeuv_E{3kY0gqlItvK_%7ePd#)VfRMTeQPnoAZWEN>O+Xpplp9 zqms!bju3N<_E^s{N=i6l-WYZ~r6+=w!T39~-GtL0(c#AN!&>Wg=`wP*qdS<|iT=ZU zq?s-?E||E31Q%uI_oF}w5t**zFAuTfG)RXRi}Nr$jByC|F@WIHA%?3R%2as*mw!5H zE`p1-DEsd< z)4f%{2CyB>21_p)9Zzkx=clF8PM6!~Wt5lQj>1)cnsbVl zJ0JmxdN@%FB;-hx^^Np#-|X!CNUI0)I{UjmIeAW=h&c|)>-}f%kc<$v7VpoZ-v2G- z{)3EK1eSF=eO*Yqzb>TY|8vUyF9V_fdnMI&{%Tfl5NpqBB;l%8%>^OtvXC~C7CWBt z*yE5p;IJ}2P^;PRHjqXX3TCM+mJm}$X)EQ>PLtbF_$G-d;X2D zQA1IU?*r`qq|iO*W{wljS0qxm-bnSF%<#PAeB-%Xkl%dmwf@$$%T3s@=M3EkqzHiz zo;E?mM~sdR8}8q|k)XyK93D8|6Z%9Jfk5+@|uSF zB{pPk>LoYy)xH)SLO10h-jf#EjfkL!mi78Y8eo2t5r7>RnpzusQ)?XhF-$H_hBR!B z%sg6KDhU~TgZxL5G)vVn65s2KA6Y%W_;q_%aVIpUv4l9)dl=&DUrxE2frRj901o?Fx?l-#A2#`Y78 zMssd{R86&4nH{jG!d*Nv(KEUO&1BAbB%S`Pq@|BU1*9C`azNzTz z6m$gi(9ss7x=CA{o@6FY^OO~zOs6@}7Rx1}9jWfs^g)D^%qUB_su?~@tc@S;`iVia z>vB`DScuEpW<9VqFeNC4*B`96cNH&D>w6Bf^6F_QF<~y0{Ar2pU=z%)n+wWPkKAQ4 zH5KmcF2J;E3uUE}#DPG?(ROy%l(H}Kz?$kB;>D&ta@Cjr5w2FJouZ@JZpvCTp@n@# zjou?$)Lx8JGe|DIQV~+yDKF}*9o>$E<>YMZ@=9|wM(I3XSrfZzX){$5Cl?MDSew^I zu`^jNWMT!7v6J=@JsGk-HKCS8OPu#cmfCdHBzv4w(+^FE|2iz278tP4$Q^U@n(NtQ zU|t`a16k20E3FJ$f3gOdapx!0cw~Z|_?8ciDs85msx6d09a@(+o)RfucC4wRha_%N zOBLmr4zK-~qMMy@%x4?xoNZj`NwDc%C@VUYFQE*2O#zjx=3Bau*J(A#>$lNVfPz+Q zHb28B&M(pKl=G`*m=f+Pg1n@*Txp>4kQZ0PA1kyBOQWk^IX4YeFNPz1h>KOanirvM z(CTfI9SN+(_UyyxQ6syCG9eDirGZ}W!x&g(U^7<6@Lom|<8K1JSzzc2^7;~JeYkk} zv${{LL+rjVIClt$ud@Z;$YvazXb!vKMV3}5Q8;Udwc*1A-VjaJjIbBZu-jRy zC^}U!w$ap68^c6(4PV@j2pcs~sM6Ln-w_zq<|R7Kw4ESIUf%b-e0-jqhoX4tNRv(< zP8i1BrgA_094HUZJ*<}sYpvfZwMlT#G*K;SP2f_AzKV@r9tn5mz5+3<=$}{~Xz!sd z@B*?Ao5gn}I#X});&g&BEfJm~L^v?uT7$h&0MmsTCTFflm*socaQ)ouYoMOj&1Tm& zput-Vf{lAUIlytDUE9!M9D8God+DMK>5qaaDMGpSo#^>-xB1cZVy00$VJN9|1L$9& z(hlkJUx?n(Wps(XnuK)<0fNl7cDbEzG6EBU7=u0z6GQ+=?GwDJ+Z)`7Avz)i@76pr zle(uqd8rZ&>(CXdf$=a1cqgqx=EOl+tZVV^;GVFu-=iI4hM`+(#5|V-M+Bt9Q9GS| z7wrh?qohjgiPV`4X=YU5sO9Q<72(;W8d_{I_t$5Mm&WD(I7mRj>3%Cw9C5Dw*bFP^Y$M33#M>>x8vS4t|s8 zQJ%RqeCy1!!yYZc(Z-7KCEB$z)vG2h!k@*Hk+rr@VN8cpT2W*AzAZ1lN8-gJ(uN_9 z$-XUTzDMBz@`2L%VFxfQxOBjN+*QduGpi5J;2>2Cs5CQ7}B zP8I+z{m^Y(5s+uj$iHBQ@1&7`Q2_(hns0VB5Hoz}+1xR@7X&eleoInhp3fAf~U< zJl6`ThwL;XBypUx(T@BSc%b@7TmB_6D=~z4oLb#!2X&gCtAJC!o$0p3%I=ZB6EVjJ z6xZ5+HF}gNUh0eoDN=h@P5H_jQzuJwMe_>V+O;mjr*Jx@a{bb}r8eUOF7vw9bl131 zX!*)5qgG12H=#no6z!IL?1dTm4}BN@dvf{%JK5PTW`y6K!8@|qE&Zq6Yb){ZnT;P~ zR{$xV%a>5;_uRUC4ojhVOfTGku}pkMU6GyHs5JE)_Zc@8_2Pe&ep-V&dqb^m}LGzE+6@8WSACWUx)E{C<(nm z5F?eSEsEM;Dxw)MC7w^7d?!9H)_8P1(GXD zVHeKdMVVG+zB$yg_?MLP zf|nddD#H?FRnm;k^hB7{+OkJ-d(x~Kv=fskN$`1f306$-oW%58mJ$+hp%JOzbQO+Dc0gu-}USkpBJ0$vhfyvG{C`UnVnf6creRV_4ybzTY z$I5-xn}JYsHZ|axsAPd>$(D%G(0GONuz zl$WWrjWwDxOfDvobSzTUKh+KXg+H|Q8-r&7Ax9P{Pe)m|wINP2T@mV@^?A*k_Nkbg zb3v5!j9#;;AS9A^?i}1M9_F@OPsh@VBS^=dob5E+Q28RLXNZhZ?8#KS(7it*9oDrh z$!yQf?_*qb@wyUOxg;ww!^+TApzXl4pTaB@)U!1Cm^R=q^KB19nFgq+&RPHuf6__t zlHrLuV2Bl9jO;-8c+H0ydw?^;tb_=u6|!WrF5zmL%i#e_F|#11U>t|E3z-6vxygz&l1*_V zXqTcY+Lp@DmfxX62-2~Q%8DcNd?x=VOpfhcijv~u*TBp?Hs3Q%WSnAcrKre&!mjT} zEY^9KA-;yCj@pED|GKMDI_WS~L>ZQeOGV~ZY051U{~l8(OEB;I_N46gs1p2>6HMnR z2+zM6h;5;m5jIYXA09z&?5FXjWR^^N5x=?I-?%RWI6NBiEcf2?LZW$>hn|mRew}Q0p4t_NO zGTMzSt~JoBZDv=ndNl#EHK}_3mzkg1Alcfr3yS5?t1j-upV~p0Z994OnL2GT?jt+* z$5>ZKn%4s^*v&g9T=V}g12M5eR;Zayd39c9zsT$o(`5*M#+&FB#50I`oPRD?UC1us z(CYzAHKCU{37wR4<_=~5x4k$?bg91=7E+TtR7a`(t=LZxY8DK8LfjFw88pIm7}=n> z8v}N{x}Fq?3&I8WV4P=Q+b+l=Q1)0iag~S7pUh0Md5cL;`RrTtAJK;f!6l%nEHm!f zGsI_LjvNozN3Z@rbh6-~nua~t--b)q8W!RMVmFx>wl40XGT98AL&}6P?7kw#-jS`R zNsZ=NA9SQf-r7lm6Uo;`Y^?JrcW%N#u!kAtaJDG$oKsn^+;uU*F(~(teJS}(aJ@$` zd}qYH1310M7yeezHn;M2G1VN>XvKX&hV>fa-CyF}_aEg#3ypC+=n)rhs41teLD8?L{#Pp$i^sg*k8d9}@^`!Ke_$Z~A8xag zy`8O-$$tkoXDfe$o4-*7Qs{!4x72wQRFeHI1jT_wD2Nmcf{|Q%428NJ7FZkNW3CCx zd%Ruq=(iKlX1|u8@%zy4W#8GVA;uV#GS6>X$#-Yh8+T7eYwdP{q6`?r7{G+&8A+-) z7qDvht3Cz82nj>u5fa*vMe#*ZqbS=Z=dK{-8c$q#2X$DRctEsF&2J-0urUq9OwIiIQ23(^#<9B5gZj&rBcUT6kn@-NE)>uRg zWs-2W#fMig-8GM30V!1$*s+sZoP!=E$25W)je@IHF4K(19Z-(rnF2ZuHiHsc8JAd1 zIMvCbBodo@8A=488M5+3Yj-M^k*c@t_alJ)q7H|qMVs8EQrmciO)b}We|{mT>rs1Vda z>WHpDNYq5}a&v*o2sY_*bHT<4>NADAAB$9YhNAsd5u8OTQ$_(Zoub(K=MCe}B( z#Sj*qQt$X92-d#IjZO|%-J$yFlFt;Z_~Mk$(xf#SPhATZhYK{Jmxod?U`;I(DV2D(rXaZJDwUsS z`Kx#RK6Nj1KoPQJnk zu*_$Mz`fx6Mm^qN@ql%@KpyRO^Xnu1e!yEQGxUHzfkMfsG~O`>qV_(^7isNL3&Nfq z;8W`Km9D_a9c4l^ng~tk3{T^?5T6!_V#^&{h$4X z@5^oX58oTg3h~De*8g9po&VZV-xf~iZ(7R#r`dcr7-D{|bXdmh4#g7Kzk`ql^I1L4ESd=5i`ndX`n zU{OljMBioK%QJ90Ld@W8)~s0ch?vO6e46#~_3_NT`~3CAsk-y_TTTzep1mirkD#Kn z4jPcgM_-bWwlZWKaUKZKURIFP$3=tMqK-|4C#TO|frV4wfz|ahC=-j$Vr{Oj+(2p& z87pV$78LRByCVP;Y1QnT^`@t6FGbmzmN|K<+E6-!ehRhzhm?;BV@7X|{ye?IcA1HE zma%%HDscNx%duz2G417JN&bFWV3`%40R_f6)T~C10yEA?EFBx|tTua!%&K-Zwo{6U zSBDvraDTn`usU&B$n5G zi3v*PWhJ1oh}o*>t_3QF3KObTBm+(##^9?|^a9wGq9iWl7^@cfW zixJa0tUk?%XO|J95Pd660R^ty+T9OCX=Z8@hI7&h?YjoQb+tjOWW91pWVK~H1{-2F z>h|>dcYK(@1I6}1QI3ym)NJk=Zi9Z)vpso*wD&Ohb0yJ#))h;7Z>tWe8l@?NYTp&p z!Bn}nGrt;5l^z4t&ec#P!0;LGVGk7)11X*7i&U;wo8~M!54xFkTgU2=Hj_i_JAopJ z0>fU-F(l6Ph#`hX=g@`20T*V7&l2s zQmejlQyj-$tmIB(;eltNfw~H4;zHt^-^Mp{;dGo4%cXlDg>xB}t+#}m6c5#OJni~4 zwTaO7aCbvsM^z%~KsD-aq$7Ie2j5hGPT_~bMv%7MY1?426Uw1Z05T4xhJHlAc}<@Y zPGS!(RF?5xwoU+M45h{%3P`LQ=*}=BEp(RY-nLEv{$W}?=*%7gzIz{sUqUUDwucRI zN(b06>enW6)?v>d)v34edk}kgK2kc5lSAX%yY48wy^4|r{{CMVlBa)yf9E{%BO!om z8UO{mTbgJR4*7VmP9BY7v>_QfY7PifY)Z}I5dYTe?}~Gaa7~$~^(6=Kb;#YNCiKiD zRP2e=?GmEj$xltNioTkAL+D5QYc2z-4=>&zma?umofF_@05e;azMY5=jU195{Y+qS} ztCmB)O6Suo1+D`vUr|@TbYj)bp$E_hUR4u0JnH zG8Vj)&-qC)-9+)oprW66Ug}?Qo5sv|DHS*IZL+o4H}P!9K1s!LOZAJ#%+wB&)Cxdx zk7VBJ+xJsm7?VINy%@y4-gZR`Qwq-9A6x)MwftgEI%2eS*)N<M*-)YB;j$GCN%KYANayEin-ni(wzDUhyBa%dJailVPGQ?Jh&)e&~%q-UE;P##wq~ z@9p*wc7_nUhM~HrrQajOj#s;OcKSuSBBdUn*!fex^zNl` z6}@A}manyReG#HwyWl^fl5~7EThr+QL%&#GMcknncJN=aUM!w!1m;90cW zL2kwCK7aP%Uc2B!Y}M;N_xIuccEN|*vaI!5(yKWDVb^3Go&olShV3;n`poGC{rqL& zXDs#^Ui`xBC;bIVe^C1Z^trO^mKyZa{DqG%@{e@C|BDQE(SdbbMEnDG7(9N@04_fV z50m#16`ynQBC?RL&DRX@M-cDbEZuFqY`0jTXYGp~B^AD!&q?zCCJ`njd9%KM;}84^ z|Dz4;zl#R{_4};WuyRHoMeQ-VtWPmsANvIyuo4UwB_ppWZp4r_*3t)+qK5=`VzRO@ zq8mp_SPeujvr!_G*t39cA(Y5wv%q6c84FMo6j~&Mg|$iS*?bWAZ2J03&RbfVmE+sk znV?#^jdO%NlfIr_neO%bd7Hb@ZTk4D+c`dLWsVyUYEFUOXI6;SxhV$g{BIZcNGJa7 z4aaZU+nb_P*?IWaGtiyvlWokM>|?H(_Vcb#-J;a3Z(q0HQAsKmEnIUW~|sdK&it- z3U4ZtKHW1(JwJVtF@J&BjHm zc>oCU+H2<_Xs0I)kz|=VYq7R?F6&ghL74(t0HI=|hIjkoU#0;A`e1a&rcL6^8!TGV zLZq}6`=F+SK_K-n>T(o#NE8F&W2X0#v1MV$kn9XSYLXNwh|A`fkpd+0Nn*-}WPo>p z5sW0^g$Nd)cQjdN*oUYKD!|^5I~ix;b?aD|Im;G4Iz^4?&=SfI;`7x>3ypJOqLwNQ zgQK$PiXK>%>w4^j zlnNhNGd3CqE=_6=2&4O?l$5}~L!#1NBSj)#! zXeSyT&>1T&N%(7)2yOoQ)cg<8pwCjHJISklnMQ0s3Vp4wSn)jlc1X_58FPPI;$-UK z9i&?mPAQo-H@2ZyI1JH~CBDss5y>!a%qv#+TTXc(i)ythTSdf!2b|Ms*9QnHN2glL zh1jdARg&8=EGc7JlSsULgrPoMl}pOq`PQ&aZHQ*SeLjDCjtVQrWU-d%yTPtC8N8tB z%Qq_{Gxu4Cg;bOm`J|W-Lq8g0%wGRiVr>9JL>aV>?5wfo3KZ^JPO)9FZ)!7RCvJ#v z8dm{%n)$s?sr=}5nsgT1sr?b1rW@mVEU(f7@}gf4L+Qth1|5&ByiYio$+*U!EqPao z*E_TSx7gSTi7MmxVH*==WT#8vnunTv-`gxwWLR<8N1n?=6Oy?W=2tny{izJ}sa6Kw zJj6LwiZG6tMalMtCuY%hRY(Q|U3hsH?9z3VIv`$-$vyUWcp4GelgMz@=L`zj@OzP} zbbiCZV}1f)GrBTZ9_6Ekc5@MrguFJLo#@?BfC z>{Tj4%0fe1xojLZWl8uOU631_Q?N}@yvPysqWf?QYWtQM`zfoIm-lWfz_f2G%5=AN zEPTtLPh)e{859}};+hi< z0_gq#5ZIit*&gyjV6oZK*@Np18V!W#v1S~Ke^0vdJO86rYJ03ku$=oE8rBH8J+z*zP?Xj>3F$X7jHzkg=ql|L$if;5uZ*rv` zeBwwLp;Tq?`z`co>HTMT9jk$!rMQpu{%?zHOMWPrv*kUz37)0tZ;>ra zep4xLv06&MS(Lu0Sb9u_y3>)>Fv)ZKD6D0=D+Axy^-mgLANQdy2How@rg;44${E(M=O@uyz9xReCLTSp~(#!oeQ{F;t%DHZak3WXgqI z3G@YN9&>hErI@!6~G>%f`N zw5}U@M88FxeCx9t>3G{vOcVM5xOnWb3)zIaS=r>Fb$Mmw%sDfD+Vp+J9tvA+HXb?S zSb5?4&ngOGZ!jNK@vb~Uv5I<(cOYH!Omhmt-xt6!3uNOSnZTR6Tu7h%ww%Jbum<<@ z(LYf((~g8@PUYGhlVdT}b#bMZ^PKX&u%?uQp1N3G=aI!R^>sOMa!7oQxVL>>li@nc@8D*RTF<#Xm2U<^LE(+6=KnB(idu1+ z)hmFLQ?pf|h1M&emy)wxoOBI|g35|pH^obJyF1py%hA=2HpYO&W|x*2l~jdeHjt^l z+j>AzmV&B)q2)kb0Z$K`&2{y(^u0GaZ|m3uT;7=<=VTXxVt}Dp9$-7y%hTx=MP5z} zN4nG(YQF>NT+yKW$)k5p3{Q8gY0>ExMEV>bV7oZ@w7ZwnJ*7tS7xB$3$P^#8#Jm$2 zV?$aeVXe7pj=0W&wIm)`qc0e;^Y)FLL2L?%%cVBQ&J z$DIW`qd>7{mYKlS^gODHEL%Pf7S;C$1u>qMD^ z63k}9B_!8niU5J73YLyl94D~_8)_G+IPMTwh^NzdgDxolw5wCfK%L7#x|ZDCmntHr zh`Jt|h{D5`piG`O-s!%?r4{U@Svmu?RrRi;CBSH}r%ew{V65&B{n?nvyyXJlm|AoAuLTMytL(Hkrk(| ze&;YIBAo|lOe7W=V{twvH*3>g0>D;#g&~?6tAv%8IZCuxPVOfMh?2D`S%UJNCeh;Qus4W0 z8}dPv*#sMSjXZ0JxP&Uu3Sh295Nn`s;j6bjJ2p=80i({Zg3TA_RG9$e7*gSY{jeTN zZI^F`WaHSJ=rS9WsK7ERJo!Y662efJT2=SkiDG#(#kAu6k^mrvN~57QiLpj4cIgcu z0mRi}*vHT&@@k_o`e#8q*)UO-LtJk|bS~zHm2HY0sE_~U*>0ffeM>y6sL{EC7xQet zr(WKTMp9$s4dg_?J>s=-YptmPJ6FJ1!ZL=AS6!@O!;03>Ij|@*J)%+C_(ONFV(5Ag z>d-Fn-A_u3ZXrYUb3Gux=(o)WX;&)xyqY`%(2d2KO&6f_c#XZdz(7+ZJ zV|>92;CNJaD-&Q{PZJV(-iWo`;t(pR_;ay>xb))J*vULOoQKTJ_w{~yA6-9h!L0D` z4ivy?d2Zxc?DhjAMbM?_a+tbc78465L_58aOg(Wdy< z9p;S8dnb+aBQAJ_oP3OO``4F*`Wdj%B}pFL38wJy#V4kQxegt3GY1YbkEAv4uEI{X z_34+J$A?@E1kAp3glpkm8B2Y&s1iG9lzXTv;_*7%PY&8+O`Lt2=I`nQRq*K%m}u4$ z#2u5x!euY5n{*&Jx0pn+0jM47EDUc&C?z?<$c4RGz9rlcDk84BFB$#6DM_bFj!Y;e z0eg16pL_DgsDt;kIv5=(4z&8lpiwoTQJ;u)E>k8p;8oRjI76*>y9q7hqa3E{ANVzu z({=LNvb)9T&gb(wZ$D|&>m1j^x;s0>T9gf;F|UvBTj=f4DWZx=0IB z^udq@gOP`!9FbH62{~gNT@#Crx@JmBlMFgVa0?-H9O!~P6fICkD*rY9Tc_U!|FPKY zep9!dDM_>_a~4G@pIM66Y0uxA=kC8ZKKEW<9@j2EE^m9lX*u>so_Wpt!pT?;!QY>R zeE%Z$@($X~dfplFjPB-~wkEzm0r!3c@A^*oyiY|d;dO;A+Gg#~Hri(W(Fc-+a1ZC# zL%WR#jhcmSBiJkOmjc#Bz0L5S1ooxdi|}6seHZM*-g-*~-Z|1ee@y}J9jL|J7!oJK ziV<-W0UH$?7>svd#FVu~$J8|ZTP&nVL2FVXXvkP=T;hrO4zeztPhk>KsOYJRRu|DP z;^@%QH)n}~FpY9d$tg#SMrz6|Vj_yC0yQD531`Nn(V#X4J2;_E#f_XXVOqN2XkHOF z9b7bV8b@)8N?E-{E*B%t%+&6PcaX?LQxE6CgSnoLGB>?9FDN-776HSaULBe+UVT^? zAB+(l3vp&}D~lf4uE436XMt(Uun9kO=q5&7@B^wpd%_f+f@yfCDnFZ+>Reu$66M?| zu}s>;{D5b8&F-yBA%rV_7LRW1bzPexbrvrjTdo+DQwc_dY4}}RkdK2JJpyFoXSdIH z?gEU+KoClsKSKx;tyCfki;x?y6Kr{5)i(T)SVBDF0Yd>%G3yjUKxHlAgJ6uRG~OH_ z?lN<_206apoQNq7XO}MrBNj3Y>Dt3XaeT7;;7NGOGM%OBkf{9U&o=fobynC!xy2O}wQ?9`0( z*lUsS>*TWt8)>l^sibUzOK~Ab^_--$4ztS8d9D&xqRpi(}QNTx~Okcys|O?4S` zSTBt5W+QY(pK^s<{)Tn_auVw>X~BlH6|+250d27hTgrSt*0Bq!oLoPHg4MOB zQjYK^ex-1=U9R@`j zif+RhJ-dWmKZOOu<4BvZPBby#1Q9D;rqrXKdXVx_egjvrL%(9`F8l*U)$WuIETx)H z{UW!lX;QR`L@8Si_uF;lX@FW%JkYd~P|m-2ECrKpXcE%)wX6{tmZma?YW;eSgG@k0)XmL7ABf-#2o1 zo^T9+dtp-Eq)gGI_G;C;dpP*}4jfF6`@>@N9QK+IXVlFck(WhIWY+5r;0k!vHsO$T z%FexfNKr_6WHNfGF?C%J-PcyX(~{7sfwtE<4>PkbIw4G5SHSN9^<|oruUW7IhiA7x zjOBZW^dkdbMg=rPTu_^!%6ZR#+hLA)%O@wn{h>Z&@g2Wsi_~tA^#h+Z^o`rFxyw%2 zAU$?;1RS(&-wQu7V%mNRlW%rqNlAS(_?3y{EGX&k$xIKo#J?v}MV#C8{=HdGXV>7@bPac~>?UFfVS`mrxU_uai2@ z;EEW1x?k4CHCv7+c8>Ss3(+1LM?J`+iHBSK-eRyG+2|b{xcZiE`;iQ5`InrV+AWW^ zj@hIwPlYFS77Cf$d`bE_-AiT)H%w=JXpe(g1`J21Zb0S1L@|{cHj%@HEys=N!WHSH zm#aZmP;aU+B(kTskEb^sYmZaO?G3410wIqY=lAHcEvl;Pu&TQuHdA6#Z+$Kwm<0J9)pG9dqr0C+ExPJ+R?KhRxR>{ICXsu&?oWZ)#E3%N?l*g~h=aV++W|=ndJ?t< zwHEsDY11oy1CqMPHod4_Q}kO(d7IVzm*ha^;XMiPWG1hnlI0V#L-gLU4E3^Ha}O=? zSOs`iGctJt!E0XG$EHU=U#{)z4W(AOwvBcTehKD$S`G?Qc9prX{#nug@Xz{~2D4J8 zM~Bx?Wv<1%+`a63Gr6=pVKw>y_joJ)=kqaM##~kQztKBB<-@L|#aySEh&`p(f40I^ z>DAwi@gb|8_$PAOe1E}6Eu+WGdM0?zKO6edmoq(<;mdXd6KE>|k5(({AEs52lwG83 z>QeipRZbl8LCx7&w2l24bBRZnDV#VAMmiQjE_fQe(zD(Aq-C+{rS^R=F03N0BVd-4 z9b$KBCy{qfT>QZ~=TLm`rH9J5Ho)FMe*&F(!OafK_pr_JPC|#0oplD@58cD?3&kBP z7Yuyo2qff5L)^p?a4Np@P^}ZPDu%k<#qY}&$a;z;?kg57a~?=ul`S~spcCFJn&Obf z6n`ae#U$FZgiOj~o_Q=lX+N$xFHW_y!VfS?o@v`NB&d zR5&F^-Fu=88&9D$N3b}}4$^`WNn^@K86BpE&k;wrvd|r*_kzQWrnN7N$<_XzjX(N& zvN`M>kT&HonaE7Vu^PUn0)L>aqN@9?Vc)Z(JcYjoUD^!roq zV_!!(p*CEnpf%aPT5-CAd_i$iviiG1yyuz!f0iwafoMHN-(?Hpw}wFff7cKGi$tz! z;AmlBX#MZp%WTC-TPy*DDllNM6#r-;>-#z%rmF0#;nJV4hLra}>!HzYqJvB$K`A;c zQ*U>mpLqE4ML73BuN2h0&?zC}B$KH*8H#QykLI5|?{Bbs5S^q)^*Te;EH)lylYfEv zP;TSp@y0CjmWRqXh^(E(4kX?4!vHyUO%VV+$eCZdVI(ZPh-3-!2?|WIcS-WO@Fb!k zJLPG*Zwt4=^J;_QX~Ir_KP|<~mXFg)?{QHnoupqDG;Ln+8;`bb5FN?y{B0_AP{$jM zw^H9a&q5b&(7=hVAgix@1Wu-k4_M(k1bCj_xO#FVv!%PjW9)4Ge{-+7nU7Wv{F zJOEUXK4&5*jH5O4yzUknCVJ2@NoK-N3Bolvr}4dshwHg57wHh(J@1mslBTY4QmSIMmMxY7Dt2~tY};Z)n zh9(`7?$HJ2WT({h_`j$pMZQ~;d*3yx^tWL2AMj}Zrzh}VgtUKJ0{^RCNmjOzTa-uf zwS8WwrUn+WkD%|8-X6(2lu$Hhq`R$} zbR)W-d=EQLa|a}Q7={4d>J%5F zSVASHE1&ACHE=q&3)bqBwNSC&Q5EB~a#|JX!vqNp1%JMSe4t?>(_`AuMJ8;Sf+Jl+ zn4MFlBYP`;r?xldr&b44hMrF;EvJ zf-03p4n*(v_)tVqH^t!4&V!UU=$)XZtxasGwvw^%W|-*ckbB3fX+DQ7$Oz*SS0=Nx z^OXe?e{H#4%&6Jcq*{H<#wfk(hyFoKLIOH!ObUA0Bqp%EM^*jdyipK_aJ}8GB;H`r@ojszF!=XgN%L^W9!Blk9cpMwF&-5| z5+^VgqIiLDP%>A-$r7$dy&6)ZS?`w!??_?4A8Am%s!2#|l&47g3xyyl)jnVnwkSB@ z^FTlwvIE`}g7@(Csq|^__wmxJQpdxM6&%)%QAm)*jfze~Jw+t5q6g*O~7^oq|&9v+-OYlHVy+-ZN-F20CD z?7$2XrJ?T8V)+sD!4I0h69f6u^lbuXA?%R@zbpH@{d`IP@f+$k=LbLf9y;*5qQ4&G ztyRVoHjuB>jl;VRhA+II{#;TR{PW10r`t%U5=i~0yQOhktboz3u0`%rPO@YAQ*b_I z`;;eGvyP=Kdr=l6l?imi4=YS%)Fzss;=z!teCf%;h?*#~V|BVxtc3hL)}Un{3zrVw z!iw~&t(^H~?M{}jHeN!jh$I!dL~^hq3(Q@G?pSYT^&?m-3ReYfe-{{F56U1gsV=Z^ zV;ar`guEaDghCdmmwTlyQJo-=@t0qU{<2{CO&QEbS^ay?_>Ibr))0DFMhNxRiOe3} zZc7P@0Lq#N*R9V3>tmlZRkjMlnCnDU zyP;4*fkDJ&)p)stRm*SePB8G+N5fl?KXzA&%akIn91>a)sK>HMLO~$m?vytMPANH~ zE~(dj=o=A=44=MN=AyX1SN10#Yj-q%-qtfPaKxhvO0@iSU@V^wbcdQKkln#>I(-@| zOid_5J)jarEcND%DOb1UY1WB7k#v3>`fCJSRP9Exka*t| zoH>q&xR}Bx zVzc@zl^#{~&GewDeIWL76<7MxU^*37x_@wkT(2IUkrfYrBqD@bN=d-=sfrWnA)Gde z0LEpE*CO7LXEEj&k|gps&i31BM`VB+Z^Ao%6sMjv#3HKbxs1iKbP7AjQ9fBiX=bBJ zZYo?Uzs9(6;9X^~%~)!?6QE+=aRphTUh0*@z8{QhqGBQ<<n%g#}|qwmI4usW!vP=~qx4 zv_H%vMHz(!Dr1rvVad?^wOk>VJ-Y1i^=UGvca=evSRs&cg>`5v!Uni5xJxdIt>GQE z7oK_SP#;S+rMAHxjBA)7+YioJ9nbq9VAIKXQ3&shQ1E@Z_Um2LC?WiVq3$1lG%R?a z&uMNH=a1#OcyK~u_vqD^C?(t*uMrAwIdDd{F-9IqNw;~qg?ThdQ0&r4Ruarn-4d{I zm{cqmXbH2Qp~T@c&H^q4PnXfCAuZ5Rn`Z=-OLAIu#V;0kLs?u}0J6-K7d9ey#t9KR zm?2{NSoDbPz&@yzGWQ7YtWbVIy@vq>wJ62#LCz{fO5t8@{mQ5?q*k=xnmL1@jIVoD5)nn>Q3Rf8>s~tR(gNJN_K~Q4u3!p+#sR#rUziqJk1`1tUme{Mr__bbnw>DT0LX})-8Wu4F`~_zd2nf z`#r@4AhkH;7+|R$;;U2E?*_$gI1FXND!1Z+yDnvA_VbxjsSS`k%@+Vs)S;ijHKCPM zjW=mR+ru=sbpL?XJe6D=Eb)XPzh=>)q0G>rJF7hqHI56h@IHw-@=#|u4HrHU7Bq&Q zrwT39ESfyDr!-e}$F8~!G<6r_oxc_lQ;InYEdFP#+$mH}$p1OJQp8_!Nny^8)I1jH zE?`my2?fS)o{02>ip8Q3>ITZ*J`36~;M^P)fpu5-T?6C74+s8I21I}H zads95UxBMbj^Eq?^T>U6MToy7JGl;n-n!F}W1@j`ALwi^Z)>C0uRE*qP{`#!rwJe`$$!&h!i?3`urLnTT zjFA4~Z*smbY^c@CKl9MDGh%#Y?hZVjX&mKzm`5Y$CwTm&1F`u2)qO6wian7JGn2B_ z!&}%YL>%S*$TxcDhwy(E%8%b%0`s_gcE!(E_L0(v-Co9ur;JvG^O)(qgauC(`HMC3 z?Voj?76Q7VvEf-Y0Ue0hHunOwx^S3VaBlYUg}O^N z$@x3sgE}vWCwZdXWkML+uK&Ez_B)ie7Jw^a#`Pudrp0oLcMD4UQUtda=8*vI`JURo z8l5$0Ugn=gM*mT`oRBY_*O&o!*>ZHnM{k~qd3s2pis$NcyvzwMQJYi_uMK{aV!btjUb;SZGo<0onko+shd7ZaV?2$VO)&T zP}1t$J`aVpSf$BNzJj%QILR>S;#=2u2L@JYgitdnG5e8$@WLfM`-ou3-iPE$oHbz^ zczk8b5xWh{=t>RKu(^li$}L^btq<6SWUuSoBk07&GkNY)a7EbBe;)9<;&aD8m5&%U zyqBc>{DBv2XJnZ=Sn0mF6*=w$(cCPLTVeDSvMMCs8-D+#KRfD*S=g(jJ9==oYFB;&9|r+x_zON z!gZjUYf@fl`*=#@Qmy6FQe5LyIm;MoG{>U{)bb0&^w9uejkqq37s{-0G%t}CPQn%A zc^BE9)(Z))zEnSk7nXdD`4%xVL~gB-W+KO^at(2%|3n?eZ#OlDYtyhgr;n|#@D`(H z7x>Li)T&ZPTU*TBk{hUhB!x4oq}f4(7_RbEGPEd$jl~NRxb2GYsiH83C7I15v3VSy z$*dlM&v&56v*CdsS$j|X{-3LXUup$JigfCNm)3M6DSP-u}k(PH>hl&N8=@b_nibBUgL zDQh;<;*%2hBK{)&+_d+UMo2o-Zgvn4K}peh+%IJAn}} zyot1-Bp^`i-E|{!)Ll*#f|)5tKSj&w9VvxjRtMdv%Ye(6REy1CnJ^}J{9UyDiEfd_+@>NRmon> zE%xf+YCT9OD&&huZlDofR719qQeJ|qwaT`P*^t_v$eR%)ZAS`P(06ZbH6A6d#3N;C zDj3btVn7xaJUJmBmYMpCOrq^VyDyOugNir?Z8L3AQIH!lS3U&qdgLL=NZnL3P}B;N zPF68Hb5Q9%Uwpe1m;uVGTf7={TJ|yo;z-^!4c$0?)D*)P1WK^-^{fN$@Pozi6&Qsc z1ADbJ=74>Rg3GaXz06;oM zuWITKIgRB{y#>|#Ln?Img&LM$$YN5nCP5DOlpN^BP?iVn3#rGv<@+ak*!~d51G7Sk z9Z0A;jfsYpMNhc>V?a}haY{M?4z9l2_O+9~Ir1Ch`QWVHJ%!!#ULWTWRVd@VGE!|{ zMf~aV$;=D*C^e%OtN$Qc2geBP8H?E;S}|Y!JGPxV_~0O|2e&xNh+YkwJw)S$$E7#F z)l=w1RD6l89qg12rA)Np8V?_2yzVf#lyE@%i-byA@mp9g^ckKeM&za3i5|VrRjw`~ zf>D#3ke}qmM~tl5L!j+P_i&)@dO6f z-%V5isCK0MkvI{;UYDE+$nyp+!)(2eEFJHR5>2Ov`{^gR&N!gbHr9@8y8=r82fFAj z%MCAFD+`HyPNNTJ)+i-)Z`?Ztbl-qiMEw}F>K+&^o8uwM$VaL$b3}hOw+(4(p!pr@ zIsjkc3B2NEE-{4r9SW7jbD)2RW+K(&S1QDspk%g2}#B%=>F@ifnEKKi^+6H(WA5if0rU zQa4~)H<1Iu2|VPQ{2po_s_JHtgajAHB?9dz%ov4eSQCNg!0x467$U5mKw&5lasjEh zZ>t;fc^ETR;M-dywi)61P=+1h&~a;vXBNlNF5C*{P=*P2P z&)Rd%{jv8OXQ8Bh|Gz=cX7a&SnLkLR^Unlk|DT~}Q4e#wfA=(q|F|d}{?Q3!>p=8x z4NaD!r7R*p688cM%K8uhK=-Y-y(Z3tqLL1Xe<*o67=KTiHRo(neZ#ek-+hi06MUr4 zE$C}Oq-$_-=Q8YUvFq`6+skvdqsiCD=M!cxn@(dsax#Ouv4c3#T+JjOLI9e=u#7$$ zA&3ZcBz>W4rUc1uP6b!uL%x#X>2yR@ed1T@=QSJGP^?l~(D^V3EZRER81i$c%UP{@ z@)jNABwaFXxOE3y=vFMK^3F40o$6n;%GS+<=lSl7l?)oscu?VM$-IdY?U|$oDBMcP zMNt?pi{48PK?D9ow%^koIKGNoG`D(F__18ev_ZNME0E2ooo;a{56f$TI z4x}_Z+9rXwMdAJg*;*BEiya%|EFwC4#4Gap;}#XBM{O?^~?GB%ydToAygAM_pp(j3gcTxNFPI1=7R=pyuYdGQZJXI^dyA-|Ay~S@lR^+b$ zsoQQsvGdO^(qszSf1-jFZ-iW7yQ1FJ3V3`%k7-TMNeM4(4`7VT-ibAq63@O0K!#-- z2XDX7

ma5$PF8`HC=e=UXL}7&cb|>ACo@V4a;oVw@^rW9+3}4TRdh{<}zw!tfU( z%g=Fl_*ppq46 zWL62x+N+ntThJ@^!?fGH=WGYCay^fNX>>U`>&G1iQ||a z9}kdSGz)pM)>?4*PU7Os)O!KdSbO?#NjJ@5<2n@MNn!XQU|`ij4Fx-9i33ZBV`M6_ z*6Q70HaF3}j{e^(8S$M;qwtQ~ZY$0qm*Id>%BcbnEv)#)rs4e2!P%{D6k z2u7h^uvcE7E)x+{q@%*ODrc7NubzNjShCa*cYPEVoJcJ`DzBDt1V3o2SC&+zuCOpW zD>qCte|ocTFI{W5IE8JJ@XLM`yV2g$>X##}RUmOS7U37@kDe~L9P;uhrYq4C@}FF> zNI#PZ&776q;wHyu;!q)2tW?h1p=RG&gos+tH<>9Lq-fPJULq?45?E6W-XhN0g>~CS zwZ6zMSc~##x6ypT-K4_g&=t#BSqwKpe7Kv7+QaxO%X(CPjM52bgNY3p{-!3=GC$4T zq_K4A>^HIa#08F?VpUPSb`7{r(fsTq*wQ2s`a~#>6`RHUEy$0CjuHeWF%?TGV~JVB z(t$F{y*>5UdZq*tdH~LEze2ubib(*de9wu?)&8zo#ie8zg-C4qeg8hj&2cOOyrS~7 z{D{-N>Dp94T_LN;?XK#I^nLrA^<%U8NRQUXdbcfwBwjlL5UU~?`A z#{#V7h=y!qK>= zfc5Ps4CUrJHAIf=1%HfvnTZeLVE=+oF648f#B6IoS*F-WNY+w#Q%PWR+H!Hv7 zjKwVurBe)2halC`3~&XVgL5OuvfuSt18+r+bVc$z;NniNI!~rr_4KDM_yVIdPOo|o zTB~MZEs91<)XTI6)B)Pnp~_{iJxImYF3U`%DwhLYig{CfDYrlawcPTw*slNODUxMh zlr~4oJ7oLT;hgo6RCO+6{}rVx?`W|m^iWtl+L0^h0~#i@P#(g4J~mgF{8HTE)iY3V z!U^pj4||YgngyTzpIImdq}L7III)X@Mz>(>*T9=Xh+>d7IJWWSr!C+nMwxsiWmkeV zKUpYY1q=iW{*oXi-ZUq0&j9RLZ@}YTVt;6+Lx9)!J5fLP6|FR`M|(r8(a~(4+?FLX z?AoQ22qIg2M4Z0BSxyx0Rw>@Ai}ydZ;`if7SNpBKa?7^QD+Di=>~*nqYH%Ktm90E= z&^^(~cL{&8P)xAB`q6yG#k_*qy{6~?=Ko}&cy&Tl??GwC@?Pw#PKx?WiSnfWm}y^U zA#~Spa6@m@hNhEL{NKBBeaA+@fZCzTGQ`pk zO*IBmnY7Bck=yI0-Ix%sPl+RO<@9rdBV3o<;spVNxKGtXxi(e1XYb9;F>{SHa~Td* zW79vXUVd`#xE?R6Qhx~tH&!oQC`<2{k|{a;<*RCc_MEZ9j6QFD-kZbhvcX8Mq2WBX zKoc*mwlFjuv5Q&{-m-HJ$cuTE*3@P{DDFLsH&6RA3_cQY0{&^_-ZT)aTxT9%(x#_A za6ibkXwA@QlF8N@DrRYBS~)zKO}l-OLdf^h2~Mf*k`!>a&UZR*K3e!ZjvMf#M9OHY z!DLoEun8XzmPZ~~e|kaN587uuUxg$_hpQ!%ugBzRYOH40|6zOZ=%C25+2!3f)aRYD zET&T=h=ZFPb*bxn_Iph5UDVzObdE1;zC%9y6^VeUxtZI*0_3e2ZJS)vBPmD6PDNrO zdAJhke?q!M>=cKUAIH&#&{z@4sm9g%2|XSpQL<4AB^e&Xpb7kauxiBTA>FD#g-izj3$ko%f_LWVw9xp zk)+Il`x`lEpTJB00o+FpN{>%^aI-ZyqH%|fyMDV6=awFCl3{PpD)4#;`$#Uqm&hUf z4#_|&b{}Dgk7as=ur(F0<~Yc;)6auY9}}U*B4#{`6>N@^AVsfHWEMxZc$bW=*kA|2T3OKXAQX5sRoQwyz0T@R1!I9 z??1g8|6n*5*{f<;e(LCTe!^#o{^w2nCwTT>uR@fP_0LZ7qXCGwY1TKFgcwrk!~0?0 zqEM7_SJzX14Lt^dKw8gDv$Q49*ti~;C<=|#d?9`=!WxTciinQLava1scwL)7n_~t} zZf<(caKEtsC<5C4zVP;Z!0b}+$np)iu^ObxRmkqAO6fr?*iV+W!HrY_IYnNyRvmM4 zm>@cJR~#r}3mc~|(AQKu=!ogTzW}{U1{JN1?O$5xn|S*;RM+ZgwNl4Y@vyW^by{;Q zd5yhLm2i;Qd96F2cb~mZ6mP|HfB@$=Ya+AhQgvv)LC<(Ar05hR*SKG=$o{lr5@YlF zjy#4}xAU|v+Id+@(r7wc4kRZ;AG{aa!Yk^r@s<8$oFueYAW~rluN_QY@ct#`>o?vQX&Ue@{#7m4&XFS)7qg@LcPVO|K zaXdlXL#c}Oi1??e9+)Ygp(g2}&ez=ANF9;1t29C2%(8sWL>2cl_|zZ){c`H;@Qb^rXZrB z{N~rb9Bf8(%Rgl4tnV}iK1_WLbzrbVvBg9ijP)Z<1e*Tp(XiiSrSqQ|J+e~+oN&Xl zdnbMbj;yy{z97#p?3PAz3q|(3M)LI%XH@{P`NJgaf4~WdyHEIBwoq&R>?PnnRA-?F z9W$Ce#Z*=M8VpN@jt1^PK*#Jg0n;}3pa7c3fyz-#K}r{^b740vU|~{4k`>;2^eCSf zW3i*sJs=8TFS~5jFd0AD7$DtHBw;0XmUy%}afv-1>G*MO?gb2={D=hdiXa2p!3r<| z_hRed8~LD#WqQtZu2l>EnzJvT&8Q34UjG+v#=qm_wFYE`bs|wRG~`OniZ{ zA-qz8cI19W)0tCCDf@aDtkGg4zNA{=LcMd;${eYc7bKc^c>!%oLs(raE9J-0u<{Iz|<}j1pliNVk_NwiyNbWq?bMZB+CKi zZxP?1?)sQ(1DdqefjZE(!ani}y%+n;2_xBsO-w1zQ&0Kg-}ithtJ)Ef_A$=d2Ivyj z_tC*|&MM~^Wef zTfq%?C2l3&*V=|s^ZB6tuXnPL1pE&i_v@F^|8E4~-%hqHMRP?&emL(0Ae4TGpaDXh zQuzcpb-Z2R{9pkHC=tK>aoJ@O^ii?ZuntU^?*wHH;$8V8*jv#u?g160NL)R|vn=<8 znhxEU%NJbT?%%0=)z~ES<3EI0SR_M>h7U-LUmO{fntY^z6n2y=UIaK`0*DP`qxHs; zkbLqB8pypv!~Wl<%BIPk#kP|ZuxtafC(3@wNCu+^;x=Ps?Y0B^7M%u*>dh@r<#LGY z*X0jQc}O?N=$S2qnzwo7NAo=}-{3v-d!&zI=AvaZf`Z=eW zHPgM6Gg;6*{ctkHDCm*cs;^$k3{WItB!x*8H8qYYDXM`D?nF}s$bz~Fh8U|LOHKLM z`HmgsWcb)Kz1ZtDqZ~~pFld$}-K*nGY zM5@^W9RKK)#YXxtE#U38ZUb7M#eiYs-G8YSvSW{N-GdX*YxNHO;T70Er<#vRb{%Pr z@UML^9STQ2|$d_6P-j-&uXI)hiuE9M`X|A>7pCoJ@$UZ2^5$g!xO<`P`P~Xh=r6w+ zqX&f>D6S!QtB)2yCIr`OfYd-Ha`y|ipfyU=fSml5ESxMEDUlFJ3q?Y>FTB@>iVP>h zSlO>QcO1@~qy6V^skEN%m4F(@S!rq8GD4%^UFcb6q#h|XO@12Y5>#V!k@nvR^gi91 zYO~O0b!AL9#5}(KK<8UCViPx`>{J<80`ue~MheT7OWjXbg4;HfM7Wjx#Ew zEM3HaZ=Hipf=*D?_^Y{DeXi+DLspfpqq|@&cxr9fyT(Y?Vbo@FW!h|Y;hwNjB~q-f zNejbb=^T(DW0I#|d2cenkdYaU`!bKkBvWcKJr-9$B~&cAwfB8e9@bdm5k9BM?+2;C z^!(d9;#!qDjid$AxohoEDU_ae%sDJyFXYnYF-8W&pbhsP8H2Z!-Q$YVApS_{HVgow z<-P|wteoZ^ck?LP#bo?*3~9oIVN^Q6y6LdJtZ zb?W*0|d06r=52uEn#UZXxEZ*15B-<=+(~Ms)%sy%d*zM*6<0p0DSvy&ja=$ z>CE-BurQjpG98E3D$ZnTPpK?iS}L=lpLTLel}3f8MwLx1b#1EZa7^!WrP^oAcBg{; z;e=0Dpp8GBq8P62CqYsV*{wt-y{AHq*M2!dqv9?Un6h!LBarfFhvq9?~@}gJ!H6hde2lSt&fc&|M^21tt2C+t|DY1{PxBVby+n z&hg%$b2WHk_e9n4UQtw>j}&iboUz%dCZc-0V%4nXQE&jQFu;m#5rq{r(Nv0m z5(nL-B=&`H5r|?WY5m&gM6~nKysj1!?k^KPStbw*2n@t<`%<#m0>4#(vOhw1;RV)u zAL)^T4Wa0a0`7L{`=NI9RK(zeci^Xj_x;>X(aL8*e20Papumk^(NI6tzMqeB&fIq4 z>K-TYMTAU#r>O(zYm|s*;GdB!(FU+@_H%HzVm=b^4q@AQj0rEh2b$R;nD+-8b;;cC zoE`QoOzVo}FZ&pHNp;$D;NyRjf;F=01$HmMs>#2Eq^g*{bi*`9TxIG@UOoG(BBVh)9mQLE}s8>@A%>Oesq)db6$doTSp6 z#ab{>ZMd}cKRHY_Kc-*U8LH}%cxtn;ld?C@C-ri>WWmuo{}yV8M1VTk;A6-fZxgXM z9V+#RD5AMUbzfq(t|;DR@q@Do+f&iJZW$9b+Gd%TGudc0Jw+a%xL{wQ|Ea8bm#Prt zz+o9!x+cQ{9z$t%pDRjRX-D`P6lw!^Fj-^RY!{r@;`MW|0-bIi^NwaKW$(B~ddnvl zf(gH3qXwWDH6K053`T`tri(-kbQT>@&s3}}*2l)Rcm>0?Y>kjb@+#kBv?6=e3h?vy z&ksgu4VI=aiKK=mX=auZG(~%p6~Q364fn?mPWx80ZY)_R>$4M)FkgRHXl}|t%imIg z8|YP_>4+OER!oa}Q}Xd^_Ew@2X+5BbZ&c|L0F^6}VUQInX{Si+EmkdKl}&D&aII)I zRC??*EesddsaX5owy65N>{)@5&UhL$b2aMEQaNN0lusmg)}di*WWg`v<1T!pV43NlWTxh-0g995+J&Hr3xnhP=vdzXq zz!1Qj{Jzd=&NM4g9BkyTdc@~F zA;inX>W7%ZCfuTCxqS@32z~O9?mV{+Qn(a4{rUou_kWLFnxYFQJm;;C*pr;%nj)GG zD{4j!A@bra_MU-S*DjXSnO$Sfe?wG{zc6dXUhEf;Mx>09QqMy?ef~E~e)58>%g~Rn zB^dPAFUtRU!2K(RUfIdq>fh*wvbH0lF_O>rHAx0Z9yLBR5@s$1@swyllaQIfBFY?} zhEqA)c~FD2>-e%UtBp(C_FvN5c+AdS0Ne3gMr_l}IP~vdJ-wK|egn6A4>kxyM$YL{ z+c6C%Tqo|^j?YuLGd|mZwV_LFFuPZ52x^ggk--vJ<(n05qA;e2Y#~KJ$MQ*n(gW_$ z&d@gyLYBqW9?rjsSzVR+wC!1-{qBm*F)hEIpa(vcc52PUnX{5@w3oCMuRTSUI!s)E zWSBLlpYDS%yjJM7dbDjirl+!MG?UF&b=DSvUJYmEslKGW}?zsKR@^X!L8d;!I>YB7(@@5bz zYS@yE8@U$hUVae8Nf<_>etsZ>V$(;oBHerQ$4X^%4!N}~m!9@Fxyg092o8A%{N222 zjO_#dstnEM>o=MOFD##5d3}Gm5?|X7I;aow$&DkwH~b#vS;OcfN$+@)f${8Kc_k7C zA!vy1e$!aI(uJ{mB?JY}B#>OX$OVFL=?HF)gmh_Uhgx3>#FDo zM<;T(9g7*4sHMUpZKZTHv4e770HVi5or4g|iyLu^aefWrTNQsk(y+UJ( zR^P`xaLe35N4n#0g#o}jP%_x_HUyM&Vh-kz_ zgkyMV`yPYv<`(m0D-;j5^s)VRh6^W6{!`-oKIAR5Ea7gfk2*J_Om6(n!cYXz;(i{t z{O3itNZag1M=poB@k3M2E|`EK^x<7rKWwqw4UjqWSc{)Kwsy2peV&Kky`1P)Kp@GW z2ng5|oq51e`i|KxVLpj(87Pr7G@?YzTyDtlU4p;iF~J|lKG`km18@*X<*!9JEFFa% zB&ej;5U`K1!1!rK4A4FZ&X)U^sc!bWf-wdbZJjX}Xa~4mg|- zkJ?TxQIIyNfjO!os;fS0{sR#erc?pe>lbbinr%J-pP0JkRoY1!tF6`dtNRmn@9*bi z`Jqn`04}gQx=N|4?I*wn9}~I5f{=iA?|TtB`L?j+aJucPj)mnd8j$fqQJA0O%48Q zgQIm&or5;I`-MdOYa-K+%n^3g68rN=rIId$w$LQIx+eF`VsVPfB#ozbQK+Z5W|=$t zva1}e;Mr+^^yV+w!CA4VL8JYq$InWw3eR)JQ!Je_s+DB49dOopQhW_~9DP;+X#GGA zmoovBi{!jF&7+XLv{9^q=bZ8FNllDb#khXDMpS%K3mv34rY3iaOu{B7$R!!qKPcQq zzn~=brixdjXe$MLu_ppqMmdOf2%|npcY2>`<=-@hH*?!W=+)Nwgr2k1k!%c*$*5c)eFEf6s8$&#tKQUsN4O81+iBMfUHr+w;EC6&S=Y&-tv;7`im_v8`ck& z6O2Ow1{^g>A8em4?;QR_L|VdxBC1J#;e?ZdEdd4B(ubo+O0(L?DLHZsu`lTeAO{iq zYKN^N5jB2wc>HUPBAcJz$WPI-l`5Z|zhAOLXwJ1KEZ0awetaCE&xWm}V{#;Ny{L}1 zpX%=loL~Hk2APAev66l|)s-DndsSO@JgEgiPlJ9YHnqtWZ8e;eqB8n;uvTk4;L5=t zusFnbJGlt>%g^oilJ%`GCR;+jS^sx;9Dn3nEFI@kVCxWXwZHw?Asw~XfnY4>XD*B; zh|TG3pZ^Kp_(y{%7l13)?a#{=|HCS<{Lk0#Kff;o+?|a19US!C|4VUbl8UwB57Oad zvyGBm1@um0ZH)HT4|^+!{RFsde*P#p zVmtj>fR)psP5_ARpD@;Tvi(n*VdL<|SEu{Obtpj#avL4Zzd3J@>FU%O@sgOTywRq! zIn){ba_1KfY?RboIv6s3n2qq_4B%C$uU3U?skVF@#y9C{w3M&_5T-S@CWESNT0*lW zLaptXwbd0;R8DM7+oh#8H8bxvT~BSRgO_%0!QD&)r|vYakjrbj#;~(WBjGwlrQ*(z z>L_92yyZmQ1PenL9?r+raWV$H!u*0VZZefn{in`oV_v&5{i(fhXv$_fK@@+KyZt}| zr>jt7kuqAbY}~2ndiAXRM8c7?OUhdiy{#cbU6}WhiOX+KaTW0^Ox+rer!ftgP4RYe zemPtnl3?NHD%ohN0jr}Le?-i^hlox$P?2*hDJ`KYkriV!1^szZ{^Pu6dvB;O@;$l|V!%DvP5gz1gjNB*dz zMNipk!Ls!}7aO*q@@mOQZn|yivJ;|pmuWM;)3yxjrMzF3Tno_De!ADa(rgq{ZKwo; zhw=6oFrek@W^abtO0E7bq*vJ66%BBD9wl*mmRC3Z=lzfpz5GE3E;qU`}wdvwhY zGp&hZ)KOnskr2|>B^L-8O zVTIB|S>QM1X7zDB;NZtg5_$W2XSn_@xjJ?M&$=)UCIreFhB|Uefr_8Q2S)NlzNYtT zemDpLBJkQNucn#Kj^>qwZI|h`s?G@AV($WKUn)LV#b(F#%nhb}vb0G?Vy%uKa~1sE zIeTTtW}**6FH$Tmlu*##*+rONdre#hN<1+XmvY+vC2GCVMP zSoay(#O%g_tc5+$db-hl{KgOT2B|za%sI6s*lvrarurm9xiRtjo8h*hYl_xIp&0tv z5IE7;R?#2+@&Wl@hxM?dU|H)AMgj1HQPBL)Gekz;+E_*3%Gp>>-~8VkWm3{VIm(gm z4X#U;Lh8asE+xTAFl&X-a9FXtSf1QDCOtqulv=BWALZ2bk8%o@!3RwD{r4=Zx4cOs z9S2AEJUVZ}!D|nzq*(uQ-}EK-&jj(jzWJD0yVCvs_`v-0A}7f=WW{Tcia5}jN>kdJ z+B@}Ua+(9kZiN^fV{(e_1@_3$3F7xwe?)lzQn{7NglfXUYxf(tFZ7q zC0$_Qahz_9WVLbUymRORtXP!ZkXFMfv&C@lJX81Z9&zL~WGB7F(8IDk5jiMn@FHXf zOxUHjBye`_AKd8ws=mPTi4GhWHb#Mdoau~%Mv>MmZ(~!9evO<3M*v<@tf`#EYKOyC z@D(gxURkK&nDsY%j|KBB_=3x=Rii;_;Q0YS_}ERIRhwZ-s*`Hu@EbgL8M=omX`PoI zo#ZOjiRUzyMAt?mneX`AXw2z;+q+ALb(7`^0@^WdOfyBhM8EY*P@c$McG#66qg{7n zcWL{fLbSg=*9T*-oO%wl=!&h%{i><;PFb;~Gn*}C`5KMc*TX^BZ{O)fx>ks&LlI`0 zvRkL4qmcq$?)?n%~1c3 zemNycTB##&Y`J2_!kDC2J(t$psZJkANe6OPk;>vp#c8tiO~!y+ZqA>I*f z1!>T}Z5V0h`3#GjI!mctEw9|2#GM*C7A>YR;HO);#cyd$69YU0?@lU_L zOPG9io*4KDt0Ny#D|sdJ@EOLzo`F!Yz=qJwvN>G1C@Xp)A%RH2gI1|fH%8_~ha2e4IGYz9bC*~T`Lh9`U)Kt#5zbqOM=YLmeOwsW#uOlO7!a4sj)Uij zJL|u0JpQm|{zbf7yk)Un&B2g}y3}*(p#IEFeEjX~E_R0N41{Yl!G$&IrID?m^wo(c z4*3o6A2aYDdldPUb1}ycLt6hM8vQ>gm;Sj&{eM_g{=G)&teSK*CK}{XuO|m1;2B3W z%Uwkf(56F(TbucHuhNXMP*HW*H;^};momO|MnwE z;5NO<{`;e1a=ae+QI-GGcLo3Y1Qx5q+eK0!Hd#3nnD8)k$9KJMS>* z#MQCcn4{Z=I755{6Ao?l#}a`*L1sw2uro^4zOT+>h%Nyn15vG6E8QjMfZcWISzK4C zo5w>K)d`6_T5r4d+vpdHx8CXz-oS32H5)MZg=ey&9+G~G6fUXjZ)p~yJpk$`8KCrr z?l{eKhVb9E5Ip+M!>W!Zb1hmWg}XGYh_tkJHXBscbHUXfte$XAUWL)M6~U?umNaH? zH4`+(8zz0VqMZWnX~?Clkm}PgXDWtrcCvb}$obG*rpKsLnN}SS9W^SS!?~~O6}xCY zYlh?RB#G@L?Wb`6Kq%0d ziS;Vfmg<8y2OG0NXh92mmG>ohO5QRj-tpyj<-w?K#S_0J$*2@gmGg~!FG=K9(36Uf zO^6_z;ZwU-mj$!lCHHoxl+D^fa6{n4^{H~D0f@HbWp3@bg#y8VNG4a5FgUAcuhuy> zx0F4CS)L|ZPZ#ZixsrOgIxB26r&DDHy;MkW)tSp#F=IW7=q3w#jnqE5PmHO$l+>p^ z2%3V_DAJDo!t}GX3FFFK?QHK@l(|%z;rIJ;a~ZmKgv1iFPamO7wGTtD(HkZ{ZtO6s zm&?;6k1okKrx7=3jv`p?!;8K#BFt^o*(Ol#!-d7Zv{#E_k{lzXSc*C}m$VX>Yb2W) zh>+-#S}eXp6E8eGZEXy4KA7EPtJLgsTD-~8!JBZ%230&;h3Py1`p)2dMd1@TO3f>l zJ6YU&a^5~m^k-Oq0on(p!0+s{OwdAdWE0V@K-*=L0pSycud&I_bq-ZX%J}>4D{>0l z&l70w1qpADNpDZe$DveLO&~5EOaypZt*=vUz{0#+=AgVOsD$RMCe2(~jDcbbl_Oqx zLq?c5c9^re(Gz_;Y3TIy890l(N-OMu9rtKB7#~*>TKreGroddp0}2#p2T%DU#1P~q z4;&J7h#(pqbE}`fhYUnMlbANEQ8qVa#YRMa?z90#9l`q)mQCv3Go2n<&Q?Uo(mT2o z;M3MWb59{qB;do|Nd*C}q?H6Q^%EZAV5cE^wfCjd78XMO?Pp_DuDok^EsxJonUdC& zNrF( zD_V}$G}7$;^RQ5V@}EpA|3DA+9MvIce~^QWpQZGFfgb!TZ<+C5=s}jEw&g#4DnvFI zD=fn|H5!)dB;>8YPyCcg2oy*P-eO?>uncLDV~bbU42+r?zD2MEVDEq*^7~ujnne)W zn|m~_*PHAwn~aRSK0co?yYR~<@`GIv5^DE$JAzvS^&!Z?jxLo_-dXxZg!`X*xd*T! z=S<)T*tjy=;c{c6AevzooVEcjT#9k^8BkLq-PBV&f_2!i!~!+MhHsZhx1)W@qutx-8p>d@fz1+zDrV2;spIve|Io@MK3O=>K)PQ&@s09a6IiU&7 zgA514Y&iE!5c0&Qw|{~L@RsM4j>^pl28i7ffs<+@x)e1na*=D8G5u951XTdgwym{b zPWZDe9cP7t9G*>Ti^$0IN5b-oQSAcKglEnQgy+*7RgPj0;7zqeJyj6dPA7QSOiL(g znW6H;2$;bIBmWW)r6htB4l2ctU6Zt9A41FV5v@95iw$%68+J9L)p^lbHR%K4M>F*uhXOGV_P>cx=D=O|Fb1dxc}a(~MWxnQ-q{tyC( zC_kM9D4I0+WD~+R_1Gz`#4-&B=?0|H`%0Ack2!0cSTJ~e3Nl|iFWWEOTo1J^#?LK` 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 0, "Expected to get some HAR entries, found 0"); + assertTrue( + har.getLog().getEntries() + .stream() + .anyMatch(e -> e.getRequest().getUrl().toString().contains("google")), + "Expected to find HAR Entry with url containing 'google'"); + } +} diff --git a/clients/java/.openapi-generator/FILES b/clients/java/.openapi-generator/FILES index 10c578282e..df19246490 100644 --- a/clients/java/.openapi-generator/FILES +++ b/clients/java/.openapi-generator/FILES @@ -62,3 +62,19 @@ src/main/java/com/browserup/proxy_client/auth/ApiKeyAuth.java src/main/java/com/browserup/proxy_client/auth/Authentication.java src/main/java/com/browserup/proxy_client/auth/HttpBasicAuth.java src/main/java/com/browserup/proxy_client/auth/HttpBearerAuth.java +src/test/java/com/browserup/proxy/api/BrowserUpProxyApiTest.java +src/test/java/com/browserup/proxy_client/EntryRequestCookiesTest.java +src/test/java/com/browserup/proxy_client/EntryRequestQueryStringTest.java +src/test/java/com/browserup/proxy_client/EntryRequestTest.java +src/test/java/com/browserup/proxy_client/EntryResponseContentTest.java +src/test/java/com/browserup/proxy_client/EntryResponseTest.java +src/test/java/com/browserup/proxy_client/EntryTest.java +src/test/java/com/browserup/proxy_client/HarLogCreatorTest.java +src/test/java/com/browserup/proxy_client/HarLogTest.java +src/test/java/com/browserup/proxy_client/HarTest.java +src/test/java/com/browserup/proxy_client/HeaderTest.java +src/test/java/com/browserup/proxy_client/MatchCriteriaTest.java +src/test/java/com/browserup/proxy_client/NameValuePairTest.java +src/test/java/com/browserup/proxy_client/PagePageTimingsTest.java +src/test/java/com/browserup/proxy_client/PageTest.java +src/test/java/com/browserup/proxy_client/VerifyResultTest.java diff --git a/clients/java/api/openapi.yaml b/clients/java/api/openapi.yaml index dc3f6d991f..0826b3a2a1 100644 --- a/clients/java/api/openapi.yaml +++ b/clients/java/api/openapi.yaml @@ -239,12 +239,12 @@ components: schemas: NameValuePair: properties: - value: - description: Value to match - type: string name: description: Name to match type: string + value: + description: Value to match + type: string type: object MatchCriteria: description: |- @@ -343,207 +343,6 @@ components: description: Name to match type: boolean type: object - Entry: - example: - startedDateTime: startedDateTime - request: - headers: - - name: name - comment: comment - value: value - - name: name - comment: comment - value: value - httpVersion: httpVersion - method: method - headersSize: 5 - bodySize: 5 - comment: comment - queryString: - - name: name - comment: comment - value: value - - name: name - comment: comment - value: value - postData: '{}' - url: https://openapi-generator.tech - cookies: - - path: path - expires: expires - domain: domain - name: name - comment: comment - httpOnly: true - secure: true - value: value - - path: path - expires: expires - domain: domain - name: name - comment: comment - httpOnly: true - secure: true - value: value - cache: '{}' - response: - headers: - - name: name - comment: comment - value: value - - name: name - comment: comment - value: value - httpVersion: httpVersion - redirectURL: redirectURL - statusText: statusText - headersSize: 3 - bodySize: 2 - comment: comment - cookies: - - path: path - expires: expires - domain: domain - name: name - comment: comment - httpOnly: true - secure: true - value: value - - path: path - expires: expires - domain: domain - name: name - comment: comment - httpOnly: true - secure: true - value: value - content: - size: 7 - comment: comment - mimeType: mimeType - text: text - compression: 9 - encoding: encoding - status: 2 - serverIPAddress: serverIPAddress - timings: '{}' - connection: connection - comment: comment - time: 0.14658129805029452 - pageref: pageref - properties: - pageref: - type: string - startedDateTime: - type: string - time: - minimum: 0 - type: number - request: - $ref: '#/components/schemas/Entry_request' - response: - $ref: '#/components/schemas/Entry_response' - cache: - properties: - beforeRequest: - oneOf: - - type: "null" - - properties: - expires: - type: string - lastAccess: - type: string - eTag: - type: string - hitCount: - type: integer - comment: - type: string - required: - - eTag - - hitCount - - lastAccess - type: object - afterRequest: - oneOf: - - type: "null" - - properties: - expires: - type: string - lastAccess: - type: string - eTag: - type: string - hitCount: - type: integer - comment: - type: string - required: - - eTag - - hitCount - - lastAccess - type: object - comment: - type: string - timings: - properties: - dns: - minimum: -1 - type: number - connect: - minimum: -1 - type: number - blocked: - minimum: -1 - type: number - send: - minimum: -1 - type: number - wait: - minimum: -1 - type: number - receive: - minimum: -1 - type: number - ssl: - minimum: -1 - type: number - comment: - type: string - required: - - receive - - send - - wait - serverIPAddress: - type: string - connection: - type: string - comment: - type: string - required: - - cache - - request - - response - - startedDateTime - - time - - timings - type: object - Header: - example: - name: name - comment: comment - value: value - properties: - name: - type: string - value: - type: string - comment: - type: string - required: - - name - - value - type: object Har: example: log: @@ -552,7 +351,7 @@ components: comment: comment version: version entries: - - startedDateTime: startedDateTime + - startedDateTime: 2000-01-23T04:56:07.000+00:00 request: headers: - name: name @@ -638,7 +437,7 @@ components: comment: comment time: 0.14658129805029452 pageref: pageref - - startedDateTime: startedDateTime + - startedDateTime: 2000-01-23T04:56:07.000+00:00 request: headers: - name: name @@ -753,8 +552,21 @@ components: required: - log type: object - CustomHarData: - minProperties: 1 + Header: + example: + name: name + comment: comment + value: value + properties: + name: + type: string + value: + type: string + comment: + type: string + required: + - name + - value type: object Page: example: @@ -784,253 +596,194 @@ components: - startedDateTime - title type: object - Entry_request_cookies: + CustomHarData: + minProperties: 1 + type: object + Entry: example: - path: path - expires: expires - domain: domain - name: name - comment: comment - httpOnly: true - secure: true - value: value - properties: - name: - type: string - value: - type: string - path: - type: string - domain: - type: string - expires: - type: string - httpOnly: - type: boolean - secure: - type: boolean - comment: - type: string - required: - - name - - value - type: object - Entry_request_queryString: - example: - name: name - comment: comment - value: value - properties: - name: - type: string - value: - type: string - comment: - type: string - required: - - name - - value - type: object - Entry_request: - example: - headers: - - name: name + startedDateTime: 2000-01-23T04:56:07.000+00:00 + request: + headers: + - name: name + comment: comment + value: value + - name: name + comment: comment + value: value + httpVersion: httpVersion + method: method + headersSize: 5 + bodySize: 5 comment: comment - value: value - - name: name + queryString: + - name: name + comment: comment + value: value + - name: name + comment: comment + value: value + postData: '{}' + url: https://openapi-generator.tech + cookies: + - path: path + expires: expires + domain: domain + name: name + comment: comment + httpOnly: true + secure: true + value: value + - path: path + expires: expires + domain: domain + name: name + comment: comment + httpOnly: true + secure: true + value: value + cache: '{}' + response: + headers: + - name: name + comment: comment + value: value + - name: name + comment: comment + value: value + httpVersion: httpVersion + redirectURL: redirectURL + statusText: statusText + headersSize: 3 + bodySize: 2 comment: comment - value: value - httpVersion: httpVersion - method: method - headersSize: 5 - bodySize: 5 + cookies: + - path: path + expires: expires + domain: domain + name: name + comment: comment + httpOnly: true + secure: true + value: value + - path: path + expires: expires + domain: domain + name: name + comment: comment + httpOnly: true + secure: true + value: value + content: + size: 7 + comment: comment + mimeType: mimeType + text: text + compression: 9 + encoding: encoding + status: 2 + serverIPAddress: serverIPAddress + timings: '{}' + connection: connection comment: comment - queryString: - - name: name - comment: comment - value: value - - name: name - comment: comment - value: value - postData: '{}' - url: https://openapi-generator.tech - cookies: - - path: path - expires: expires - domain: domain - name: name - comment: comment - httpOnly: true - secure: true - value: value - - path: path - expires: expires - domain: domain - name: name - comment: comment - httpOnly: true - secure: true - value: value + time: 0.14658129805029452 + pageref: pageref properties: - method: - type: string - url: - format: uri + pageref: type: string - httpVersion: + startedDateTime: + format: date-time type: string - cookies: - items: - $ref: '#/components/schemas/Entry_request_cookies' - type: array - headers: - items: - $ref: '#/components/schemas/Header' - type: array - queryString: - items: - $ref: '#/components/schemas/Entry_request_queryString' - type: array - postData: - description: Posted data info. + time: + minimum: 0 + type: number + request: + $ref: '#/components/schemas/Entry_request' + response: + $ref: '#/components/schemas/Entry_response' + cache: properties: - mimeType: - type: string - text: - type: string - params: - items: - properties: - name: + beforeRequest: + oneOf: + - type: "null" + - properties: + expires: type: string - value: + lastAccess: type: string - fileName: + eTag: type: string - contentType: + hitCount: + type: integer + comment: + type: string + required: + - eTag + - hitCount + - lastAccess + type: object + afterRequest: + oneOf: + - type: "null" + - properties: + expires: type: string + lastAccess: + type: string + eTag: + type: string + hitCount: + type: integer comment: type: string + required: + - eTag + - hitCount + - lastAccess type: object - type: array + comment: + type: string + timings: + properties: + dns: + minimum: -1 + type: number + connect: + minimum: -1 + type: number + blocked: + minimum: -1 + type: number + send: + minimum: -1 + type: number + wait: + minimum: -1 + type: number + receive: + minimum: -1 + type: number + ssl: + minimum: -1 + type: number + comment: + type: string required: - - mimeType - headersSize: - type: integer - bodySize: - type: integer - comment: - type: string - required: - - bodySize - - cookies - - headers - - headersSize - - httpVersion - - method - - queryString - - url - type: object - Entry_response_content: - example: - size: 7 - comment: comment - mimeType: mimeType - text: text - compression: 9 - encoding: encoding - properties: - size: - type: integer - compression: - type: integer - mimeType: - type: string - text: - type: string - encoding: - type: string - comment: - type: string - required: - - mimeType - - size - type: object - Entry_response: - example: - headers: - - name: name - comment: comment - value: value - - name: name - comment: comment - value: value - httpVersion: httpVersion - redirectURL: redirectURL - statusText: statusText - headersSize: 3 - bodySize: 2 - comment: comment - cookies: - - path: path - expires: expires - domain: domain - name: name - comment: comment - httpOnly: true - secure: true - value: value - - path: path - expires: expires - domain: domain - name: name - comment: comment - httpOnly: true - secure: true - value: value - content: - size: 7 - comment: comment - mimeType: mimeType - text: text - compression: 9 - encoding: encoding - status: 2 - properties: - status: - type: integer - statusText: - type: string - httpVersion: + - receive + - send + - wait + serverIPAddress: type: string - cookies: - items: - $ref: '#/components/schemas/Entry_request_cookies' - type: array - headers: - items: - $ref: '#/components/schemas/Header' - type: array - content: - $ref: '#/components/schemas/Entry_response_content' - redirectURL: + connection: type: string - headersSize: - type: integer - bodySize: - type: integer comment: type: string required: - - bodySize - - content - - cookies - - headers - - headersSize - - httpVersion - - redirectURL - - status - - statusText + - cache + - request + - response + - startedDateTime + - time + - timings type: object Har_log_creator: example: @@ -1055,7 +808,7 @@ components: comment: comment version: version entries: - - startedDateTime: startedDateTime + - startedDateTime: 2000-01-23T04:56:07.000+00:00 request: headers: - name: name @@ -1141,7 +894,7 @@ components: comment: comment time: 0.14658129805029452 pageref: pageref - - startedDateTime: startedDateTime + - startedDateTime: 2000-01-23T04:56:07.000+00:00 request: headers: - name: name @@ -1290,4 +1043,252 @@ components: comment: type: string type: object + Entry_request_cookies: + example: + path: path + expires: expires + domain: domain + name: name + comment: comment + httpOnly: true + secure: true + value: value + properties: + name: + type: string + value: + type: string + path: + type: string + domain: + type: string + expires: + type: string + httpOnly: + type: boolean + secure: + type: boolean + comment: + type: string + required: + - name + - value + type: object + Entry_request_queryString: + example: + name: name + comment: comment + value: value + properties: + name: + type: string + value: + type: string + comment: + type: string + required: + - name + - value + type: object + Entry_request: + example: + headers: + - name: name + comment: comment + value: value + - name: name + comment: comment + value: value + httpVersion: httpVersion + method: method + headersSize: 5 + bodySize: 5 + comment: comment + queryString: + - name: name + comment: comment + value: value + - name: name + comment: comment + value: value + postData: '{}' + url: https://openapi-generator.tech + cookies: + - path: path + expires: expires + domain: domain + name: name + comment: comment + httpOnly: true + secure: true + value: value + - path: path + expires: expires + domain: domain + name: name + comment: comment + httpOnly: true + secure: true + value: value + properties: + method: + type: string + url: + format: uri + type: string + httpVersion: + type: string + cookies: + items: + $ref: '#/components/schemas/Entry_request_cookies' + type: array + headers: + items: + $ref: '#/components/schemas/Header' + type: array + queryString: + items: + $ref: '#/components/schemas/Entry_request_queryString' + type: array + postData: + description: Posted data info. + properties: + mimeType: + type: string + text: + type: string + params: + items: + properties: + name: + type: string + value: + type: string + fileName: + type: string + contentType: + type: string + comment: + type: string + type: object + type: array + required: + - mimeType + headersSize: + type: integer + bodySize: + type: integer + comment: + type: string + required: + - bodySize + - cookies + - headers + - headersSize + - httpVersion + - method + - queryString + - url + type: object + Entry_response_content: + example: + size: 7 + comment: comment + mimeType: mimeType + text: text + compression: 9 + encoding: encoding + properties: + size: + type: integer + compression: + type: integer + mimeType: + type: string + text: + type: string + encoding: + type: string + comment: + type: string + required: + - mimeType + - size + type: object + Entry_response: + example: + headers: + - name: name + comment: comment + value: value + - name: name + comment: comment + value: value + httpVersion: httpVersion + redirectURL: redirectURL + statusText: statusText + headersSize: 3 + bodySize: 2 + comment: comment + cookies: + - path: path + expires: expires + domain: domain + name: name + comment: comment + httpOnly: true + secure: true + value: value + - path: path + expires: expires + domain: domain + name: name + comment: comment + httpOnly: true + secure: true + value: value + content: + size: 7 + comment: comment + mimeType: mimeType + text: text + compression: 9 + encoding: encoding + status: 2 + properties: + status: + type: integer + statusText: + type: string + httpVersion: + type: string + cookies: + items: + $ref: '#/components/schemas/Entry_request_cookies' + type: array + headers: + items: + $ref: '#/components/schemas/Header' + type: array + content: + $ref: '#/components/schemas/Entry_response_content' + redirectURL: + type: string + headersSize: + type: integer + bodySize: + type: integer + comment: + type: string + required: + - bodySize + - content + - cookies + - headers + - headersSize + - httpVersion + - redirectURL + - status + - statusText + type: object diff --git a/clients/java/docs/Entry.md b/clients/java/docs/Entry.md index 4852472efa..a912ff2ffb 100644 --- a/clients/java/docs/Entry.md +++ b/clients/java/docs/Entry.md @@ -8,7 +8,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **pageref** | **String** | | [optional] -**startedDateTime** | **String** | | +**startedDateTime** | **OffsetDateTime** | | **time** | **BigDecimal** | | **request** | [**EntryRequest**](EntryRequest.md) | | **response** | [**EntryResponse**](EntryResponse.md) | | diff --git a/clients/java/docs/NameValuePair.md b/clients/java/docs/NameValuePair.md index b0ddf6b499..96ddee1588 100644 --- a/clients/java/docs/NameValuePair.md +++ b/clients/java/docs/NameValuePair.md @@ -7,8 +7,8 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**value** | **String** | Value to match | [optional] **name** | **String** | Name to match | [optional] +**value** | **String** | Value to match | [optional] diff --git a/clients/java/gradlew b/clients/java/gradlew old mode 100644 new mode 100755 diff --git a/clients/java/openapitools.json b/clients/java/openapitools.json new file mode 100644 index 0000000000..d2fdbae832 --- /dev/null +++ b/clients/java/openapitools.json @@ -0,0 +1,7 @@ +{ + "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "5.1.1" + } +} diff --git a/clients/java/src/main/java/com/browserup/proxy_client/Entry.java b/clients/java/src/main/java/com/browserup/proxy_client/Entry.java index 06df4d7e81..cbe088ecd8 100644 --- a/clients/java/src/main/java/com/browserup/proxy_client/Entry.java +++ b/clients/java/src/main/java/com/browserup/proxy_client/Entry.java @@ -26,6 +26,7 @@ import io.swagger.annotations.ApiModelProperty; import java.io.IOException; import java.math.BigDecimal; +import org.threeten.bp.OffsetDateTime; /** * Entry @@ -38,7 +39,7 @@ public class Entry { public static final String SERIALIZED_NAME_STARTED_DATE_TIME = "startedDateTime"; @SerializedName(SERIALIZED_NAME_STARTED_DATE_TIME) - private String startedDateTime; + private OffsetDateTime startedDateTime; public static final String SERIALIZED_NAME_TIME = "time"; @SerializedName(SERIALIZED_NAME_TIME) @@ -96,7 +97,7 @@ public void setPageref(String pageref) { } - public Entry startedDateTime(String startedDateTime) { + public Entry startedDateTime(OffsetDateTime startedDateTime) { this.startedDateTime = startedDateTime; return this; @@ -108,12 +109,12 @@ public Entry startedDateTime(String startedDateTime) { **/ @ApiModelProperty(required = true, value = "") - public String getStartedDateTime() { + public OffsetDateTime getStartedDateTime() { return startedDateTime; } - public void setStartedDateTime(String startedDateTime) { + public void setStartedDateTime(OffsetDateTime startedDateTime) { this.startedDateTime = startedDateTime; } diff --git a/clients/java/src/main/java/com/browserup/proxy_client/NameValuePair.java b/clients/java/src/main/java/com/browserup/proxy_client/NameValuePair.java index 356ff65083..3622ec0521 100644 --- a/clients/java/src/main/java/com/browserup/proxy_client/NameValuePair.java +++ b/clients/java/src/main/java/com/browserup/proxy_client/NameValuePair.java @@ -29,58 +29,58 @@ */ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class NameValuePair { - public static final String SERIALIZED_NAME_VALUE = "value"; - @SerializedName(SERIALIZED_NAME_VALUE) - private String value; - public static final String SERIALIZED_NAME_NAME = "name"; @SerializedName(SERIALIZED_NAME_NAME) private String name; + public static final String SERIALIZED_NAME_VALUE = "value"; + @SerializedName(SERIALIZED_NAME_VALUE) + private String value; + - public NameValuePair value(String value) { + public NameValuePair name(String name) { - this.value = value; + this.name = name; return this; } /** - * Value to match - * @return value + * Name to match + * @return name **/ @javax.annotation.Nullable - @ApiModelProperty(value = "Value to match") + @ApiModelProperty(value = "Name to match") - public String getValue() { - return value; + public String getName() { + return name; } - public void setValue(String value) { - this.value = value; + public void setName(String name) { + this.name = name; } - public NameValuePair name(String name) { + public NameValuePair value(String value) { - this.name = name; + this.value = value; return this; } /** - * Name to match - * @return name + * Value to match + * @return value **/ @javax.annotation.Nullable - @ApiModelProperty(value = "Name to match") + @ApiModelProperty(value = "Value to match") - public String getName() { - return name; + public String getValue() { + return value; } - public void setName(String name) { - this.name = name; + public void setValue(String value) { + this.value = value; } @@ -93,21 +93,21 @@ public boolean equals(Object o) { return false; } NameValuePair nameValuePair = (NameValuePair) o; - return Objects.equals(this.value, nameValuePair.value) && - Objects.equals(this.name, nameValuePair.name); + return Objects.equals(this.name, nameValuePair.name) && + Objects.equals(this.value, nameValuePair.value); } @Override public int hashCode() { - return Objects.hash(value, name); + return Objects.hash(name, value); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class NameValuePair {\n"); - sb.append(" value: ").append(toIndentedString(value)).append("\n"); sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" value: ").append(toIndentedString(value)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/clients/java/src/test/java/com/browserup/proxy/api/BrowserUpProxyApiTest.java b/clients/java/src/test/java/com/browserup/proxy/api/BrowserUpProxyApiTest.java index 0a99b70170..c25ac90541 100644 --- a/clients/java/src/test/java/com/browserup/proxy/api/BrowserUpProxyApiTest.java +++ b/clients/java/src/test/java/com/browserup/proxy/api/BrowserUpProxyApiTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/EntryRequestCookiesTest.java b/clients/java/src/test/java/com/browserup/proxy_client/EntryRequestCookiesTest.java index 74415f83ff..489e9e3670 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/EntryRequestCookiesTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/EntryRequestCookiesTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/EntryRequestQueryStringTest.java b/clients/java/src/test/java/com/browserup/proxy_client/EntryRequestQueryStringTest.java index 1fdaa352da..e0f20e18f9 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/EntryRequestQueryStringTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/EntryRequestQueryStringTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/EntryRequestTest.java b/clients/java/src/test/java/com/browserup/proxy_client/EntryRequestTest.java index a229b22380..a6db8c2be3 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/EntryRequestTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/EntryRequestTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/EntryResponseContentTest.java b/clients/java/src/test/java/com/browserup/proxy_client/EntryResponseContentTest.java index be394cb1c6..2248bccaf4 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/EntryResponseContentTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/EntryResponseContentTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/EntryResponseTest.java b/clients/java/src/test/java/com/browserup/proxy_client/EntryResponseTest.java index 9defbc8865..dfb9a73375 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/EntryResponseTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/EntryResponseTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/EntryTest.java b/clients/java/src/test/java/com/browserup/proxy_client/EntryTest.java index a8348ce12d..31af580a3c 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/EntryTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/EntryTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * @@ -24,6 +24,7 @@ import io.swagger.annotations.ApiModelProperty; import java.io.IOException; import java.math.BigDecimal; +import org.threeten.bp.OffsetDateTime; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; diff --git a/clients/java/src/test/java/com/browserup/proxy_client/HarLogCreatorTest.java b/clients/java/src/test/java/com/browserup/proxy_client/HarLogCreatorTest.java index caade1631e..b3142fc820 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/HarLogCreatorTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/HarLogCreatorTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/HarLogTest.java b/clients/java/src/test/java/com/browserup/proxy_client/HarLogTest.java index 15858f411c..acc4e3b36b 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/HarLogTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/HarLogTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/HarTest.java b/clients/java/src/test/java/com/browserup/proxy_client/HarTest.java index 807c0e62e8..7915a9269f 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/HarTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/HarTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/HeaderTest.java b/clients/java/src/test/java/com/browserup/proxy_client/HeaderTest.java index f5f59ad733..cc91ba3f80 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/HeaderTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/HeaderTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/MatchCriteriaTest.java b/clients/java/src/test/java/com/browserup/proxy_client/MatchCriteriaTest.java index 40721a9e99..75f6ea68fc 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/MatchCriteriaTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/MatchCriteriaTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/NameValuePairTest.java b/clients/java/src/test/java/com/browserup/proxy_client/NameValuePairTest.java index aa31621596..6adda7e336 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/NameValuePairTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/NameValuePairTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * @@ -41,19 +41,19 @@ public void testNameValuePair() { } /** - * Test the property 'value' + * Test the property 'name' */ @Test - public void valueTest() { - // TODO: test value + public void nameTest() { + // TODO: test name } /** - * Test the property 'name' + * Test the property 'value' */ @Test - public void nameTest() { - // TODO: test name + public void valueTest() { + // TODO: test value } } diff --git a/clients/java/src/test/java/com/browserup/proxy_client/PagePageTimingsTest.java b/clients/java/src/test/java/com/browserup/proxy_client/PagePageTimingsTest.java index 29aea6e305..5c6b790e6e 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/PagePageTimingsTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/PagePageTimingsTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/PageTest.java b/clients/java/src/test/java/com/browserup/proxy_client/PageTest.java index a42f083e05..5382fb0d9d 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/PageTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/PageTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/java/src/test/java/com/browserup/proxy_client/VerifyResultTest.java b/clients/java/src/test/java/com/browserup/proxy_client/VerifyResultTest.java index 578c4f6770..fdeb1db5a4 100644 --- a/clients/java/src/test/java/com/browserup/proxy_client/VerifyResultTest.java +++ b/clients/java/src/test/java/com/browserup/proxy_client/VerifyResultTest.java @@ -1,6 +1,6 @@ /* * BrowserUp Proxy - * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ + * ___ This is the REST API for controlling the BrowserUp Proxy. The BrowserUp Proxy is a swiss army knife for automated testing that captures HTTP traffic in HAR files. It is also useful for Selenium/Cypress tests. ___ * * The version of the OpenAPI document: 1.0.0 * diff --git a/clients/openapitools.json b/clients/openapitools.json new file mode 100644 index 0000000000..d2fdbae832 --- /dev/null +++ b/clients/openapitools.json @@ -0,0 +1,7 @@ +{ + "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "5.1.1" + } +} diff --git a/mitmproxy/addons/browserup/har/har_builder.py b/mitmproxy/addons/browserup/har/har_builder.py index 0e2208f320..662b8175a9 100644 --- a/mitmproxy/addons/browserup/har/har_builder.py +++ b/mitmproxy/addons/browserup/har/har_builder.py @@ -1,4 +1,5 @@ from datetime import datetime +from datetime import timezone class HarBuilder(): @@ -32,7 +33,7 @@ def page_timings(): } @staticmethod - def page(title="", id="", started_date_time=datetime.utcnow().isoformat()): + def page(title="", id="", started_date_time=str(datetime.now(tz=timezone.utc).isoformat())): return { "title": title, "id": id, diff --git a/mitmproxy/addons/browserup/har/har_resources.py b/mitmproxy/addons/browserup/har/har_resources.py index 7705f953da..5923ac220d 100644 --- a/mitmproxy/addons/browserup/har/har_resources.py +++ b/mitmproxy/addons/browserup/har/har_resources.py @@ -33,7 +33,7 @@ class RespondWithHarMixin: def respond_with_har(self, resp, har, har_file): resp.status = falcon.HTTP_200 resp.content_type = falcon.MEDIA_JSON - resp.body = json.dumps({"path": har_file.name, "json": har}, ensure_ascii=False) + resp.body = json.dumps(har, ensure_ascii=False) class VerifyResponseMixin: diff --git a/mitmproxy/addons/browserup/schemas/Entry.json b/mitmproxy/addons/browserup/schemas/Entry.json index 3f8c80df60..37f3e292eb 100644 --- a/mitmproxy/addons/browserup/schemas/Entry.json +++ b/mitmproxy/addons/browserup/schemas/Entry.json @@ -378,4 +378,4 @@ "type": "string" } } -} \ No newline at end of file +} diff --git a/mitmproxy/addons/browserup/schemas/Page.json b/mitmproxy/addons/browserup/schemas/Page.json index 6de3e5bcb4..7028cb5be3 100644 --- a/mitmproxy/addons/browserup/schemas/Page.json +++ b/mitmproxy/addons/browserup/schemas/Page.json @@ -8,8 +8,7 @@ ], "properties": { "startedDateTime": { - "type": "string", - "format": "date-time" + "type": "string" }, "id": { "type": "string" @@ -37,4 +36,4 @@ "type": "string" } } -} \ No newline at end of file +} diff --git a/openapitools.json b/openapitools.json new file mode 100644 index 0000000000..d2fdbae832 --- /dev/null +++ b/openapitools.json @@ -0,0 +1,7 @@ +{ + "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "5.1.1" + } +} From 7cd116a581164b6f2b003b2fdadfb38371654f36 Mon Sep 17 00:00:00 2001 From: HereC Date: Sat, 29 May 2021 15:05:55 -0400 Subject: [PATCH 2/4] Update main.yml Try and disable noisy failures on out dir. --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 36d3a8466c..62a1dbe72f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,8 +13,10 @@ jobs: - uses: actions/checkout@v2 with: persist-credentials: false + only_warn: 1 - uses: TrueBrain/actions-flake8@9a43ff1b2c7b96f3edffc48a49973ce3de116ba1 # mirrored at https://github.com/mitmproxy/mitmproxy/settings/actions + lint-local: if: github.event_name == 'push' runs-on: ubuntu-latest From 80e0d26a8e9c949ee1f4f9203c689e7af2aa288a Mon Sep 17 00:00:00 2001 From: HereC Date: Sat, 29 May 2021 15:20:57 -0400 Subject: [PATCH 3/4] Update main.yml Next attempt at limiting lint noise--limit to path. --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 62a1dbe72f..23db871ec6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v2 with: persist-credentials: false - only_warn: 1 + path: mitmproxy - uses: TrueBrain/actions-flake8@9a43ff1b2c7b96f3edffc48a49973ce3de116ba1 # mirrored at https://github.com/mitmproxy/mitmproxy/settings/actions From 1849cfdc784d6613abc780200dc67031ca185d5d Mon Sep 17 00:00:00 2001 From: HereC Date: Sun, 30 May 2021 20:03:19 -0400 Subject: [PATCH 4/4] Update main.yml Turn off pr lint since it can't omit folders. --- .github/workflows/main.yml | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b06c313791..781a5781f6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,18 +5,7 @@ on: [ push, pull_request ] permissions: contents: read -jobs: - lint-pr: - if: github.event_name == 'pull_request' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - persist-credentials: false - path: mitmproxy - - uses: TrueBrain/actions-flake8@9a43ff1b2c7b96f3edffc48a49973ce3de116ba1 - # mirrored at https://github.com/mitmproxy/mitmproxy/settings/actions - +jobs: lint-local: if: github.event_name == 'push' runs-on: ubuntu-latest