From 153ec9ca55183f03934313a0f7d7456aaf110b8f Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 3 Jul 2023 14:14:37 +0200 Subject: [PATCH] worksheet pdf wip --- httpdocs/composer.json | 1 + httpdocs/composer.lock | 337 +++++++++++++++- httpdocs/config/packages/doctrine.yaml | 2 + .../config/packages/ramsey_uuid_doctrine.yaml | 4 + httpdocs/import/mpp_import_din.xlsx | Bin 112425 -> 91178 bytes httpdocs/public/assets/js/my-bim-score.js | 163 +++----- httpdocs/src/Command/CmdImportDinAssets.php | 3 - httpdocs/src/Controller/UserController.php | 348 +++++------------ httpdocs/src/Entity/Catalogue.php | 222 ----------- httpdocs/src/Entity/CatalogueDetail.php | 214 ---------- httpdocs/src/Entity/DinAsset.php | 52 +-- httpdocs/src/Entity/Question.php | 96 ----- httpdocs/src/Entity/QuestionType.php | 151 ------- httpdocs/src/Entity/User.php | 102 ++--- httpdocs/src/Entity/UserWorksheet.php | 367 ++++++++++++++++++ httpdocs/src/Entity/UserWorksheetTask.php | 239 ++++++++++++ httpdocs/src/Repository/UserRepository.php | 77 +--- httpdocs/src/Service/CalculatorService.php | 59 +++ httpdocs/symfony.lock | 21 + .../templates/pages/risk_analysis.html.twig | 13 +- httpdocs/templates/pages/start.html.twig | 32 +- httpdocs/templates/pages/worksheet.html.twig | 79 ++++ 22 files changed, 1311 insertions(+), 1271 deletions(-) create mode 100644 httpdocs/config/packages/ramsey_uuid_doctrine.yaml delete mode 100644 httpdocs/src/Entity/Catalogue.php delete mode 100644 httpdocs/src/Entity/CatalogueDetail.php delete mode 100644 httpdocs/src/Entity/Question.php delete mode 100644 httpdocs/src/Entity/QuestionType.php create mode 100644 httpdocs/src/Entity/UserWorksheet.php create mode 100644 httpdocs/src/Entity/UserWorksheetTask.php create mode 100644 httpdocs/src/Service/CalculatorService.php create mode 100644 httpdocs/templates/pages/worksheet.html.twig diff --git a/httpdocs/composer.json b/httpdocs/composer.json index df8b93d..5003981 100644 --- a/httpdocs/composer.json +++ b/httpdocs/composer.json @@ -15,6 +15,7 @@ "dompdf/dompdf": "^1.0", "phpdocumentor/reflection-docblock": "^5.2", "phpoffice/phpspreadsheet": "^1.29", + "ramsey/uuid-doctrine": "^2.0", "sensio/framework-extra-bundle": "^5.1", "symfony/asset": "5.2.*", "symfony/console": "5.2.*", diff --git a/httpdocs/composer.lock b/httpdocs/composer.lock index abdcfc5..ca23327 100644 --- a/httpdocs/composer.lock +++ b/httpdocs/composer.lock @@ -4,8 +4,68 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "11ca8917ee233c35def1ef75d84a8deb", + "content-hash": "358bc2359e8ab59c4f397e9c581de202", "packages": [ + { + "name": "brick/math", + "version": "0.9.3", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.9.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.9.3" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], + "time": "2021-08-15T20:50:18+00:00" + }, { "name": "composer/package-versions-deprecated", "version": "1.11.99.1", @@ -2941,6 +3001,281 @@ }, "time": "2017-10-23T01:57:42+00:00" }, + { + "name": "ramsey/collection", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/ad7475d1c9e70b190ecffc58f2d989416af339b4", + "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.3.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-27T19:12:24+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.2.3", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "shasum": "" + }, + "require": { + "brick/math": "^0.8 || ^0.9", + "ext-json": "*", + "php": "^7.2 || ^8.0", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.2.3" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2021-09-25T23:10:38+00:00" + }, + { + "name": "ramsey/uuid-doctrine", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid-doctrine.git", + "reference": "b002676be0e5e342d857c47f1b68e24de6841d08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid-doctrine/zipball/b002676be0e5e342d857c47f1b68e24de6841d08", + "reference": "b002676be0e5e342d857c47f1b68e24de6841d08", + "shasum": "" + }, + "require": { + "doctrine/dbal": "^2.8 || ^3.0", + "php": "^7.4 || ^8.0", + "ramsey/uuid": "^3.9.7 || ^4.0" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "doctrine/orm": "^2.5", + "ergebnis/composer-normalize": "^2.28.3", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-alpha4", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Uuid\\Doctrine\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "Use ramsey/uuid as a Doctrine field type.", + "keywords": [ + "database", + "doctrine", + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid-doctrine/issues", + "source": "https://github.com/ramsey/uuid-doctrine/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid-doctrine", + "type": "tidelift" + } + ], + "time": "2022-12-20T23:38:28+00:00" + }, { "name": "sabberworm/php-css-parser", "version": "8.4.0", diff --git a/httpdocs/config/packages/doctrine.yaml b/httpdocs/config/packages/doctrine.yaml index fe0efb5..9909045 100644 --- a/httpdocs/config/packages/doctrine.yaml +++ b/httpdocs/config/packages/doctrine.yaml @@ -8,6 +8,8 @@ doctrine: #server_version: '13' mapping_types: enum: string + types: + uuid: Symfony\Bridge\Doctrine\Types\UuidType orm: auto_generate_proxy_classes: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware diff --git a/httpdocs/config/packages/ramsey_uuid_doctrine.yaml b/httpdocs/config/packages/ramsey_uuid_doctrine.yaml new file mode 100644 index 0000000..cfc3036 --- /dev/null +++ b/httpdocs/config/packages/ramsey_uuid_doctrine.yaml @@ -0,0 +1,4 @@ +doctrine: + dbal: + types: + uuid: 'Ramsey\Uuid\Doctrine\UuidType' diff --git a/httpdocs/import/mpp_import_din.xlsx b/httpdocs/import/mpp_import_din.xlsx index 4cb449492b181c80a32b7ca67f4b7808c8cf26ca..61b839b2e35fe60c2bc215ab4ccd7fd1c4b67f93 100644 GIT binary patch literal 91178 zcmeFYRajkJ&n^r_i$ifKUfi9c#a)ZLyStZ#6?bo;IK|za7Ax-V?(VQBJn!?$C;!QR zxHkudIY)BeNk%e8RPx5@w$_b( zA=w&o!9I@W&RkwT(Sv8x8LHuj009HrDXT;GWz+4fW1R5Bnh;FAaz$p+Z)D`Cy;`S| zvMgsz?qBc8J`IqWev;_zg^LakO2Pv5NkWL0Y8Z%0T3$lrCMU_WNXJ9(y1*G*m@F2h zC=Qzn&7@y9VP7V&dmog48;8zTJaFLn!%o%VRJ zVhkveO#+;Ez%xwesKoQz?#7ijdl~u5xjI|zgI`_9!G^yP>Rd!S_92|OT55G?5Uk{1 z@gZUP8D_IKDzvwsYR{N>D-l>yK>k)Km%6W=Sm0`8THB}Jm{=cgIzqnNY&Gq6~8M!V-grH;bhv44p z$;D`tPg1Ue;!VWLK7JAl$Tbn!WO$2h6!<90xF85I-xi;T{`p0oh`nCot2Nf*Ff{a! zq_wUkK}mP^&M?#;91=zCi&wi*T_!IluTsP$-6>sKqNt1N3w}uTEt86lp9)u?4AZOP zzI~UAAB4%9@%my&q`)o=H&+89k@x{b&agr&xO<4-aUHJ$)@)zlCYxPFb|9MkY`@{YE-kH z4t#U(=6Ksx)O*tBA4XWP1YBhQy+~qlP**vCm1-C;FkCQLa5pQ4zv{%**1^)i*4Fan zlKZ=6z=4|%ko~{=r#WH3qKgql+yl{ASkn3YNH|ySaz^V zp{tv6-#`@&j{xU!Ljh_ysG^cX*K|W2Aqu7mUdl$Qn%$h-G3Dl@TXmK8I7-Qe+oF!j zuO@c1kSsm^cNsz7xu45Q1}ghj)wc-=C_S^Gp2xPr+5E^A%&E)$wIidWIMSj+aM}>x zF>K{@Xy8&V6%$vTO0sgfjQ)Xh3}%DJ`ZMP!YiTOmSIjm0Be$Y093ir%=(+gtSp0*1 z>MB>t3{;#)ki@s4ZpSe-4G+6-u@xKZ)4RR>Rirfeq}9(YrSqH)tF*l1wAzfC!;JH~ z*nGFsCj3CQ{P(n@nUMX$0|^Fp3kL><3`hWJ_wNZ;tYU4O&582lGxi9B^m$HhBDoGl zxe|`}K*U1zbDH%r-)AJwh|lfm_H)XUPuF;H0(}nLn~hlH(DQP?hyU=f*qyqoZp^V@ zu&o;xtUD@Ao28tECq(^tvQEKnEuD;w$LVvI5PD3Qy4&t6Ytw4BJFQ-OkbrJ}$wca1AHts24=(_3Q48 z`p>A0CT^C8$zXltPIYo<#ncd;HcA^Hhiza(78u6UEdAuqnAeb#MHV~cMkN>w)8?b% z7;!io1nR88yPHmY3l|7=_eNKr%v?a_k}U?$n&wPiY}vx@y>X5at1oq(x{TCBqG&`b zZDK(IwUEPi($C*;Hheb_uC6p2h#^22460eqrfwRS9AAUQ5gR{>0J7`nPp2s<>!g{zB z#L@|`C|m2`I09lO*h3=oEq4}iIYeRy(G4t_H>U(g{V3%}I9zhwEZ_5T4R4(|?pIK< zb{*~yZwqKVj^sJntNGUS;g3%0pl4#AOhFU2hF;UvN8>0wJ*(SV4YER`VJ8WdAABnG zYN4hDZG-sZu4o6iDjV~n8(d0Vt}QY8k=v&;&I{%ScZmEGq%%%hL~~j-m4#?9hCBN| zF*r`A*iZ`~x=FhFTMQ|y8aD=@9;}n(03>qGkj|KbzR}GzS37mL<-#?FTzC%<|{baWviB^+f znOr7{XqhEWL2hcM9U?@_n^Tk~Q;$jgS(_C5P&>%vRnKNND5bqH>SE}iK-L^4BG?2_Z!M57u2Eo`Rn-{ z9OL{+=lpY|BmB@#8Fp;!%pxVyAABMHr-McnO^P9?NLd%|HJt#wqk5Quq&n;M=l4D3d z?~1pxsXYzx-njX=#|7deFa6K*-1+D zo+kEBTBvo)UstglR|uocd6;(`31)+VA7<$|B`$52xuyFsQScPt?-zuaVrjh>*d@nh z5L@NQvJk$pYJo4TisU`}dt4lvqV+KI2}HJK={fth@3UwuBv>} zn%HY(1XWgk@~zx0z`0E--&4Wp#+Y4VZId>cdtkEb&sT}~j{{`ixs5#95Y8us@Jr75 z-Iy345A3$#%ymp|zUO3s7(12>mMC`eSH#Xu!W#u_;^&;-MG?Y%huekVM}&>a=q$9mMe6yo!-wRgiivCX3TM^KsaqZE3rzYv6J-U|8R^i>+S z&zgaz`VB5Sq|@lvC# z?iuSPeO@oCbnQc%4fa~E1iklqhW*xcE#hyC3_r5qY!mw*fZZl|R=hh{^uCw+S!nZl zvarkKnZ@Zw-J9%lO#FURnXlLF+4O*|@8eaM>+@a4^Zl0YvM(iJ>+M}z+v9D`)8)0p z^J*IZ)7?{-W6Mp3!_DD!+w*xFgKq27)8??p>5=U~Fk$O`%cQ$?!qm^pyJ?ThW&Q>4 z>%%tRo1^(<&#xSG3gz9y8U`I`gf-o~i8ndqNNQ_Xbfl{LPw6TsDPIX41%b4n|v@Lu=CeSF0^u=vgbBbshAG@Xe++KRzNI`j{saL(yl{D?$U{#Bxo z0b_xOQ_OBc#I>4=b5GF>>KBzIvNAy&Q7;+?(R2o{4fqUy6&(B0b1qyuQlCyil%xT_ z8$cxr`gBgs-)%n>#dihEQ9cNDIW!%08=mmCGrz#pKu&AhQGUBU) zgD@aq$%4~4=Z~vmGQmh)@a;oRL7%g51i3i8#XW0C}=54N}xHhA`jlhYO4ukuXjRWTj&?%$ixzy867GeOTXkw|4O zFV*8z!WNe)sxOMz6-9=)#Q3K{)cTzTy79zaKtSoP^Fl{*EOb~LG+T65q7+2&W3Oc~ z_Lf$5DNc{ zdz+A>^$11I@rV{4tiJApl?40biz|0b9qcUtwwy?}V*OWz0dI`G^)oB6QQxYWL!E zD~MgiLWPz?HD2?Xa^jA3%k1?TW6(9#4KLPvNGw5PzuK~)@e{GYw2#ddlX{umY`(5M zKdlsf5)gcGiN1i~Hj_AraH9eGCGvQB<8s28%l830C6AVER<Kb{lSxU6 zFuI=F5(IW)t}TLNmcsPK`}P9ADT?mQ%Yma!_vA6inrd*mX~>c!vQb7_nq_Rv5k(n4 zXN>Cc0LW^urWHo=w-)9Q8uV|0d^D@qZV!jBgg4uD`P&-@5xZo?R|r)A0)cgbPVe`Z z8mMYzR6T8|LsnvN>l5ehcp}c3V-g2J`Tg8X{p6&Uidw%!xHrZBh*(bul9K;x#Nhp3 zB8F}9ir`fC;%)`e&UrP1Kb4@Joj;IIb*A*N<+ZfJ25JIQP%kzZ2##!<3#Oq#!cf3k z5JAylL8@u0Ofb@B=KB9rJyYhbKj7{F`FBm($BZN}ELv^c|yG4dudJV*o4SmW zMd2C5jVIg5-h7n~MboF}?NlNsE9gLeWD2SYb}=6N7_7g+RmL2-Qh*w?Lc4IElTK5F zM3zOJ5P-uCz^L|iTRj(=snrXz@PBVEugb*I6MV-?XQJf4@@fzhsN5h(e~Iz;Zzxvf zcL;NQKQmJZ{Q2bI=i-UnULvA6LR6e7=%z2|7Xfc3uYNS-tt`kA9DK(^XZC{Ov!4#{ zuVEWp=ntS6_00X#6z{6^V-z0gxBeP)%{-2RBOVRSni#AI0|W0m-{1;ERlmT90Wj8i zK=58;+rmp+oT+cEv(XONvY@kK`f5xW+}~8M@e|UZXGL^{-AI83PForlv-<*n6C|X| zze4=i9zg34vLc-8BUxz)fchOgkFw!Xxi}`acLhAt(I9J_9;7V?$^5~(oN-21DEeJ119&KAF$Asil0U+?r_CTBdfp3Vd`0bN?}MM3`f6y+Colm+{%%;cl`ucVhR)jOG<~O5$EB^F zXPNO2o|0Oc>Q_d|WS_k6ySHac6gk&@E6eB7Op9XoQSJ_Tn)|s0-~=s(Pe4)BIPIo+ zU`{Of&h#O7@yIGHYRqkD$U18>sFxmgIS7N(oKw?_l24W!f)C0s^2yyBrDio=@(<&T zIQ*P{GSr5~JsJHdna5E~SCAX5UtlUYXt&6x5H^QC?d_yh2R*jU6_Bx60UdA=Y3JVc z8(=%d+vkI~2s*g>$~_UOWK@?J=?L6l(b~ZMjiPhp=8b51ZWz({L0yEG#lrj38S}{g zO-5H<$k{0BCUE`>{Tu*Jz@(2lG@St0g#f}-g4RCJG&sb1r<2UqRQJ`S8`bH=ZsP_3 zGPFR$py5FhPhk+zEkD;6}{6au6F^ zLB!j3rF0&&g*Z?@lCOeYqOed%i-i`Wc)bRapyfRq)-ScJv>fOXfCJTWP#n0A!sg;x zIk|yL^W{?Xn}dHYJK%Vc;Kc+vW3XidR|%bk(%i~UHBhz%n{!|m41txqrdH`Q3#Q@J z^g)l;g=$)PGtZ+H&$#0DeY5-%I?3-J!z1A7XKH!U5ZaEF?CW`CPVY6ix3o%90+xl` zsG6IDYckv`V7eZxvPyTq%F3LN>19MSer}0;&UXo2=I8R!1&p!l6;|kCJof~e8>w5~ zDR0b)Kevgm*XP4i-|0(WKoGQ{xIrn)hCo>Qk1I;EOm4h03Ph~`2_dk8!G^%n)&p!& z{Ia38$l%HSYfiNJIy|&OD^B>e(*VbvPZV&8Q?>OphNiAwzcvv*&l@-1fVUkI??ezg zv)U_w9;|7r4*bm1y%fi1`6Z}p*K(1|(*mKm#fLN&w`2V5z@7B)e&6E1t*5goOpN9F zTBYssUj8Wz>incQICB4TMxnR(I$Qu&jObbG3U-x`)EvYQQ0%2D2Gh%MUToC@SWD`h4VfK@mW&z_y7i z3RS~L90Tn^fQSL~R+nll1)F1;?p5Ce5#>SUw2wm8iQ5^B{hF!Rpa1G^8h~{A{*ATZ z3+uFlIarNz+FQJBRUnxfg3^#4fb0hPmEkQOISJ59Wxljv>ZO9oj{`bCYPWzMtGsmU zwFhIL&dcejdg=7GUbC|Dq>gH)e&bal%OnSAa73&nad|%eGvNk0@j7PeGl5Q_xTxTz z&wEYT;eX|I;f9_?cpo?6ukOd}WngU& z1@aAPXb2_s18rK&#RTLBNo(*W;cfcq+v*X^V+2reFt?^x=(TU}?_DLi<3HvTXpjxJ zY4Pek2J&;3-U!}%Jmrzt}TzWp?ny0CrJbaXK6Pwz7 zWFn^p&@cfsm^qSmrYSIDmbE;V1dOT4eBkJY={8ySx$kMZT0eTHtVU&!m%Yxf@+p9nag758I(r|#=u zczhi1vT;vwpTaR)EV^J$VfjZ0ue~aB!fE}+9i`Pi_O|gcct2nH_1Mb#Dog1EFAMnk zrPu}#9+)o_ftafqt{J!x&(D!Pr>|`@RQ;CCfp~E}j(&4MZf-e=Vm^Zmatk2bd)MMC zs7LA3@YKEp@sR$s^X}?qa5w5G1#gvOgi!AUZx!Y)piRCMX=$W&EomS5fVX{kH;PX` zY8j9{YC!dYcm!8zL-o18+gl2i?I2n1%~i9}Md1MVGEvRGxb?W%+7PQ7jab3!MLv0m zSP{DI$ft($fTrS7^SbeWr3EosW{MLi+7u^%Z;> zb44d#b`)M6E{yzwYHu#v!g4Yz6ZHk_bWQ&!w`bL}A}^;LRAm{iC^ow|^|it%G|T&Pg{;X$gzjfEU=hqT znq<5qfGAsIHdR>&#am)7r_uS?zXH1ZvLj9q=G(EAP^Y*5CgYrTY0FYX%<&S~1xrmW z=+QNwfPI676(Y9t zV~faZshp32W^!YI4dya3^r&SrlF%Esouel`!oGsEDdb!ClwF?&)>x?WBi=mtJMjm4%E!%`J1TK(a8h@h6C}SKS!f<`e>x-$4 zP7xRM(r-(#CJvav=fL%cQ|RBH9rdnLy&JZ6A_p5M79d=5eTLTS)#BDM`)qY`9^nXo zZ)S>GIB8{gH|+S?o$T3V0gPQ76x_v&_JW%Fyry8Mf$MDdSCvF=r~U;ao*V#W!$Om+ z%sEgEMN z{M~E}x$>a~Da@qh^TOcV=&p^&f$5;rU4PRY{U+$qhIN06cvxd-woZj8ZC`sZ$-@65 zW-+*=ok@r4(^MiN$oExZ@Gj<=*jHUUXt!>O`pCz!PLHpAoo=uUv;H}usuq4*&kt{~ z(Yd!Ok-XMfjdj0d&1Ndn5$VB6iY2|pc*>;%58o26XI98= z*lzAujrq-N(R4c#xa}y>bz)-yWtKEvMP}TT8A?6Vh`}8xXIoVsU8EzaotTU^5o5$F zj!_P=h6GcLgz>9|U-yH$zTVw>gdL+_>kvGu%bIqiu>$i%Gr}%JEtBzS z5)ZSm<95s@SNXi-w3AN{5NIC3EyiRNjIfi}smB+As8$ibO=rmEHo`;)53`t_SlJsBDJ zn^;lcA=}EoMrCK3U$_4~^w4xQBF*N=nw7`5#B$7hC@sk((!ziwHa->k{qmDdqNKet zUxNTEyTWOECUG8_vh*tL8wlUAP0IYw(@4QTPqi$PP9@9vq*FcKf8Ks;*q&@%<^}DJB|6skCToGW4xJP&qiEL za;=qjW4@bgyMvr+TXUfv1WB>q$hx6Nlp}@NjfD1t-_^(CS^A9;uLZ0_k?jj>w4<{1yo}P zkygyuD!ZiF;wSie2YN9y!Aomw`HxKPZ>9Pa`x^?ixjAKLV60|iW_)z&a*Q7N;WgZ- zkt~C|--Z=4Lg!vs+tWLBbj-Td>gOI5;Ak(|X{w10`{$*DBY{iNR#w*{Svu*a!ynq& z-FJDn^AXx;8dSgk24&3-fuHrLua8`0xPttw|4LPYsHk=5F*l8^}3s~#qko(!{?PbiJ#CmZCh*h=BS{j-?t=rhg zB|60}bbETz=ST>=%%y&ogyR2!#rpN+tT+CPMq_f7S45;(DFw0z*e zmz9co9~>eRsXA3mU@R!s2L?R!hdNpYVyX@$jd|J8gnPFG0lB=zm@ z&S>ClgT^GB?GCO*UMh#1%STotuIG(OC{W(t(9dIP5}1%ADJJ9WyYvMp($ZGxt^;}F zV6Q@6mp{f-B3Y6#3A8 zc_P7d`m)YRnW601g%}K;VU_o#Zbc87!yjHhK&YMKS7LT?7w%f-K%9kY{VL;4W-iX- zVmZDs0U|snj3_6hS1d34-nn31@o*BeP6>1X9ufo})l|Ursl>j5+K7q#?ZzDOIprvp zAl0S*HQ#-_dR<5T;zpGb{AKgv^8(z9neUJlLgjR~&cQa7L&A-&FIYuz3Zo=k-vHq2cJnrMmw#x?Jh4_# zP9?a`rZn{NOS!-cFineM9_7u(ejl z`D!-{FA@jAcdcSiO@KkzDc1RVuK%Vr`tZnF3mob8&d3>}Rm7&&;)qKfPx?4a&%3hx z4>uyb(bT45DsqsV4aC*0-Mfrp=sHZmf>5FAwHnF*z~G*CI`2S&)&nhIL>Yyf?c5HmD~@#O zD%)VtgZ!}gPVGm4GvvO^8OrEK9w3EFgm1GRIQ6UOP7&D-)@}72A&j;rG2aC4`$MH# zkFDBhuvNQp=5>R`df>Bs@CwNM*2%`&I34+c%ViLz>JK&~Z1B9>59djZ5jGk(9?0gC zuSv_(Dx8GC<*%@VrvSma9|EOw%34l~a+v3@4wKQzvo}CY`HK*qwuHt9mlJblu=qjh zEKhsySE@#hxDOU2?TN&Mf~Bz+RxkY}dnpm2gX&Kat-{i~Vf&I)PYDu+i8`Tn_zYo! zk}lj<@&u}%5fkQY)_A}VvIizhjT55{-0bkI47F zn_}xl_vtT%II_f=X?4&_gm|oE+Nu{U~p(yxd zTsm;1j;u8n+t%U|1l_d#83pCS>(L-kxugf*g6R7ub@`JDU_Tx{_y~=bR7%29 z&WrkjucJXiPZC!oN201*pxih;A@o%gZ}pPlKFggAZkK)-F$x$yk+2(dZL#b|U%7bT zG;VO|9hN|y6{OO3dJTl+se55&b95$lO+EP#ZgSMXw6DF&RRrKu4|nbj z4pHpoHN5Gaejp3-<{}UE=SNV>z*L+yM5<^?Wk6{=zQN9ttK8-HDUCo_PTe0lrP}3j z*8p)Lj4Eyq|`|=!qkUjV;SH!2n_=o2CFN3C{Bc4 zBS*c4%~QSU4;^FVC|H)k7j7eq^O?#gZX-1krf-!H->%QE&Hwu-2{7CK_i&0+WQPri z5k=V7xGE`~DCiA4D$$oW7DZcQ{B{Gl#VFxcV&=-1%SF|alTuq3CQHVlrYVhSA7be1wX`7Ud+-?uPAWbu~at*4H zAyD>cXG(SOmw2b4U|2#I&oS?>8P;=oY^LTTY&^(WJhM=2Sk}?T?pQ1_A_}Cfc1jp& z&kR^xBRX?}!$=<#TZJ(lAd7-ee=pJU7p=SvQ~bWs)`zkbe!b-;7D?t=se0>|8Gc&l z&|=4awIWKQ>-|5Da2+=^RVM*MqU;u6|Jw)`+g~GG>aQbQ%QTn#YCfh+^C;-dlJ9;D z3FUvD+?-|lpw^K*HJ6prtu){M}S-kesb_&kdd>VJud|ZBldCDRtaIjSP?B@)NtLE>C&HUE0V>#Hh3WtxpUAC z#|acha|t<`T=5DNW-Dr!5BR6b=V3%<2-xSabhrtWk!4Z_kneAK6YYFu-LIe)lrKb@@*2b$~0Vitn!hF56Um z{&&3>Wnb>3D~G$I#%_pr`<4QHcw76?g%aD$UI)0&mEvoIUIw@}Fcvwkinx6?3^X-w zQvJ61Sk>Ki9J`20M&j@;n5Eg;11Ms%_?=PMJ#hEzg`sV*p?$>tv9l35YEgL6NNYJ% z`if3^8|C%7py4KB(B37H#bi9dkl_-`i;08rJ^hf(+tO#Gf9uWht+7peAMxrL_?pMx z16s?$kM;jhA%qIiJ&kAi`p$W|JzwV|AGa-|n36Q& zpMDa~Af*?!a_ko9HjH#5H%KCF4G(!*T~r?66Z0w|UYci?wKR{@qif1;OKiF~@IlJv z_~A0z0+k5~UHY7D zIX>;MFg?oFbE1w@?Yj2f&u{sRwu?Z3Sc=B-4NG-I9H?}E*Nh=@i#EA~vnYnoyC}Yg z&&lznBqPt!APG$Nq40gAFc9b`V2;W95(W)zszNT(qty}`A8%h0AJ3#g^6SZNUgB-) z?KQ~x8EbOOiAQWXiDX-Ns3Y;whe#HCUlIVeS| zN;oRwNi?eWqPA47e}v&+z5s%NUD8=OfL*RNlKu56lKt3pF$NJXAE|oYP_e5A{^iJB z39EhnM-!4jkU(f;gPES)2L(l^Ka)k`|Kwxdi#jZREdd>HrkbgJK**bD?g9Mq?ZMDieKYHk(K*c+Wsa^en; z-;P4zqXtA4lLnzLGO>u@Hb|c@Fo8H&D97AOhYAj%(IbkWLx0=FkW6c++~$l zda;H6COv*50(q%;NVS2Q3ye?xk&Y3iALn5a8TykczTLn*y)MsMic5*xB@)`)^&G0L z%>4wzQYsqbs`Z=xOkfTtKsY9Qm!4H*3%=bNHk&>KVTor2md}r+f3?^3jg{36h{0jQ z9h`=fx&d5!5eb$sTMkU@y*O>bIP3VI7{^pq8l)GcAvTv4*jhhLoSY#JXe+A((qUY+ z4uwAaoxLN08*KbS_dUNm-m6i#V7*kcDQ-8&b_7`u2gtPcB5B@b252}Vf&D#M!EJRY zfF}h?zcqErJ=oH2!|y`JF%;|jb#OCb2UD`>qIwe%vm1*cVF#O?sC8e=G2YC~9^Y9y z2m?Q%8B}WXJ|HUTItF6w<3L}^SNvUtXJcG8M@aaNG#va6;S*|7vDOGZ!y^*YH&LGIlUYhfG;G&Dr$lXeQL1F zFjF~0A47!pV7XTw_Uggze#zD+7N2_xZus{yio_nFpm*rmiE>G9Ya+1MiYh#_M|A|< z24^$s24*G8@gNT4$H0?-II0u_6jaL?53=Tens?d3C*dAH zS!03_Y2=mbunihTLh%W+lo;j#hdKyN2Dt~iMFM{e@&DQddqT5nvBqnu=HmI_5+9|RMAzF{UE!sZ=`L|s9ZnL zTbTpLpz)XYMl!;T=m~au;VP4KvOC_Y1cdE-dB~^^n(+DFYiye^^#xJebL_j=9z8yWi6G()^#u_N$mW-zoh*C-GS&arO1Ohdj4jgwW|jEpJZ(^`5z`FJ=g=uN z1brm+CsN!X45TjBVOl3UY(Jdz13PS>B*Gmi&j^C%4KS%Z(z-^H@S*QBB}Z|CiU0gS zFI3ppn_+0zOBNk$f<-0=b{^|B!05NoUDixt=q-bKJ5tafZ~0uahz^u3`Opg~RT!br z6^0j!Rv2Ek@dkc~GMHppx1P=+885JDL)wrY)lU1qH|%(J881Xce}~Pm@?8TDW750I{OlPHA}~wyLE~- z*_eLd^F{Q1q031IPgZ5XqFfV+BjG7R$ymL&IG?s^EZJt@QFqk9;Kth|)b4V^NTN51 z%ccn!g8Gt$an;E>+8n0G0LDUewx=Zz6Y9pB1IykSk=58zet8gBLNK_8j#oAR|uT*fcSeBxE{d~frONVAz@fEb1i`Xr$~tknurk8!Bv(I;&6c|fCG zd*jQ69(tMQYT7iAb|f`W^z8^C%^nQ`s0^v-s}g~DB9|1{wclIHr4{#8l2@d#!JFzA zIRvpg%ckR+xzjqcO%>~fmp=@yKLHg39;0e&BHtbMLBvgVRdlrT96riX>iQ;Zvv3jg zy(vUi_4oIbvF|(Sft61cp6N|-Y_k_fHnXfov$4@eX|~mtmAlq`m8U;iSjlF$Jb$NJ z{cK2-5mM1ai?ynHDCx^H(EnT3^(@uOB3hjtQN5OoY}RDhQilD~gElRQ_Epxq>O)#1 zCZL)~_g12IHbgB>ChG97$IV%n^Arz}+K?evj!)b4h!V9Q=-zJsK4=J03XV3Gl8-Hs zkaC$o3!v3hkaCgHKpU-$orpyzuVFLqi`4Lso>ZBL)s9OPuAUI3lTc99j7vNyAcs}A z7NMJEGnWvSvi{$N-L3CG(0$$E!TXzbR!It_(hAVzc-1_RQjDLN$|3i>dI5YZSqV^n z2PlncEc#j{q)0SWVl`s3asYc@73V@VDs9JNLlWl-$f+bPEXQI`Ag~=cM0zd$mbb`G z%qeKD6#~q4`i}U+F)4@)uowTu-rB50{M2f)tXy^riO|@&)anfZI>A@XA1_Q6>o^o5 z64o*r4l6h?#6=};zqwdnZRAWK@GO%oz;0WL6kqn*LXazL??%6xXid zY!?DB+-0w%XLH|QsL1gifjG_rRA2vH=wDoC-K~%S*Gy7CS-VZ-Q)rwW5YE4YB6k49 zYA)2fPw6%Izgx*(?fa(=&tK68#FcgCD_+QlgGL&pgkH9@^B77p7}#8zEApPd%=P|< z)4l&-#7}#T#nnFoNqUb4cwwOHVD%c`nWVp*j{Mt(7kmv1L*2i2gR7F^C3KhMk9i_e zqE0G!Lff?QlT)@D)keZn>=)!Xl9e@P5`;d2q^k5m#kGpMV}C7K??^EN8=gh}2<`nA zNb*94T@E@8W?)ZVbSx}KV|_ra0YF41k}lFP>2O9B@$O;~$ZG(wHbLD^AQktd?qtFe z!_5j2y(NPBEv0-`%o{upPn$$3f`-(^E7=Zh9xTF*h4P~V$u!50ejjJ3u^$})rIqT! z;nUYu`9rDqQ*4R3>pBM&EuO0@Zmg9|6JA@X-s}jK5pmyCb<^npcw$7;N1#UX79)~Y z=P5Lp9YX@FC-fNNjJ23HDs@~*WqcD7@-mSnwl$<)B`|Sy>8k`Vze=kzknS%VZ$241YJHqG5!6#3#HeYtafhHuU=QWK zVNGkV4H~ap&M`tkjfD;kh0b`J(h&TkNRqL2!YbcweF&wC+*!V@M8vX;_194cl|^mS zl%YnApBg;XLSe8$j@nhVdG!y=x88(Z0nARUC&G+tMbiAf**TCbb9?=_0!Tw_%eDM( zKY$xU?AAUvG3ujXw_+`Vw`OM5C7?$_t6aPZTZWZ_QM+!Eu6<`5=_?lIq~oQA{$8CN zSx13P%Jw_j8Xb|;hh1jL-ZkX!GE(3a3(kQEWez;ZRdVG4pxJ8I5#$c!tIv_#LZvlJ zF7R?h!hZS<8^u-7StwV{D~ek;T#$0ldxgXLS6pO$ZWqxm8+rn5LuJfGO9Q$H8cGB3 zbiSculXm7SL-Ea7A9q{#y2R+&Ye2K;9!Jt~3Hju82n%p*w+a+p)sP>WW6%~$AgV?U z36ZgkHhS!Z*BEj2tGA{~goC?74vWY4sJ-;RQQ7J7LahZd!#y&}h~E)LZ@l^9_C+^j2w2HgxThujed;Ij+Hh-OOyZjttcU^XJvU)my@$vFPYFCxi zH}qmVcyWC`gYf;bkEaT&va-skB5H9~wt+1MF9u8zb^)ixuWfbI_e;$lTPVg|Wif)8|O;Xz^D_5Fch6=NnsK@k{ z*3h8M*4l`W+)tH>8?6Und_7pGCyA+fapZ_~nSvlb;M4unevjKlz&cp4O>EK7F{Y(2-BW4~8WIeo_ z&2%uE)NjcV`5(W@3YO`qdD5^qiAi1wUK{F=AM~8BVO*_W$X%@~&qUoAl=*hJc`rQf zT6>Usc=zV&D1r9ZMb13DDR;DQpEJ-mxsG#8`X6UqsP!&GOY+^CZG*L7sQQ@h7g zTasI-3NTpVG+rIe)cfQ2b~&u)4;i}&`UD&AH3YLW zKaWuDU?9N#M!;s799sWS7(oz?n*(kx$Q}LO2n@&3zipfo9eAN2ZZu{N z#I7K8G!w;C;*!cj9h+-W10A_@?tkc*S9vWbUM1A+noMdLvx!5D`8yHu_JT2Qb1vu%q!qp#Py^nYJ7m<=XhewO@MB*th#-2C-&tCkQ`OFVl2iCm2=<>UjupQ! z8^d-(Bw|q>p;+m}Va7lRM24~l<}+i)R^=EUYId0gETW-vpmqg3qQQ;+e66W*!qK$) zF#s$1Kfm5#7WnsoOaU+zf%K%A1OJ6M>4iAlj~?PbqC}_t8&h+K`As9j|H%1Yz!QrG zV1ZZvX~^c@tNMS2vf(ePe~%Zorl)FB%tYP**nio=qJf$0|6ebYTh*!vc*Os6)3mgI zzt@KTkC#lfKf7Xaf?X?&>s`kQhg0kbKcUN|GAAf&(r?mDy1}}yP#Hz$%sB*F7yhp5 z0A=ma2`O6NuGkjVIvC|sstiOcYw|^D{yZf+%>3&qbreu*ca}#lG8X?y$Getj!Q;xk zB2`Q+rf6-xSgX8lKLWnY{Fy7(LQ1SA7gx?4i6^fwro=@H_Z#A5EVr%GntRdr@@|M} z1PM0PL}?a!hc{5@MHp2ZJN>aan6`gnwaAyW)E$fx!9;9-(Q-9bk`?~Kt0GhV%AuNw zuPVElLf#+Kal-we^Wdoy>pFxd5qL!9=>_lbk z-|^P}i?X5q-zl|{U(_lX{_*zyAA6&(`v$$`|M2#nQB7#w7O02{h=PKGQdK}uno^{h zprCX?P>|kKLJ^SA384sx(tD96O{Diu0HsOq0qMPkP9PB4+dV8NjSYybE*ffJd!?Ksfx|8@Py&?=;E@9P|VAXI9f?VOu(#hc-BHC4_ z+QZpi#iLFG)fNsA{#>(aqw0@twHMiB?LB$JF=e~~| z0lqYatPq#`;^Q@`bh#E#PAZ>38&B-Z`W@3UOqAXYy^)1%n}N$cb?1jOH_%ub9=Hbly@@jKwt*<*wR2&e3vHG6j`E#3CE4qnMUH`bBEk#z29K!AW z7P%j({qp$EXvgL+IRK1u|0kyq z`pYSNh6$X497&RhV4itFMGcb;6&&@okYAkC44zf5FVL11;gTOmy>7BP?;gUV&ZHqR z-e!5o?<(9(#|V18g4b{71OiTR_eo*p-!~o*|MQK9rN3`HK>qWMhn|x+9)?cdc&PaE#=}D*zx9xBdNs}e^~QtX zc+1~69x{)4{=D%}S<89XK}(jEN#n;=LWj^VZ`FR$hS%ppO=JF=(yPMS<}`yDF81!B zy?e5^6@#Srrn$~DM^4TN>9&y*35}#ne2KiS8-jgt>Gq&j8-nEU(t+{Om*kEh`c%8o zMrzhgcLRrZ4cNseHyL()25dhjkU8LADIsq!!ltBq9eP4hmr+rA^N|9MYqPv`=HDkd zRgbTDWq&pK3OldcgEX(nn3m=#3HRzhBVhkc);Cg6h`=k#AG5oq(?zXIso3a{7$v7c znMmGDd^DKwX8m-3=>2Q!?wj`w5wF9mSeeve=e5<9+=ZVTPKB^;h90{;AwDy8itJI7 zctJ?ML(~OniSf9A{_*&2r@jAXp<%JZ0V7g?Ry8`Rfb=uCa$tvmClX&F6`LQN%?dLwZA&Me6^-3)uE+z7s z6(0Csg+pD-OGs*UmfJXtuiBhU%QvWhz5866dN>>- zF4CSHe!oWK#$S-j^6Lzr)|9yk=XObU6K_#*YKnQ-A4vW|;YK0bnA-QpWu?|#rHN8rQJ^w!@@%r-doDT6nc$<{Zy)D8)D{&|B@$spDaQ>f3(LFK@W8)sPE59DG zcYh5(^#@g-iGE}xUzMGjI%r4^dFt`)^dCNP`OWEQ?v0X&IYVD=8(LheX{7&u?EPJ8 zYU`kW=69V)qW`(dAJBd0AI|dlcF=DsOS45jKmsCzyWYC}_k;ce(I=(O{DJ>}Z{{x+ zr?Qa!-^J(t5AhfOA+GklRR&=6zcfWEi0n;C{qT9)>tp~7|K%tD+!qf^B47!BY1YY> zVVFxxd_F_t#?`K4Av9l3n9hGqL1J_LKlPwB3h;CjP6RzxanI4jXDE&#$vIfBlK3}6 zM0Qmw9WP}I(K2&TX1~Sd2i|YJ0jkbHF+9ppU7KW#MJm%fyg9%R^f-*Pj(q{u=mBT?Bbz`QTDqdnwgw2ClV^>=g(9ESoN2O#>- zs-H`rN5n?6J^HOBDBtlPd*eUZvQaY|*u)BoXtqhMpR3#xtPMbZea3;Du7rjPfEOBu zsw&)JY_vvX&vlzkBeV&lQ-sl}zoR>9?IH4nt^K=+g3S>%<^T8aPq1Uc-Y$Z@AuJ#5 zX;=x$=lpw%H6a84p7ka92_O!8Rq%!FWYmFh0}g*jQ9u=RKox)hQDstDCUTYY$-5Pl zg1t%p_r1LWJ0@%bXwzp1LEJ)22hLaXVbgrqrcS3AC=&ejCZ{7g*bU$tpH*dxpGS-U z5bwyAsR1X9{(FCfQNsOM{Kx&#|GhtO4gXDvuL(*l=91l)iFnx8L9ZO|lkrw|NV;Gq zF~am0RT`W#dMB965!`V>eR_%}t9%bYFW{UJY$nXjA>Nu*H|1mHs-70Gt^~6^`K`q* z-vbR{qbzoij1UfY@LgUlYI>oWw4A*Y_F#pjazByAvSQM@cxm-PuI9m(rTvue)hCX^ zc@>qdVrK${)JtF1y%?&eWn$Qz&-UA~%xxrkTA0^)!{(aRl zakM@0us$8>ouX-MZyf=(iW<9_PBS#hV5JmmWiONQRMe}!**d9;*fdV!t|WT6hOLcC z(NjF2{D_?VPXMEftu(0rEC@ zZFhb=1MeAU%%--%S&8MR-o zx48LS;>S)fTgRGf0Cr&JD8?5K~uPOrQfAi&cvwgZAF1R71QJ>552;hcCa&?6|AbE9Hbn| z3J-P_ezkF5(1{4~^_oMl(b<2zrp!;WJuJ8SPU*z~O{}3&<+!7ECgTlsLBwjghhd7t zPMJxO0fr6_^&*>Icr)>N!XFWBaU>@zYf;pny5+9WA*fd>e*5*$-A5Ix$F~)tF0oJ) zK)@?$*!+;6-L*ct1{)*>Hg3hkZwpXd@Pm-7B%5mIuS{{=w*qfB55}|`1qq zu=!xl)#bQ%v)A%yZ`}2;NgP*m^!m38zTNc@gA+$Biyw{8?hMo%Hn|?vbh;kTj~^Wc z9yU=Pn;kAv*6a_84a%Hqb4%a8GE;?BFHmdA(Qu=1JJC*UMmcsqEeLXoXNu!X2B-4;(`Fnu3>b;wyc} z4({yLwF%hIFz7}hbmJ#G6hke)n}E6<=;=D7wJEckdnn?_dNAxF%S3iu%G=B`$&3>O z1M}5vfoCjg#+l0@c{OL?#~}|lJ9tj(AG6Dy0-yh&?`1AcCK@fN-A-U)G1QV=alK7< z_bA%<`xb_!!qc$k)P+p*nYus?nK675C*y#%hgdhTWzsL^U~b563J}vdiq3|5QNbtc`En zFP6LcXYZ+~O828~2WRZ(24pBPW?kmOfT$3J1RkspNWc7k`dYeS`u&Vm!Ot&8 zU2R`NY`;74yh1yl(|OfXEUH|BDz>?@DN9G0$xG#u{e_99ohe^^ zj8o1p&@_(!J5z85;@K@#oF1d<{>c0QPL=m#1|;;u-K5|QX&WS&suS{w*Il>ZyAgEh z6$7j)w#WU-#m)=wi^b#Ymsw&yWS^3*Ahk3Y+c~dJ%0hRYoK3pL$mq@!+b7r8_##%EEed1j|J9?UikXP zJa(_o72O+x{&K);u~S3LX5tnu@KgEJ4Qun*)H4&lcTCDjqqd7uir>^$>ziuAxX(07 zU=Wy>J*3|0EA%RuK@A_Gh^&-ZxIVf!xTFMIdt{?H^y^#H`%5%Ery0JLSh{%$Bw79Z zk>ypSktj^jmcVVo4apOQapGr|3 zAm`|2sZ4uso122vE!C3c?qz$urlz(zn)!EynpF0gg;D z^Y4CXr*lRg?itEy=1>?xz?!ysqPBn6tYw}~xfpHsn!BHfuxS4euxNHFg<2Yg-B(tB z|0i^JCISsqa6WBU%W55@-gm2R6~oUt-iS4z zzI7l}-H9iKZCm_6tB~yXiojT6Bp5Hzbev|GGqrSkJq@OVpL;p=4$TgK;A*!ulFdf3 zlXekSEPO5XVZBC_p3Cj3mS#VA;i=DWf3Sox%(;%kygZAX3iZv*X_l4fdrXz@$)(E> zAKYOQd1M-GdC5QNMi^JhY|Poh_y;|jaQ#9OHy*`PL`NLK=XPJjrmUn^zsO1HPjdrK zW2AVhKjy5Y)e*jZ>d=JRq?qAa>Pv!{wx*;hTXq;R@D}b!;=dDF!}Up8tlYMcp9N|Y zrgHA{z3Pz@siocL_+wBZ=n&$VP-3y?A&q<0L5=NaJ_{)9&id)zA=w3*W4yuG2{Ol4BeaALYMwR1DIz>SnCNKM?t8@9-PX~)3Ib!usQ zWm-$gPbPuniJX{Z>^eC?O}I4vUFzw3 zYae~!_oh#4`w}EDNMhjjOw5Mpo`*0m)}Ezl$02a)0pyZ}P%7i?0ix1~ z8(=bbHS!P2Er_poV4lg?C#JI(K0FdeJb7zijFuM8RH7W!bkcVndas6YSC(tIKKY#_ zNK?dv=~4%i@+=q7)t3_Ul9}4}W_LyoX`)&>STVz+xq?%&FNG0pnj)?JwOQY0vr^Al zC|+EC)O>v+?Q5eri)~MWK{d1H>MK@V&%&mn77d;#yhI}XMerU4wS)Kc=)E&xEjSKug;n%401fC_`Z*w~jD}-8+ zMu}^6Xv$3_zc?-S-0S*eTA3xSiZt6P^{`Xj-_Jx9GcbI)dj7b+rY&LAXuc_e>g4pC z?#eBaU&%~7r;XTEI89Qi^qb{|VmG~W8(@%e;!Esa&=SwuqoT81 znS0=lw_u)loRYBAgNDXalW8(^lk>ZbMEciBJ~fg_{}Rnf zYCqq=V}A5b)~wlGNs)pO2Pfw5UEFW$>r|#V6(PfNHzo1SbzsAuMF>K`6q1& zR?1}x{(x76NC+pac#ycWVUe0|U{1s0!g@n|s^gp!@Hpe|N+3~) zn^zQRQu?WkAs){9y&q9{Y&x6O2V%%1*8m}gbZI(Gg!X~}agJ^xvMl;%AFox!Idv^q zI!RRVIn5jpAauSK&(yLbJf3rt0AC5K_B0uU)!rom_Ls^)%I1A^w4e1{TP`%=e&J!C z3h{pLH!HL$h`D3J;ru^0evzvHIXY4{a@bx6$W7+4{~U{+U7yYW{lm=lfqBM$Nkj$-GK{4Xc^AgM;sv7)DS{nFo>Tgy1H)SCU}yuIsZo3 zP^h_@%$Io-NJ-yG8cCL?;X#|kJM3xXAaYUWg$U_>e3dc=t>;yfx;&XEGcz0ra}is6 zc~p3?>3gur)+!=^%MDqg&&)cGI2iV9{(4wibfqcu1%uf0BeCzoQ_I)WEt!+1PG#k5 z-=!d&+coASJ<0~KvxE1;S+gS;6u4t>Znod=u#pt1^=#J3oFvCNhk}7f^q1F4xQ@jY zk0*4KW%vC0=uA@Q9t}NHi#PI08Sta0j)I66vo;+SU5__wzAv|T{~>$qEVSc z@EhhoHF!jfAni`IFXXL2D(f(9xG$G33|x^;#cZ1EDoM}n*jb;~=-!odXz7)vKVaoK zgPUMil%|saA)E_48liiHVP1yQvEr3XE9I%eAa$AqQtuCYuTzN!sxS%r(_bPA;JcVt zq?jZ@Cm&F{-gchMWV^Jble-~b+*}3`yThKM97GC~Hse?|P1zD&q+)d=d#qBNlQpGZ z@AgB&x5YI$9x9pUX$T@G(|l@R9TKS zMfnp*UbA+48v##K!o@Dh#5_5%?-MvRY;>)MiG7yLB#c~Qh$RcxMp+o}p-6@DhPlMQ zLhH-eT8f7qci!Cistv#i#(yhnqscN{xky`+NZ=+n!JUB3F*(>dokSd3&mw8{wRq_{ z(Mw@Yr%b4OHX)x*K+vU!VvkQk3AqHFez_YHz@(`+9u0XGXA3VhQN(Dp3yrwLXMAy3?a_X1{mu(Y*r4F4=q~;;QUmfu99@7u01~=+YPxXM|^? zuKH{h?G*w@MrubQB&nHA`f*Duk(3l*>BG}bwYQQ#oi{1I6?K&gWYG1K**+F&UIrmT zHWcxLtTkK-n7Z84OL7r1t+*RT5c8DcD?fZ+oDqBeKuK|L`YcukWv(m*JhKHtni9U| zZG>d)T59#x)%*Zb;2BMBQmH$tUx^}~Qly~K8s|@^sCK|1_cBeUvrkyV5f08pl_Ss;(9$(+tUQrk;SCD}=P_O;&$gb*fULSTE(kX~#Ru}{pU@dw`e z6Ykgw+;NMH2h(#99x@ez%S$?duCjB6JI>3dv>&?T#`7Pq_w;~hbi2nC0-)F}5Nd=2 z`TzzXQ7@1>Q7JeUw$_&r`lRS?AJ73~qaY&qHpHz+Hf5F&K!Z!1jmbW2I53$>OL?*0 zsBV5cahX;uWFyJN@l$hu(3y0ha;x2}SMSp1*DP}N_qsyPOwR+=+iG?*x49z z7!rcy7Rh&h?__vG5E*m<9xmK#35P*81|4e72_INjUsgLV(%@zkS?%B6iipTjhYB0q z5BdTz_V$EKCElvEU_ zI`ectg#vTTDib2;ddnC~Y`ty{f5#Gj(Cm)?tVbvvar$dYQ;F4sH%>Z_Z^mD!OdTUF zZ#DOWp#*m4ntG&0c%D_hT`Rqy_j)t{dfth&+M)AZ?W_f2N^ab1kxwTw915#+UaTAm zW$@bC^qO%)Y<}yO*0w0u%NdDe_I=erBNsTJ889N9z}hY3TIz4Fe&rZnxf*$B)w}%z zBkT*6JMRyjfR7(?lv7oCK81IE7WoWi5itUn18Kgm<72t;sV#xV;T8<5tipk;ot;C> zB?ydZ!n;;Q5<6uAIA6^fXpMY^a*9m2#&%1~CSt9`CH)k5tD?!wu=zITRZ?*6J$_2! zX$qtoyp~KPIWRfOWm9SSkR$3=^NhQ3~P zMi1;D>yFAUBhllI?tySBBvwOlq0WGediY=K5NOX z6YT4ym-aBS>KEm+tXE$y4KzT99=3iU*VlP}pQ1Clt72v6iMODmuKu^!d=lm0Jn4rn zJuL^+J2ynbP}0H%oyGwgI^#BoFLf0V-uJ2N_!=$eJwjf7 z{~$z6GG}z!Z38aFH1kA)iBhFmlgK=wcoL0ZDCWi*Iwy9HBNw*&J{Et})gO<|_ui}4 zZtKK0GfA6J9(py~hDW3O;8f<$0gTqwXU18X=vIPgCcGkspE+Oxg<@>I;q6U^0Z+_J(SITnL zeJj8JwnVX4TB_gRy{0m|Ijz$Z3p^pfZJ#5NS6XN_XOl|b{?+}00d4K%UTRH)e91ru z{I>&4=EneJ;?ia-=7SNUu=tw&oLqL1tbOe1$az1g3`Mza?4nTlVS)n{ay$R7({py> z++c>n>WJ$2i`$0C?<6X66!^!SNFvIuh*xvD*nXovh3teMvD+c;_UM7$f#Hd~fIf2P z#L$K0MH>m`mya17#-nN;j15J6Nf$D&N+Y&q5S?3FRTzJ7Vd2Ms{^I0*)~1n3K>8=s z#=^x~VCOBC)zPA_31+Ux>02p!D4N`fq;-f5#~%F4B@08Yc5MLVbf`#~Zb+y$J^spTLvJ~x7)s7rBy zUyA{T9ETCz#5;x5RcP?8hjlD?q{u9=Fh$^ZG~|n$@=HfSaC|40*cqGtWqZ4OAd~?; z=;V&Fkz!_jD#2{E=N!4y59j!l$EDV7|Bn=Qo7H=}OjrMQTsKKGSW_E~4|45sFl&BH zzUm3J{xbWS7n^9sMKrrx%#mO)Lyt z2>v6#&Fh|b*}1gp3NY+r6;|x!$iODEeKVTeEgCv~GiVe>Zh?<31|Z;A?5gh3CcF53D;E_+h0dDa7RU#WLD!Ixwt`3_ac3*0ZnL z^hh|IY|JQIdy2gUdyGyD=2^bl2su|SKmI#X0RKta`}ADy&_|0=Ip(lXo;w{*CY1E{ z8p1-%5&dx+%`S-)YZyP2^h%=8FW#Fdj=G`9nC8$8vY&ShI%Q%^ey^ypeYCgrhU|NZ zD&+C+Fr`X2GFe^zD6kM=?(mZi(e(_3wBHK+@XEl4@3O?Ozo)g<>pB(?FL|ybX`4zH z`m?e9F?Vb*K+`Qo_>lehTyW0UxYMv@Kd4I`6L07n{LF#c%24}E{)!9p`@s;g9Ld90 zvcWBLh~;X-7i-FtSb=leyJTg{5nUg&=GamtakwqiwA(=>_4)y}==1iZ?!?EqdZpTM zW|vf+p_H8|qYXOoEflrO(y)2tq|E3-eAetvuyU~~1qL%rGE0*5_Ol(VO%Fz6GfRQm zXA+02o0jB~?d~qN?`K!;oTkNaxiHNiUKc-@lbAcS8AR`>t{5*Le1eQMD#OGx)KD?iZGKySTK(U?PDwJ=Pm0_3NIiMLc4qAIoiM zpix@v*oRX}a+Gr&LuDE1+hb*`xp96gTW%pQEb0!+B?Aw8=pOW3heV07V=qPWN*h~o z_jrIOp<=|8n9amWaDG{|m^Y9hZ}ipS046;i!UoR_{($1yE-*fqwg0%F_=Zn zv+V4&?bEPDEeYm`?S_vYi>0dH&^9>{bFb*N`0WpGTd2vSQ+TqnBjZcA9Yz#l^>4-H zdxt(DL(~dII}Dr~kcNzb*XA_5R)6={5pbR_Z@M>`O|n@b&j9&I3ja?RM1zJhJG_gjhCt%$BAj~xN)cEy$Yu1VI zJxms313NYmn=;Sex=~nNJ&$Q$%I4jcFk4KSugiiY29nQhvN^3hYoDUV^F&O;P(>T) zBkI1Yt<&cSCw$6Bi(}7Kj8lLCLk39Hl7mRjh zQ7Y~Ua|Bqn>McqZG*M{9y?MG zbwg>(6qTv-E+cL3OU-_DF8kdqk8O#-B~K^=o7@61&#GCQcw#Qp^a(QtgsMJc^gz!* zVS#Q|lq}Vc+28(ycX|zFv!E-gZf?Y&wYjHw+0&J$=_WUjY3Ey zh@251=s2AMV}q)-6ip7?a!I8ui#JRk1-hU@w&^(EHA20af=@c2uw1!K(^8v1wM3IC zw_NTEiR#WAN|;-{V~KyFSNv+-Ki&3+zMA~+7_AEyf|d@FLf??+11I-pkXF7Ok|FA! z+Vq_pIxU;9Znr29%*kfIxJ&tvGc1pzxS;Ukou`mAyxrF{@rP*Q&c2@ypP& zarxAEheq}+sg+RZ6x`EiZm{5zlDfCfOneut0}a!|%Gt5ko9|~AtlT#1+&|gv~8D}U8vzK!E7B#|Jon1^Q)vvA!$AVrB1x!-glCs zNVHL-rqt#%30+Mi;U|0nNl0SFJ-Q32*+}Nm0&4t?^L@kqc0+tNmm(59QrZ0nobB%s z6os_c*D0ngdj<2443Uh`TByt(vnVcn;H#8GnaYlh_6KQSNl(dI-DAazVptaY_{H}c z8vnfhVgCn1@L8V8_0GM|IVYOYRaTriGdC`fImt9*cYso zW40cs?))A=-n#PEK}Bc|iMHAQwJ`Zke*x)oyP6IA*!Fv+mPr+=m!v-td*42_)7kMJ z#_Uz5)9SEq@i>zVBQh4}t8~`9z_#3rW&{rP$fIDS&3KKLe=_WK5y$78A=V93C5bBw zt)|S7j5}={mAzvjFs+7P@~4=KzrZMEt9=cg3z1yiaHt-%e*->vIc2&=^FH66g~u03 z6wocLPNNMjELRkM<3QWzOU0AeR(!yIx7d3%O;|RX@mfhD(53?aqqCC z!OLih4AIX{IUXfy!25~;21o&@F=_Izy7w(xb>uE92iHrMw&^`^06#0lL}Afjjf52! zjb{pppbZiaF(jiKWfX4JE3agUY)awF&g-pi%mNLh@S&yZM!f5T=)mW<+G z``bDg+b4B4`?DnT;Z4hbU}JVGE-NMFhS3wCxweI$&D-gfXscYbAL7Pa>{+pQ;7cG4 z1O9uQ$l~ilFMugVStV>2``eej6iVv+VwIa$iMCaliYb%4Jdnx$xm8ZpZCXX1Lnpa2 z$|}&t7Q21MTX0&}q%j-rZ#PJWyu`4{Mz^K3;4$$WA5^I=423Is2axlx+B&;;eXic` z({3*d^vkFYB*;EzRZ0>Lf+kY>NG<|)0jREalvOT-e|4iQTA@!rx$FrKe`ElvW z!X?|jX{4+6iQL}pCJnuD+_pfIKw3xAnuK*NH-g$D`>F#P_xNS~Gm6`^u!ldjB=lSg zOj9!VtK%2)j7B)y%R(1CzRN6laDCDDW-inNZ-|-pS84q=Y(1r$CTPoNmPlM6zgca=fdocn*=Ir&oG2QS=+0)tfH@f)L=ox%*_A78Mro zfHpf>i}%53=Qs_gnRlbhIP^A~?Og;lQ2wBkbY%yYb(FABJkRDe?g zv1R1b@h}>Rgb}H$3mDk|6YaQ*RkZsI@9W3vZ<$_nIG}TP=yAXxLF9RoK;UZC8#_B9 zSvPTVlHeG^i zb>G#zs`%!KpIn0{Y}@)|!+xPOB?%$p@e9`F%Yi!%gP>|BPo;ql;hDa?MMer}42=suEP_JqoS zCv*8(kP>>_BIXGGF^H)FAyQ5?lQtav0l=NsJojq$5f^?2s?A(M zV}_LD8)?^oA8`ESgBTKE*Qo)oHJs>$e0oUM_92un)Dh|n+grZR=A+N@9z{iH#@D-|`4L*&URM_!*RgcRqL*yv8*|j_@%M=3K z*q@cEJ-{9+4iXrd%P?{V2qt#Mk0-6!ON=LDe=SrB*F1e~8Lfq`9_K`YCH)G@*AI2Q zZ`yf7Gv6)j14PqKlb-;vo`K=bpLsinMw{w*9Fg}5cHg{`UBB}iMH7ZXT&<#OP;8Qf zq>RetQ>z7;Kk99JP@Z#v;Khp9nMbWolOw2|*vh79Bb8_K7PIWah$ecGKw8IyGUrR? z5@r^YX*R1zF4d)*{G4y5(_rl=O|w<^u-C8iR@GdhpcM-DKpkpvgnNU3Tx@cFs_x>( z7?1xYHB323)yy3jzy%#|Zn?}PtiOm$8k%kz9FKDgOc<*l8`8}!LMaZ>)?5t~qHV-( zzLhdZw9gEQcj6*0=96n-YzH3;Rlv;5kZ)ctG7afA9UsHKDLtrP(8?ZFD!!BN9Vjwq zW1xkisGO&O?3h^$sj+w0MI(yr#dK%fb)%zuBQ+P(jpoE4IGmzWg0B+0Q)3@Sz*I3H zq)T0NlEm8b{sNsy4Nf=H4iGg?NPiz9O}c}ny}9#@^L%fNmJ<7%A5&W#wbLiF-G@_n zWyZMF@OaZ+eIP_1ht+o8@3M~2P3whAbv8U^6;%RjV+$5k#N-2M5tP*_mUhy6W9huk zViQ0dyNLpM0j20K2V1mEv?2IM#Nqr}eD&D;MYMxcYJQOv^SU3DL6FK-XfC1a6|*40 zxQ!mW5K0bWrf-nxukecO*vYN4`OyY=^U(a@#@?R2$m%`>77~#Yd8yshWW9gK0dvp8 zLZK?lY&*ESu3mPS=T-e|5Sw;7PD!?WdJhzaCNgv18?GjuCqSVgM#~jPO;DvtIt|GV z9jsGMX5DeaoK^oth?b_FeX`5Z{ky&Ahq*a$T)6`#m*W)VjUD6iPMBt3Sw*FP2=g4{ z5F9h>kb)L_-RWequ4DXRQh?wV5U9GQS#N`Ek|%T`X8CM?#2}}^Z#m-FZWwwx?Q9vd zkkgkRqDHwkZHh^hm=ywj8wL5uycBBUS=ze5j{&q2+>Fyf(YFpdUO{&$W<@GCED^1J z>D7QyP%@NdN$FVNXZQbG_P?0HkKct9_jrd&fvK3saI32&=zw7&bffRcY{y{m!*B-L zk0WNCL5PPI=f?DZabwTQztiw%;}N1^=GBZ9NYX1k;RUaMA<+X;L06w}ARo>q`$v{BBqhz4^t{TXAY3o#0)!wKb^GHQ&6J4F z%3GvTW=JRm1kgGfR~4uP9;n)0LI=~PvLh3e8GA#9nV5knAcHp(3A-~GO8{lTdE~C! zWA6a`{<*5SoLA50%{AUf*J$lH1&n0c&VYcvlFU+CAgz5c8dVd(P|PCqf)mjgv`-)g zX#_MtccGkZ=L4HvtvLVT?H!By;>Dg^tuH(io{+-U`vt{m1chvrMPbU z{N~4%E1po&(^hs`i>2IKvqJ$f>7l;DMkoP14>WD{w^eR$ylC>8VJOQrL*M?>R^)>kL2?+l>(4kq*%R#ErfD%B&R3)PNDaV?BUr^k>AK z*v9)m*CszMEoNa}RSyWQ-AIoEnJ-}Cz#gsIKu;5Z$|0-V9|2m6$w^%c#5pi6Q?V1% zh6B?k;I&>tIXM7v(e95U*>5CTn>P{4LI9hd)WYMd1sLQw6F%ChZo>7=Jq0Wg}qy{E|Hd@Y+1$H>%t4(F}(3r(5v8&VW0(j1~Wahh`8{9 zvGjp1lSNM>x%R~|<0ep$&G4`rIdR!RD@%wNVAP7^!OEAB_5Bn6Wx7yVZFJ^ohF97W zi}0;Qjod+8Tuo)LJ?4Z`BM&GSA4$_~&X(+k3~tR(o{% zsi3ihoz0le%1z5n6@6gV4AMFD`}vJQLwwenM;56$B8@Vy$Ge9bznT5-QtUX;vc9*b zv`}Z{X@?wadA`#UM^PO+ChVdnFCCz1^A4f}$RWMR?#0pohNvC(<&8J02XZ)vZXAER zRVGUC|}uELO` zx7Qw2foEmAziyQIRy$=*b1WE)QRyVzViG^Y8sGKG=Y-i76O(bP|sQI_C%H%?r4g8@N$@Mxd%J}@-blL%+OaQ7)O-0`o8+Fu; z#%IJ@xYgmD$Pu3)4Ly@)l+f7bJ5>&yh%Y4Zy|k&MBmp3`7!guSsm@)Bx0Geqs_q}N z?gGm5tz*c-#j@|D&(vVRSS}=N3i~15kccI64H$pKe+=M1g?Z&K9iD!M^7$X^xMyAq zX2`aD4QarIx}}?e9IXckkbVq-&7r}>g!?{n00HJ?Z#f+mfY%dsz7up9KFw4kbpzBG z%R4XscTet30>MQB-gQOmVM&Qw6Xyv#3-LH9-dPzmqqe!qo2D($&WR$%&2e2Ms_P8r z#!9E3W@=cMcmC*GDtV8VPeWQAd+6wOh9C+fKme+&*7so)Xoh_ok5B$VZ?%FCLfIj? zbUZrM0g)>(){EK)bS6Iye*B2kDQ8yMPr{OXQgSvfb*S`Uw+dgEp4$8r0*o? zz!IMao?wlLua5`b|9)odW3XM?V#Qihpx<2-d6R|hJp=p-o685ehl_ir%|C!|0D`vo z=m<(qdeSQkL6Ap`3~hma^%Lfepri0T_U>2m6q;~wx8s3#$>wM8$MGj^U^8DLj~{Ul@mV2_rstR4zMj4Lh(>dxN+6{iQf%W&3i>4)(b4Ua%} zXCvV%pVi6=7V#d~e_A%bW*2Czt_q4Hl|W;dcQduk>7FQQ?ZeTX{LT9nQ{7)rwZe&1 zK$(psQ!2-{ca(jJaVKkn^yA2oO?ms*XORvEPR=!Z+rbd?isA{t;Bv6frp?VOaQLBk zr3>Y*fUOz%1N&1vGOo&g>`>JO29)LQx%+xF5AREgFOOo=^ss5XCaX8&YfLLFvk*Ns zis+dH0ax5{N_GrfpeNmUwgZH1a@D!X7HCFuBFI0HHyy)t2 zwLz?N4eoMl`Vv?W`*@Jh(@YmZ*1R=URQJ62FYg-z>~`9!kmKYMI3hivE^^7JUA;*aPfzw(@&IO!Xo9miXGbQt;Jhs1jTp_z)XwW4AR9y*G z?fo(Rd8AetL?(b>72MaNY817eSJ@%mKpTLBrLZC%6+e~dGNQFUt+w-(gKB4~vo9JH zHc{apO63RnKfG2OC>)?BByJC8I~qjPCi^mE%Jc`J*S(Z|<%@eO(uW0S1Fydua&m30BZVPs=Th=3B|;$2&O5FD9pu?vCLu(>AE>+wwa~fU+RK zGSfdh5SZVNfldB~-Xl{TSlQ{+xY7%ZslzzM6Y!q|5YmIO`0Kky?X|$!wB6QD`%#C2 z%9p&KuvL0{ZL~H$F9B|VDn39`FBs9B&g8n2bjXAAI*Tk!xzlftD%9jSt*$!~Vc2$A za4&6RnWim;|s|SNb_3KiA1a|Hnuu z=v7c`-e{b`i1V%#I^|T-dj-`Oy=q`(L=gr+VG9fa|<)kh<;on?jQ;9CDyJxRYi@ki(%P~ zy}|eL+c?R_cXW_$ z=^!a4uk{ZPnEpBIOusYkf4$IFM4a#LVsbp8fP0ph&?jI}27Q8&DbOc4+vL@{_n@s# z46E^jh<5YI^6Bwy)f4{nn&w)%~hZt zvlv5bq=9#eVd&i!i+(^7X>DFbo8bYSNqAy=YTz?D0Ci#U0=k9GR+I4Ri}ve^)5Ut} zKq?h{B=5!{^#395E#so>y1ro(R8pmDP*l1^92${QkW@MqBn6}!1O${uq)WO7B&0z^ z8ioex90nLdW(bFT_TYJ5m*;ie_xpRlyzlb`WsWs#uf6t)|5|%s5m^vR0d@lI}=aBb=Qw}Bn8AuaCp1B;2KBBY%dIFG7FSLEC4A_H+~ ziZavB97TwI!|h=F4i>PzomcQZY)uCDk0emP(c15jUaHC^-jBm~Y7C=v*NnKjA6GkI z>H+V?1xZ@^5u^u!7*Y;mGeML;&o{VfkoG;zPiDz3R2Uq1oGA{p`nZ{~?a*O}3;62} zni&{Qs$_Q0A1i%2Kh33&uU&F^c|7hCDWY$35Sn-Wx{nt3%E1!oY^AK0C?a)U3u*ja zKR9@{i#;!%UU{$@B5Gf1ahhi6M^-!t6p@__QqtcTl+?{9{PX+1=-4>UuHW77?#L%7 zz<8b;OW4&a0CpvZ{&q#Q`dw00l>(nPIsGG;4t=*MwP3eZU0H)uR3*}}!Qi|lzP`sz z806fy5RnX$^hMTOSUswsQs`2!i4m?@d|!X-0kZ#7$}rZX2#&7`+wFg)YtuyHviuDk z`r@MMyR0|nm;U$%U+flqzowQiK+;9>vsMmOUg0P|=>(yl8 z%J!j}xykfUJiEV|qyZ#;8Kk?7$5oGKbaJ>f_Nl-6mFl$^TgumVv0LV5TusigH*pyj zkR9waQ*Nu+fn&78zCJR@yLP1D&~vRmvpY=!fu}R;{0eUK!J)xG+(QE5O!KX91DK9| zolAqi;t~yRf9_GT^j`^kS}c%XXvVj{de<|8Z1u*Q?Sp#?%LTV(tsLOEcHi$-!2}YF zsl$Ua7nBk>q4o_GiY-|BL{f8K-|H(^PJyDNy?GrdAA*XI_6=I87@wgsF$SA~FY*8h zS)|%iq;`W6cwmRR2V^flTnDKaOW^_M|5eq`NYLYO(>t<4Y(L3zRKpT%JN22~19?Aw zXUgq9a$(COYPmgEv*0GIa`w7LhlK7@_t`K7=tr)#p`mZ|JZc8Regv;9)-5`2Y@7FBddI#ILZeG~aor$-`40LVI>( zb|G5Jc2WS9)dWRZa!^?}C)G*LcwT`8>V$=Kej#`q2?~fR+3$x@%gtPY1A&uK%U#Zb zGI>n89^2rrKYD7CNHS@h-<#?|q?+WD`1rsUk83&GM=syJ!dMxwGlS!I-E+e)47bP3 zDEI*=uosW_By%g~gI^vf9nP8_)Pi&G!RsUTf{^f9Sn>3tz!kRIhPG{h?6xnvBajQY zt$RqJPysMz`PY*mgFRTy?y?GSX%rgVgE4Vu}uFH9p5{ATM46)~{q>$&E1S8Nyc`1V^WBNmg2XeX3*(tg_)l)Sfb9-TMhv zi#omXo+8%cT;1J{v{;s9&y9~I_|LZ`9G`N7Lp%%`GFT*jZDmo zhHRSTL}AMpM4prA@It@<4c%d%VoV_0)b5Yz7d}X2R2ZSrS+1Z5-!HcsBcxV$@@8 zS3+v#AW*)0`)_P;um^0Fb_OV}Ki;N($yYxl>RE)*fugd+BHGM@2im3x!674HiYIRy z+7>&$9$YFYOc@@46(7G?94S);1`+A^0W>nz6b) zDeH3}&b)pX4*ON0a4@a^*sxM!eOfrM@931M#%2?U#8;3~65!!>JyND$Sk(8}&#u_5 z9ZpqFfiR@MS~;5qAOfG{1lQly#p0(}T;lwV@pV{pDqZL(P8|Gnuwsww6c72fIDi9u z_w`x1z7OgZw>(gbLqbAS!!cjKZ0&-RtE!C`xgE1ebZ$SM!9Sdv@vH<0naxF|4z9hN z^;bm@j*EbQ4K1Pi4%jA&bK`pyh*_s?_K-#J`VCy$g=S*iYKAn1sWuou;eA>rc!~+ep$%$mgQCcbmN2p#rl`-qGmfG1PY%566EnT{1NoV27-mo0q=NQ?$_GtUhtwLbQ4ac4Iq3(q zlzw)K=6(&|+%>_PbkRlHAE$(qpqm`2uvEouTcuv~uI_L_`NTA)*Km#MFBmSdU$a(f zi%AfFdoCt!L8OcrOzPQ%^C&2K2j-^%9i!B3v$laZ#G~FNVKQFB)x@fIfl@|OR5hWwB0MlW&F;ZoyE@eX?T_EF5py=2#Aa-p>cbK@JlDuI+en`{aG z5QS&;hSvz+HO)rX?VarN&Za{IDGNUKUflvn6mm|%elDrN?I)d#==a_l^OKtXB?Ug- z!zYUy7k3>lT! z)43emc2Z1O;C9x|3krq*qBwHrc^(#l$#?+2y+`WJ95LK;@wWc>iT@7mPDy9lswXk+ z&No;-emnN_^33&}`7inB1T}UHnM2${Mh699w4uT})Al4zlEaegHMi{syI*#q9|($5 z9J}8%IMmNn2CMMnvS7!rn#gea96PS73ql61h+*ppJL^RPrv)E7FOI`KsfMcJ{8LII zCdj<6VU=}xeAz5oMvN=%W9>nMMWy^Jl8+c889@ValBW$11vRjS&=8Mz1io`M{fZ4< z2IQ>BI|tuxww*^DYW~`MyxZcb=5Gf>_bYw;)jJyM;h-2qgfCpqlM;8mUY%{MLupk!*-P?Ul$j!Xux>2PBCRGb=^mZ1#4eeg(dG|kUef=3rR?l7HV2On@F#7=R=?};kI!>JJ-M7pcPYL4M-vySZqj{q-7q+P?!q6N+*+h~%82c(3B1~XqseYuij zHAdfe0jf%pZaJG3%47GRYr!8eVAKkXSQW8d`^BcO`;PMiPvKhQj^Mp(3@pgD5W5Di z6rs)Lo3e8umb?9qAAgMkRlp~>?S8I)Bdwaq8rv(Wu$XIP9;4KgO-r)e75&ZV_4Y^1 zwGnu50WH=SB*;a3*jS)z zV`R9kE&XDg#)b3THj9$$cMg0}Kh}H3p!W2%hgM(I$>G(V_!`d_-CxsRh#xhYBnha% zq=RL8Ofv7cN)~J-b?* zy+F%d94_|pJ`-4^5IT}vj8T9Pu-URDUm;+#LW^{JD4Cip;-TVfzvuD0H`W#>9GdKI zBBrLR+H0xi{LBrElOg_&Fm%&15COT*c|1RoX_$7H-AMA7(0%9Ocp2Pe)UAw^l>#A2 z{I%hT&5%*uc6xE4fdN&-TUbZncuz(zq}9C=nw-qblnjY!#Te;hZJ9l9Z*lfh}{{++BhR>ny*^#GKEy#pK6l+DCbm)1e#Qu-Hcz8!XQb?^q2h z+>3=BG~0b|<}=B}Fns{=q*qKk$cHHmF=kYlMI|Hj2sYas3k3~&pm-o~oGptL03yGcjdo`lM8SN!_N)ClHi#FQV zC6FAj4h^1Fg!jRbwFbg_(mOo-?}b}IG`G>nh<(SIFhACTXhLHm=kiZLqx<0;$m+q(&d-FWsN3XH3Rb1%S1P1U?pP zW%r$9Y}dWhBZ>qIF+-FBa?RdUJo3k+4f9O%UHr!j;%XO~Rp!w!65By%_ui&)1+?qZ zYz;e%Vau_J(B4a`8|1A)3K(De<1CUmdte8s#wEt3$y`cx!3*B{Ly4SrQk~ed-Bq+s z)!m;~dAYzFzCL0MTwM7~W!8ZSw|}0Xt=$N*^8!>sscET_uP9JC-xI5xNM!G+wm7TG-Td zk|$r+RaPVj4h0@1WNv2!I~$GC^XG22f_jIrz=H(haG?`xp=K#aapL~L(>5A}BQ>!? zJ7DLr&Ys_sERpLT6pgl&Xi7VSVC=ka5y9cB%68yJ{dbZf0`1TG1VLOpBs*k(wWKBRgK+a8KtkbIjA z`T9O_MZPJtAOsb_aFviUF}X3{uVWOY4$BuKC2WkYJ=xYc8s>(0?{8atxwQu6++&}x zo;Cp|FocMZGwRjHSRo95WR@3MOpVx$67?4;q(7yD3>i7}?CbXUZ&f7Hkw8M%c9-Z< zt!9FFb~3&Ku!CIN*O zz<@429bH3>sxla^%H!4UsWPIH;(Ik$WsUQS9|?=`!d9cJetk>Hf_GV>BeP)m=9^9( zzixSRul9H-NaaB;W^q-wRjH83^8%^Z^-N+!<&vFE6>TYv_Zb90%w%QssI> zU2~NUBF4G0aZ$)Sg64qUxkaZ7&cmVp2z$|uWG&;FwF$-{{aT~8}J#rF=_tW!OpMxymS`h@8B9{oRnVmk4SGTJ)Q4<{hF?T8ve zI#Kx}LlCIH1+D_hPNyI0_#^aEKuRXOD-j<8gCSY3@E)aXuPf-?z{08JJdY+f1smBcOgKYOg;}^b zR8@HKC#!Q1qPN)o2oV zRvEFzk9L*NE~vJgAd|eOwAg`OG)c@u22YNYJD2cULp_QREETlaIz-h(B7#;c%)YE; z_;V4!p?8iz^b?=jBmuBDw&l&Wk+lUV8j%VjWvtV5eF3}JflSOo2*(cj3c?RTdf|K* zh>szOYnIM7(c=ocu3fg3P}7-qyChnnjneR7)^S&JRyN<~!-qE-Z{ozO2xiT4VoI%~ z!zDtdE?b$n{h;kJS@|^d4KD5kEfCs@5QgTWvIn@~rtOmme2))A+xA^)T&q3h%Scir z!)`QMXM$}D+bGW>Bnv>&nCt}{CXZYZV3PKf-e2>}<3aQ4JFk~{F&S72X^y{4b*4WZ zY}8f;4*VGXeA;HwsE(nnYablxi51iw??A>1ZtTinO_DHtb|C*m7r*WfHa&_*%!CCQ z8tNiYg2*hV^*R8sPZhc>z=ZUWcEj>)j;={!D>F8{jc{4ivE&p4K#?Ln2PU5|e7=BF zY&Ze+i*e=S^<0}(twynfc8OSXK1(S2;^^mzMD_Mw>J@;)LhAe-xR`97hk_6v1PF_1 zd+;ZsOFH+eom>qZq4GnG{>HG>se&b!)O)TQb=(i7_&2Om-uQ$#~PMCaM`$ z_GG^y<$Ka7`SdmQ9kEgCAq?_Gk#=pU8uApgrMQ!XWxNKI0w10(d9c{HS#JvbZP@Vo z__=oxn6d}(3gkECcHUnc#lW^upAL%NcAYF~1b`uJ)|Qs2!5h~>2(30-nX+{IPTuqt zZDVSFLfIPX_LCO8;I2f4`$s51|AKxv@S38-i2UIGHqLS*+C?;Zp{C!34pDiHV&}@k zdh4F5iQ7+O0L~S};ap}c!}{EG<3hVBwV+Pa!o@9QSA&^xkQDFj?% zE>8h?*O1nmx!s~m>}!IB;-LB>fZ$go^~!JqcVeqgf%+6EcGl~3P5Ra(bx8?FL+?AC zkBz;kA2YH(%f7LzHsu}8)b`C=X;J8 zW`ZCu3UhP%ceY7KxP6*;%)rvEUjt{?fcyF)0VGZ(U=WMsKKlR`G`^OBRK}80;wsiL z+;C}JNVDScqq5>0K*a^9JiBbwhC17N6xeWOkl~Sq%h|_JCTr? z#nbXEs`yAQIZJQ%;^-DA_Dnxwb}%13NpuR@sX>8NOp8@u5RLp`>uDf;siw|$ZWv(x zTD=5M5*VoA#F-Et(&M9^?;5E=iE#X^_s$Ct)2fK0NpKp&VR^~6Zbtxdw0Mx?u5)Z5 z9wEV~2me8W?$MQ91QWD}oyLn(uutiTD;+{W=@7RSbP!pI|0XH;4A>(~M*$cYO#*wU z*aTve=Wdhwvv+5LX|b;zqdc1&Uk$jPb__BxWf1_8bRUFzXomF3LSpVdtM|$}4@G|9 zjtiTb%$)|XR%QUeB_{mG0LLxV6p(GLjx}td6Fds_qPRc(?qOszrNeuDg<=<(I(3O} zn!1+Vrb7%n@NjVJf|7DZe}IMAytvjPw%xQ4V_(+TgXi}RR~X>tNO`uQklkAdmgUu{ z{*4V{0Yzg60YLX6Toh=WO-h50_BLl$e*%%ig*by@;pP0+PECKS{dTT>%>D2NT63-r z4U!ek)gB6=``8J@G-&Ds9rok~`V&j=BuT}0Eybibzy}mX!%s93`+s46FkgPG87o_p zFJk8S)+T{+W5b$}W-V7Ed8Arrq8V4mUUN`pGavjk3hqn=7O5GBb_p(yhB`!veT1Hu zZR~3*K-CUR!Q8HGg9=92Oh!l?ik)zr4y*^1wAd=L8)bkHz2ja0CZ8%EvS)2WCtwn0 z5ygh`#c zyfEP@;+Gf)_xS8yVk^bFMlaop?@Fr1PmUc&+?yshsFy3XIT7uGPUw+KAWhFEch&jl z+A=|&G^KWR&l8|VBQx-m%gVbN39m4 zbLo(hVsxFlu11Bs(C*T4ox{}FP1)bRUyUz&qiwPDa6)M(SE041s$ZCRGMN?%8YR{? z8#SkJ-4qAcK~P;Z(iM{ccs|wRXoT&f6WSkK8Cwr2d-K7wOgao;e*zrT&*B+ttMcfT z2&opsg3i!+d<&>2w9pRM{!3JW_dXIdh;*6+-H48cYq5g%@`5M+v7@pOOO0k)mea!e z?-Av9$@{80fjxDU>JPPUHjK2;?_!k`ZSn#9@B!1cjEsLjJUA zTN;Su#ZOHh_Nj>u>3^HiKsY&ioQNW)yI+IUrNxL$aOWZ0Uu363s~&^ZvaJkEDk~o& zub#*PR{Yu+yUNzK`H&~+s#C+wqwA#bZ|zmq%a@y8>t!A0%kA$h$Tr@f+E(%&7OxkV z*L^`KaX<5gFWw-z?5z@7X>Tie!YRLwUYuC}usGoze!dNq1u`-FK^`AA!x5fy22{{M z>WsRvdTGs??WvS3eHd)45@c;rkK6{TML!>=(jlc%P~mE_^)DEAXya1as85DzURk;8 z_PSG^hx_~6Mc=sbu%NT&8O-6x1W5{wBmv#7BvJYLx44E(l;>PjWRGgN4mYK-2j~`aQ%4&iKi9txW@~Wv6sDVzF{SZ8>o?+}@321lRx=!&` z+iBkvG)3i(Zh==`Gb|m-h`OD_8on)bpcmMm(qXY0B4B4d1!{BeZtYwzL^tOKW|85l zN?gU>Q9u1UBJ(%a$M=1%w=+IQ+7>#dDkqhfDwRizEqV50ap5?>lzf2z*KC$&#eMiq zwez&wjCjYf6NQtWlCP6#-!#Vi=>^GNRa09}oi_tZEYnk5^a2cL82MuMskK(w2Z-tX zO}Nm!r}Ye?f3$4K)mf(Dt7_u}ZJAB0syMC~a0BC|C&zN^DDBl=C48F|Y=i;@k}$Ku zFF8*f#4V!(1?Yz?SaNKkgESA%v8+}*j-bv-e+1SGco__Tk;JX1byd~axrZ^J^BVJz z>Kuy=DWP#5sI#4IKL2i8^6c2-Jq7J4TJOtGq3C|qT#t7sR18D5SH*&nL5U{uN2g>c z2WVj|!G(2}-rd`Yx(6mH638H_I9&~P3CI&X>yfy+&UXbQZFJ8Q+05M3%v=!oLsZ63 z__`YDUkE8T!VjoM)|!VwGsJNX=Or*EJGhb^Jk$f6GeQ{YhArGi>dH<}J4V=p>aXkf z#ssc^AC&}pZ@T^~b)fy3hD^esO%|osWdIDq#b3Tr&{45oY!>PhydNe zQEu=LU_(F;V7}`#XfK7}nteGv7x}qh8Q)({kNUw~U3&K3|&ibIyu% z@cLj3nv1^@A6}5tz28sz5&(WBA>`D`LH-#bgO+h6J=4ER1|_jVd#W8$jSG?_LP&%H zdWW{kscg}|={)i<$@Vl!Q`6aDzJ$}+XD}$iKPViCA`dNO`OIa^!Q0dTz+Xxc)GY<0FBY8kAMq(V16Jl(np}_?$+ir zAX9HB;A9W>8=60x&vNbkY{?rTm9YSU2XJ~c($DqBoo;o zZa=SIxq2pGl95Wg9b1co_Y5P-#uJ;?F<~?$!F0jLqVb=l(SVQJ*GUty_VI8+lY)45QyW#qN zljNtQVvE|n%wk+Cd$Lyx79{p%E!ZQZ@x8}w0LohtYVwyguyX4+XQp5Yo_jNc8JqmS zi-vvaFx11w4%Fg;N}Xe88(O9z2C50OUc>~S)}$HIVH%l9#gC9sDra<)%_UzSM5sq< zaPSO^20)&hPUgEi!F0tJnNN;-8*rF3mB^0u6tzop`ai2m+(f{@bSWJ)fN5(HRfdu;S6+<>nWyYK3@yOX_8qkORD$9feM z=b$jB6zm-CX$J+*#_rM@ZS`+Hsh$qNyTAqq2yxi)A~lX8$cw4^r%Mu;=J(Nlr*1I>R8XU#_n1}h z>I-jHUW3`_QjK7gH$kvJh4tR2IvT^Z-i>rcxL2WI8!y-6P_E&X{x7dedBg<1iRXo% zH)buj8u2ATJKuoZQ4;^bf?SCqfMf4b4_tw_2X^B3GBHaO7fhrXorsDboCXVn#iT@d zuq#j~{wUbU^VI9?>f+rXtcBC!cKc#%mV`i~_9AJu>&pjy)k(g+Xt#S5AfL_(-8+~y zf3l0s3UeIZbzBK?I1b7LvrYAUO)ewGA+wx80!x28BOB(F<@Y=mw~M*7w3rwVTL0dW z4%Yizf3)>6G0xcWEaHG<4=>YUwo!oC9HfS@!MPwnJqb)&fTL@MnyM0rb@gXru9aKw zZvdFz)&VQ{g6`2o7Pku-M1I-)a36+_c5z+U_TMS+V1c2*w&$ivf(DiWP*9^lm!UgB z;yRQG-+VzvEbfDNwCM@hf8p~>dy8;{6a(YW*_vJt?QNh&9g=IE+H1^RP&16a)E_BM zA&P~L;WlEA?@i;(bxgI*#23ZjN2!I}2emRa1xGO{uA_9MieC&XK5(jC)#^j#AC=jd z2;ILv33i!=B*v?fq>dj>J~<$T_BMFsfvr?DcEM#-ZwCbRHWP1QEJKXYBU&ihmiOV3 zCyULZrL#u;DWnf`jz%GX(t3`a(4riU5%;YZ{WwXlG#8jA$AULRe-X5~R$|#) z90#$!mM(_TjV6WY9ZZCtaWv|?ABUY_`!Ps_j*rqqe?){@GKSQ7J!zT0bMP8$KWgTmCRJTYD z23hNDJLg{=^81B?e$jjU=L>8~O`cut@2ftL!f34)Zv@wQVH{>EjeD(?)^vkQMcY#@ zUH86v$9nOGj3nZDomW=ReuaGn&(>x^c~8pG9*5Eq$GmeIq5f5xhMVh$1h#zV^taK> zADbMb!H>3ZFG=d<)Z={b{gx5^Yv{xn_Y-CpIuHX7mEwv7q?UdKciTo~Oqyj1UfH~n zdv3(Wt{g+WiGCZ-Y(3&~cbA}5bmiO1+g!@rX%oQ+Wn20)RI%67H5=h@?c86rBF{G( zPg2TE@9%~8{iIBryW?Jx&WMbTMf=i#Wl)0ddB-w$uiI$4bf=6>ial&H_-b9d))eFu z8MxJX&G1Mj#oGFWODV2)hUX_s@2d@lv>9&0iewSZt3YL3BY}OJ`~2eE2BCXkAnS&c z6yecV)(m;m+{%@|X++kTZVu}pR**{v4USIayO)m^aQAMU9E*#eta~5ta-Wd=>-rjp zuqI+(9x6YBmt&s3_OBkiG5%V$Map;h^`_8WnR~nqwJcj^N>+`Mi7Uestxp)}?D~+J z1LX*g*5$c@VFy94(ty@zHo>{l?6-U|q^!4Zt7TkMlc|`kaGU$oZX)`iV9L;%AmP)V zATh}~Cewf|WPNg@6^Euv$OU;P+YtDOyZh03**^Lz5|QUaI<@sv&0lCHi)uNT-f&O< zkJr-AlUNGp6Q4Qr%bIWc z2yzBWmu{V#2^W1V9o+j?YUZ1=+HI;{@`=aO<9t$>0PW?Op>#gV1mnutTf-B2NS@om z4+^E3*393$xTS@zGLOzi;dwwFOHm71RGq784(|SWB=`7AcC<>gqt9Bhd&8H;pA-x) zudj@sC{SHS z&0l@%VMsOodPMfT3X6NnR`%nq>po9T7;=?vVILlviPZ+XmqODF!nyCZL?DW3it^^- zExg_jjJ!6R?FJXq*S2~+4OG&7WkFzI^m8)s4y%$NlyCqXot5Bjes=ze%T3n(r})n^ z+R_+g{<=Ui4qQy%N|7%6;=5BTo9k5uEz>Knemw9IQZ@O0+jg<-YadnoRx#R+~ z>j7CoaC7}$FU@BUN)OGXISV`8u3J4Gzm5+oZNwD~ygabmbG_b2$f;CFYIctE%*hcV zd=ue)bhjvV`sjFJVes>;cTP`iapNJz8{A9Z=yi}WixF2>N)_{{pIq{&R;f4N+LS)o z-#(l>GDsDxI~l*mcRfl`;EuY`T)ZYq%J46W&i6VJJwS z$z6>VX)&hkit3r1uHyY)<lJF8XSy-G+(pco zH7ud}Xr;)Lg;D3h>V{R`nKl-MNF529f#ES0jk56Q}@Ac@i8$3200|&m}{^z4w%rsj<&P(DB2#3^(!Ve$JE{VR=o5QAu+awLiYl-`J zTP8?|!gep43V)Xnx%J@YEeX5pTIJ5IN|lnwk?8^m)HvUWi+4)RHWv;4;#XWb zD!rvjdiP)Y92drFR7Radrtd~a+T%nVHICSdIP*T@LWhEJ|MWGjshD;q>2-NBq?@}Q z8Fv`t!oP)iSx%!Z!(S9m$-!j&ujK=??lR*q53$guY$0H5|3k;SG5r>1)WhXqjE51n zr2kd~XU0z7-F$O3vOldrI%~PoKOm-`rt8ulAD?m;#c>x;cTu=NjsJ(NceTSgGIR$a zsf#2VoRK^2*E;x%ykCR4lO!MV7eQ$1sQp6x{#FY5%C6$^PG5(?U=7POxkT%q3yLld zR6I@?k+wxME&SW^fTl(znY|TI=>piuKgCZzM5RSFW;?1R9sXmwipM=T{`oBbvA7UT zDj_UX0DFV)A7+HM3BZjS&Z6k`4{b7^m@M;00&%viFWvpq7H*ePyD4OXaqDP(|2?r% zGaG8FfEX1Zr>4w5|>8JSbMHK$Mi2o(y zDHpDw|B^BAf1c9+74mhQehbq73`{I+(kHU#B)iN4Utah_1HffpmebL;PLf@@U{(K%+*wDaAk~|p;(vJ-PS%1nTU~#-^Jlmm*O956xa*e5BKBO@ zrZ{*!M6&g-FpKk~W%NwO7m{f)RkBnb7>Ep3tvCMR-nE<=AP8M=-Px@H3_?Qw6=;Dg zAAbp9V9_32g~tf)nQ52m4{_wHZLh_l&so37=^ z^j~jnaY0Clis>JMH2yyb;)OH2zHT;?x4A4BtJEC}9>8GjBwPEgM|^FMwLe4d8lAG6AGqH-fD!1;WD|392Kk3L{} zs=!>2OrGc;K~Ythu)bCU1i2WR|6=4^jAK+A_zy<@e>2+LxbbK7)6on}bKb*6^;-9T zgq4v&+vTbH1a;{@b*b_!2;7>U_R;}+M-d|}>q12E52@}75p!nXV%_wViRq-gq|G+N2tM$ieVAT) z6JzyWlHJ^`^~ud>_#(vLADtSCy(htzodSwobW&ibT zOm*c|p2L@CLcz%n>ywF!gP1-i?fIqZ(4FtkR$e{Def{4g9e_kf1(1Yj&u8-mkb%bv z{~iX=af}RB*xM*8^hyR>yibJxc=qJK#Gz6hh1Xm0i;{#E+_n}n(&tqZngAo6%J5t4 z7fTK-!QSI6~`mYw5W@9eEVE};Ma^@7(sCh~7xDbAcBNI!Fi z8dSh8uehCU>@4lgUcPj&=RW<1m*;nZI~D|Pcn#Pj@WfAZ-;_@xH8s2T5SiXrKN{o# z?stu0XYEqn-w^$Bz4yT+t&zn`1StR7}IzKiwdnwQ%qehexTN<=$nmIHSgePSWPz7 zCMsMe=@=*Q6yLdZorwMtpC^fAbk=N%`XOW5=krpMJskVcXtSQ^J6KVHj_u<9s& zt2!zK2SbvqksiBMmLE+fXcolqc^4K7x2|l3!R{XIhkhW_WzUd9-5jG8nF$cz$!1t! zTDgB*%OkO7E)WEJ)0_L#D#q8?*uS@AIkd##t>el-nIDVYzNz5*4;(rDP|Bxa(bCW?0@~co0Fus9!3kj=0R=*nJtX( zH#MYvbhCrK7(*J+`@jo9{5i7L{lF6b`nEcGZ5CYI?+C&5K~zuD0y(ue)986%dx&1> z3Uu~9Mv2=Tdz{=8smC5~a(jDJdLP|;qGaQBvUR*-=yyUtV$g8B-Frgc=y|fgPC~1D zWaP2`bHnnpAbG~vP;2AFvH?VWbNYB^Zfc@fZK06nyoJZJ(5w6@YDN!3gDnbG7NRU( zDKB8sdBJ<@mP(~VXKsd8;w_NN+uzhA4it+?)Zp>vQr}D^+(&sE2A=pBJTnTXY0Pgu z%O94{+n1Cq#CFdd8Fr;-ye;gC!i2r7|I+$^O4|E_A(gav_my1IFR7H#j(*1vW{*cy zs?!JvzTQ!x_-fpc(X)-YXY*-Cisfhk_HHLk^`PRd+ex|k@eGO{;q)xo{8n<*Dxt_q zF`Er)>A3xTugL2a7sQHDVl4c`DLwC3ogsf;!hscaiZxYJ;g1XLg|GIUOBlO)`&(G{`|^EqAR5Ds{Uh1+Uibx^hNgg=$Ahd$#rV(vL_0Y zq@>CZAENv=$S3jZG~{yK%hH7g69^Uy;OvX0{4YqwN_%i$S9Aei&%!iDYiX5y(9#O1 z*BaYpc+Ot%=K19bp}`l^FcSVLj@uLpT`7#>`C&0U!;wAce7h+Qk)Pe?W5YC3D89I^ z9NN6prYJPlj(KjQ?c{A*ww9#DYuZ%!QF-saysW8`Qs`g-+_5Y-@)aOn@{w=5+Ryb*c*-_usd*_jM z^wqc1qrQ9T3#lhR);1h`tlc{Gcs};*b9}4f>7?rS2IoI&IF05d%A7lV^y1D5<5D)( zS5+I$y_gX1rtnB5xO)Gqv8YUs(MpR#dAg1*K0g_sAU-lk+p^p8=fzh!D$4e`w3%KofgYG;oOQ5CR49-znN&8n+6I!>3
  • 8373i`cI!7Hlr(`IKN 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ȯtBuSTf!$dnJ9 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 +r$y-quJ9=!80CAU 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 cycleMax) { - $("#cycle").val(cycleMax); - messageBox(false, "Zyklus an Maximal-Wert '" + cycleMax + "' angepasst."); - } + if (checkInputs()) { $.ajax({ url: "/calculate-risk", method: "post", data: $('#form-risk').serializeArray(), success: function (data) { console.log(data); + $('#resInspection').text(data['recCycleInspection']); + $('#resMaintenance').text(data['recCycleMaintenance']); + $('#resPercentage').text(data['costDiffCurRecPercentage'] + " %"); + $('#resEuro').text(data['costDiffCurCycleRecCycle'] + " €"); }, error: function (xhr, msg, three) { messageBox(false, "Fehler bei der Anfrage."); @@ -185,107 +177,62 @@ function onFormSubmit() { }); } -let savedCatalogueAnswer, - savedCatalogueNote; -$(document).ready(function() { - savedCatalogueAnswer = $(".form--catalogue input[name='answer']:checked").val(); - savedCatalogueNote = $("#inputNote").val(); -}); -function catalogueAjaxForm(form_data, isOpenQuestion) { - let ajaxRoute = isOpenQuestion ? "/catalogue-detail-unanswered" : "/catalogue-detail"; - $.ajax({ - url: ajaxRoute, - method: "get", - data: form_data, - success: function (data) { - $("#instruction").hide(); - catalogueAnswer = data.catalogueDetail['answer']; - catalogueNote = data.catalogueDetail['note']; - $("[data-js='progressbar'] div").css("width", "calc(" + data.catalogue['numAnswers'] / data.catalogue['numDetails'] * 100% + ")"); - $("[data-js='order-no']").text(data.catalogueDetail['orderNo']); - $("[data-js='question-type'] span").text(data.question['questionType']); - $("[data-js='question-text']").text(data.question['questionText']); - $("input[name='answer']").prop('checked', false); - if (catalogueAnswer != null) { - $("input[value='" + catalogueAnswer + "']").prop('checked', true); - savedCatalogueAnswer = catalogueAnswer; - } else { - savedCatalogueAnswer = (function () { return; })(); - } - $("#inputNote").val(""); - if (catalogueNote !== null) { - $("#inputNote").val(catalogueNote); - savedCatalogueNote = catalogueNote; - } else { - savedCatalogueNote = ""; - } - }, - error: function (xhr, msg, three) { - messageBox(false, "Fehler bei der Anfrage."); - }, - dataType: "json" - }); -} -function catalogue() { - $("[data-js='last-question'], [data-js='next-question']").on("click", function(e){ - let form = $(this).parents(".form"), - form_data = form.serializeObject(), - isOpenQuestion = $(this).data("openquestion") === "yes"; - form_data["direction"] = $(this).data("js") === "last-question" ? 'prev' : 'next'; - if (savedCatalogueAnswer === form_data["answer"] && savedCatalogueNote === form_data["note"]) { - catalogueAjaxForm(form_data, isOpenQuestion); - } else { - confirmAction = confirm("Sie haben ungespeicherte Eingaben. Möchten Sie fortfahren?"); - if (confirmAction === true) { - catalogueAjaxForm(form_data, isOpenQuestion); - } - } - }); - $("[data-js='save-question']").on("click", function(e){ - let form = $(this).parents(".form"), - form_data = form.serializeObject(); - if ($("input[name='answer']:checked").val()) { +function onWorksheet() { + $("#worksheet").on("click", function (e) { + e.preventDefault(); + if (checkInputs()) { $.ajax({ - url: "/catalogue-detail", - method: "patch", - data: form_data, + url: "/create-worksheet", + method: "post", + data: $('#form-risk').serializeArray(), success: function (data) { - messageBox(true, "Ihre Antwort wurde gespeichert."); - $("[data-js='progressbar'] div").css("width", "calc(" + data.catalogue['numAnswers'] / data.catalogue['numDetails'] * 100 + "%)"); - savedCatalogueAnswer = form_data["answer"]; - savedCatalogueNote = form_data["note"]; - if (data.catalogue['numAnswers'] === data.catalogue['numDetails']) { - $("[data-js='finish-catalogue']").prop("disabled", false); - } + console.log(data); + window.location = "/worksheet/" + data; }, error: function (xhr, msg, three) { messageBox(false, "Fehler bei der Anfrage."); }, dataType: "json" }); - } else { - messageBox(false, "Bitte wählen Sie eine Antwort."); } }); +} - $("[data-js='finish-catalogue']").on("click", function(e){ - e.preventDefault(); - let form = $(this).parents(".form"), - form_data = form.serializeObject(); - if (confirm("Möchten Sie den Fragenkatalog abschließen? Änderungen sind danach nicht mehr möglich!") === true) { - $.ajax({ - url: "/catalogue-finish", - method: "patch", - data: form_data, - success: function (data) { - window.location.href = "/catalogue-finished"; - }, - error: function (xhr, msg, three) { - messageBox(false, "Fehler bei der Anfrage."); - }, - dataType: "json" - }); +function checkInputs() { + let cycleVal = $("#cycle").val(); + if (cycleVal === '') { + messageBox(false, "Bitte geben Sie Ihren aktuellen Zyklus ein."); + return false; + } else { + let cycleMin = parseInt($("#cycle").attr("min")); + if (cycleVal < cycleMin) { + $("#cycle").val(cycleMin); + messageBox(false, "Zyklus an Minimal-Wert '" + cycleMin + "' angepasst."); + } + let cycleMax = parseInt($("#cycle").attr("max")); + if (cycleVal > cycleMax) { + $("#cycle").val(cycleMax); + messageBox(false, "Zyklus an Maximal-Wert '" + cycleMax + "' angepasst."); } + } + return true; +} + +function downloadWorksheet() { + $("#download").on("click", function (e) { + e.preventDefault(); + $.ajax({ + url: "/create-worksheet", + method: "post", + data: $('#form-risk').serializeArray(), + success: function (data) { + console.log(data); + window.location = "/download/" + data; + }, + error: function (xhr, msg, three) { + messageBox(false, "Fehler bei der Anfrage."); + }, + dataType: "json" + }); }); - } diff --git a/httpdocs/src/Command/CmdImportDinAssets.php b/httpdocs/src/Command/CmdImportDinAssets.php index 69972a6..9a82578 100755 --- a/httpdocs/src/Command/CmdImportDinAssets.php +++ b/httpdocs/src/Command/CmdImportDinAssets.php @@ -3,7 +3,6 @@ namespace App\Command; use App\Entity\DinAsset; use App\Entity\DinAssetTask; -use Doctrine\DBAL\Connection; use Doctrine\ORM\EntityManagerInterface; use PhpOffice\PhpSpreadsheet\IOFactory; use Psr\Container\ContainerInterface; @@ -92,8 +91,6 @@ class CmdImportDinAssets extends Command $dinAsset->setName($rowData[1]); $dinAsset->setCycleMonthsMin($rowData[11]); $dinAsset->setCycleMonthsMax($rowData[12]); - $dinAsset->setCycleMonthsRecInspection($rowData[13]); - $dinAsset->setCycleMonthsRecMaintenance($rowData[14]); $this->em->persist($dinAsset); $this->em->flush(); $dinAssetsByDinAndName[$key] = $dinAsset; diff --git a/httpdocs/src/Controller/UserController.php b/httpdocs/src/Controller/UserController.php index 54e98b1..d4b06de 100644 --- a/httpdocs/src/Controller/UserController.php +++ b/httpdocs/src/Controller/UserController.php @@ -7,19 +7,20 @@ */ namespace App\Controller; -use App\Entity\Catalogue; -use App\Entity\CatalogueDetail; use App\Entity\DinAsset; use App\Entity\DinAssetBenchmark; +use App\Entity\DinAssetTask; use App\Entity\User; +use App\Entity\UserWorksheet; +use App\Entity\UserWorksheetTask; use App\Repository\UserRepository; +use App\Service\CalculatorService; use App\Utils\Utils; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -use Symfony\Component\Serializer\SerializerInterface; use Twig\Environment; /** @@ -27,12 +28,6 @@ use Twig\Environment; */ class UserController extends AbstractController { - private $serializer; - - public function __construct(SerializerInterface $serializer) - { - $this->serializer = $serializer; - } /** * @Route("/start", name="start") @@ -41,24 +36,14 @@ class UserController extends AbstractController { /** @var User $user */ $user = $this->getUser(); - $catalogues = $user->getCatalogues(); - $userHasUnfinishedCatalogue = false; - $userHasFinishedCatalogue = false; - /** @var Catalogue $catalogue */ - foreach ($catalogues as $catalogue) { - if (!$catalogue->getFinished() && !$userHasUnfinishedCatalogue) { - $userHasUnfinishedCatalogue = true; - } - if ($catalogue->getFinished() && !$userHasFinishedCatalogue) { - $userHasFinishedCatalogue = true; - } - } + + $cntWorksheets = count($user->getWorksheets()); + $numWorksheetsLeft = $user->getMaxWorksheets() - $cntWorksheets; return $this->render('pages/start.html.twig', [ - 'userHasUnfinishedCatalogue' => $userHasUnfinishedCatalogue, - 'userHasFinishedCatalogue' => $userHasFinishedCatalogue, - 'noMoreCatalogues' => !$userHasUnfinishedCatalogue && count($catalogues) >= $user->getMaxCatalogues() + 'worksheets' => $user->getWorksheets(), + 'numWorksheetsLeft' => $numWorksheetsLeft, ] ); } @@ -110,7 +95,6 @@ class UserController extends AbstractController } $res = []; - $res['cycleRecommended'] = $dinAsset->getCycleMonthsRecInspection(); $res['cycleMin'] = $dinAsset->getCycleMonthsMin(); $res['cycleMax'] = $dinAsset->getCycleMonthsMax(); $res['benchmarkValues'] = $dinAsset->getBenchMarkSelectValues(); @@ -120,288 +104,132 @@ class UserController extends AbstractController /** * @Route("/calculate-risk", name="calculate_risk") */ - public function calculateRisk(Request $request) + public function calculateRisk(Request $request, CalculatorService $calculatorService) { $params = $request->request->all(); - $benchmark = $this->getDoctrine()->getRepository(DinAssetBenchmark::class)->find($params['benchmark']); - /** @var DinAsset $asset */ - $asset = $benchmark->getDinAsset(); - $userCycle = $params['cycle']; - - $pointsFailure = Utils::$riskFailure[$params['failure']][1]; - $pointsCosts = Utils::$riskCosts[$params['costs']][1]; - if ($params['costs'] === Utils::PERSON_DAMAGE_INDEX) { - $pointsCosts = Utils::PERSON_DAMAGE_BASE - $pointsFailure; - } - $riskPoints = $pointsFailure + $pointsCosts; - $riskFactor = Utils::$riskPoints[$riskPoints]['factor']; - - $recCycleMaintenance = $asset->getCycleMonthsMax(); - if ( ((int)$params['maintenance']) === 1 && ((int)$params['check']) === 1 ) { - $recCycleMaintenance = (int) ($asset->getCycleMonthsMax() * $riskFactor); - if ($recCycleMaintenance < $asset->getCycleMonthsMin()) { - $recCycleMaintenance = $asset->getCycleMonthsMin(); - } - } - $costsCurrentPerYear = (12 / $userCycle) * $benchmark->getAverageCosts(); - $costsRecPerYear = (12 / $recCycleMaintenance) * $benchmark->getAverageCosts(); - - $recCycleInspection = $asset->getCycleMonthsMax(); - if ( ((int)$params['inspection']) === 1 ) { - $recCycleInspection = (int) ($asset->getCycleMonthsMax() * $riskFactor); - if ($recCycleInspection < $asset->getCycleMonthsMin()) { - $recCycleInspection = $asset->getCycleMonthsMin(); - } - } - $costDiffCurCycleRecCycle = $costsCurrentPerYear - $costsRecPerYear; - $costDiffCurRecPercentage = 1 - ($userCycle / $recCycleMaintenance); - - $res['recCycleMaintenance'] = $recCycleMaintenance; - $res['recCycleInspection'] = $recCycleInspection; - $res['costDiffCurCycleRecCycle'] = $costDiffCurCycleRecCycle; - $res['costDiffCurRecPercentage'] = $costDiffCurRecPercentage; + $benchMark = $this->getDoctrine()->getRepository(DinAssetBenchmark::class)->find($params['benchmark']); + $res = $calculatorService->calculateRisk($benchMark, $params); return $this->json($res); } /** - * @Route("/download", name="download") - * - * @param Environment $twig - * @return \Symfony\Component\HttpFoundation\JsonResponse - * @throws \Twig\Error\LoaderError - * @throws \Twig\Error\RuntimeError - * @throws \Twig\Error\SyntaxError + * @Route("/create-worksheet", name="create_worksheet") */ - public function downloadLastCataloguePdf(Environment $twig) + public function createWorksheet(Request $request, CalculatorService $calculatorService) { /** @var User $user */ $user = $this->getUser(); - $catalogues = $this->getDoctrine()->getRepository(Catalogue::class)->findBy(['user' => $user]); - - /** @var Catalogue $catalogue */ - $catalogue = null; - /** @var Catalogue $cat */ - foreach ($catalogues as $cat) { - if ($cat->getFinished()) { - $catalogue = $cat; - } - } - - if ($catalogue === null) { - return $this->json('Kein abgeschlossener Katalog vorhanden', 409); - } - - $dompdf = UserRepository::renderCatalogue($this->get('twig'), $catalogue); - - // Output the generated PDF to Browser (force download) - $fileName = "Fragenkatalog_".$catalogue->getFinishDate()->format('Y-m-d_H-i'); - $dompdf->stream($fileName, [ - "Attachment" => true - ]); - // NOTE: This is required, since method need a result! - exit(0); - } - - /** - * @Route("/catalogue", name="catalogue") - * - * @return \Symfony\Component\HttpFoundation\Response - * @throws \Exception - */ - public function showCatalogue() - { $em = $this->getDoctrine()->getManager(); - /** @var User $user */ - $user = $this->getUser(); - - /** @var Catalogue $catalogue */ - $catalogue = $user->getActiveCatalogue(); - if ($catalogue === null) { - $catalogue = $user->addNewCatalogue($em); - $em->flush(); - } - - $catalogueDetail = $catalogue->getCurrentCatalogueDetail(); - $question = $catalogueDetail->getQuestion(); - $questionType = $question->getQuestionType(); - return $this->render('pages/catalogue.html.twig', - [ - 'catalogue' => $catalogue, - 'catalogueDetail' => $catalogueDetail, - 'question' => $question, - 'questionType' => $questionType - ] - ); - } - - /** - * @Route("/catalogue-detail", name="catalogue_detail_step", methods={"GET"}) - * - * @param Request $request - * @return \Symfony\Component\HttpFoundation\Response - */ - public function catalogueDetail(Request $request) - { - $content = (object) $request->query->all(); - $direction = $content->direction; - if ($direction !== 'next' && $direction !== 'prev') { - return $this->json('invalid direction', 409); - } - - /** @var User $user */ - $user = $this->getUser(); - $em = $this->getDoctrine()->getManager(); - $catalogue = $user->getActiveCatalogue(); - if ($catalogue === null) { - return $this->json('Kein aktiver Fragenkatalog vorhanden', 409); + if (count($user->getWorksheets()) >= $user->getMaxWorksheets()) { + return new JsonResponse(null, JsonResponse::HTTP_BAD_REQUEST); } + $params = $request->request->all(); + $benchMark = $em->getRepository(DinAssetBenchmark::class)->find($params['benchmark']); + $calculation = $calculatorService->calculateRisk($benchMark, $params); - $currentCatalogueDetail = $catalogue->getCurrentCatalogueDetail(); - /** @var CatalogueDetail $resCatalogueDetail */ - $resCatalogueDetail = $direction === 'next' ? $currentCatalogueDetail->getNextCatalogueDetail() : $currentCatalogueDetail->getPrevCatalogueDetail(); - if ($resCatalogueDetail === null) { - return $this->json('Katalogeintrag existiert nicht', 409); - } - $catalogue->setCurrentCatalogueDetail($resCatalogueDetail); - $em->flush(); - return $this->json( - [ - 'catalogue' => $catalogue->clientMapper(), - 'catalogueDetail' => $resCatalogueDetail->clientMapper(), - 'question' => $resCatalogueDetail->getQuestion()->clientMapper(), - ] - ); - } + $benchmark = $em->getRepository(DinAssetBenchmark::class)->find($params['benchmark']); + /** @var DinAsset $asset */ + $asset = $benchmark->getDinAsset(); + $assetTasks = $asset->getTasks(); - /** - * @Route("/catalogue-detail-unanswered", name="catalogue_detail_unanswered_step", methods={"GET"}) - * - * @param Request $request - * @return \Symfony\Component\HttpFoundation\Response - */ - public function catalogueDetailUnanswered(Request $request) - { - $content = (object) $request->query->all(); - $direction = $content->direction; - if ($direction !== 'next' && $direction !== 'prev') { - return $this->json('invalid direction', 409); - } + $em->getConnection()->beginTransaction(); - /** @var User $user */ - $user = $this->getUser(); - $em = $this->getDoctrine()->getManager(); - $catalogue = $user->getActiveCatalogue(); - if ($catalogue === null) { - return $this->json('Kein aktiver Fragenkatalog vorhanden', 409); - } + try { + $worksheet = new UserWorksheet($user); + $worksheet->setDinNumber($asset->getDinNumber()); + $worksheet->setDinAssetName($asset->getName()); + $worksheet->setFailureProbability(Utils::$riskFailure[$params['failure']][0]); + $worksheet->setFailureDamage(Utils::$riskCosts[$params['costs']][0]); + $worksheet->setMaintenanceAdvantage($params['maintenance']); + $worksheet->setInspectionAdvantage($params['inspection']); + $worksheet->setCheckAdvantage($params['check']); + $worksheet->setUserCycleMonths($params['cycle']); + $worksheet->setBandwidth($benchmark->getBandwidth()); + $worksheet->setRecMaintenanceCycleMonths($calculation['recCycleMaintenance']); + $worksheet->setRecInspectionCycleMonths($calculation['recCycleInspection']); + $worksheet->setDeviationPercentage($calculation['costDiffCurRecPercentage']); + $worksheet->setDeviationCosts($calculation['costDiffCurCycleRecCycle']); + + $em->persist($worksheet); + $em->flush(); - $currentCatalogueDetail = $catalogue->getCurrentCatalogueDetail(); - /** @var CatalogueDetail $tmpCatalogueDetail */ - $tmpCatalogueDetail = $direction === 'next' ? $currentCatalogueDetail->getNextCatalogueDetail() : $currentCatalogueDetail->getPrevCatalogueDetail(); - while($tmpCatalogueDetail->getId() !== $currentCatalogueDetail->getId()) { - if ($tmpCatalogueDetail->getAnswer() === null) { - $catalogue->setCurrentCatalogueDetail($tmpCatalogueDetail); + /** @var DinAssetTask $assetTask */ + foreach ($assetTasks as $assetTask) { + $worksheetTask = new UserWorksheetTask(); + $worksheetTask->setUserWorksheet($worksheet); + $worksheetTask->setDelimitation($assetTask->getDelimitation()); + $worksheetTask->setTask($assetTask->getTask()); + $worksheetTask->setInspection($assetTask->getInspection()); + $worksheetTask->setMaintenance($assetTask->getMaintenance()); + $worksheetTask->setService($assetTask->getService()); + $worksheetTask->setExpert($assetTask->getExpert()); + $worksheetTask->setSpecialist($assetTask->getSpecialist()); + $worksheetTask->setSkilledPersonnel($assetTask->getSkilledPersonnel()); + $worksheetTask->setNorm($assetTask->getNorm()); + $em->persist($worksheetTask); $em->flush(); - return $this->json( - [ - 'catalogue' => $catalogue->clientMapper(), - 'catalogueDetail' => $tmpCatalogueDetail->clientMapper(), - 'question' => $tmpCatalogueDetail->getQuestion()->clientMapper(), - ] - ); } - $tmpCatalogueDetail = $direction === 'next' ? $tmpCatalogueDetail->getNextCatalogueDetail() : $tmpCatalogueDetail->getPrevCatalogueDetail(); + $em->flush(); + $em->getConnection()->commit(); + + } catch (\Exception $e) { + $em->getConnection()->rollBack(); + return new JsonResponse(null, JsonResponse::HTTP_BAD_REQUEST); } - return $this->json('Kein Eintrag gefunden', 409); + return new JsonResponse($worksheet->getId(), JsonResponse::HTTP_OK); } /** - * @Route("/catalogue-detail", name="catalogue_detail_save", methods={"PATCH"}) - * - * @param Request $request - * @return \Symfony\Component\HttpFoundation\Response + * @Route("/worksheet/{uuid}", name="show_worksheet") */ - public function catalogueDetailSave(Request $request) + public function showWorksheet($uuid) { - $content = (object) $request->request->all(); - /** @var User $user */ $user = $this->getUser(); $em = $this->getDoctrine()->getManager(); - $catalogue = $user->getActiveCatalogue(); - if ($catalogue === null) { - return $this->json('Kein aktiver Fragenkatalog vorhanden', 409); - } - $currentCatalogueDetail = $catalogue->getCurrentCatalogueDetail(); - try { - $currentCatalogueDetail->setAnswer($content->answer); - } catch (\Exception $e) { - return $this->json('Invalide Antwort', 409); - } + /** @var UserWorksheet $worksheet */ + $worksheet = $em->getRepository(UserWorksheet::class)->findOneBy(['id' => $uuid]); - $currentCatalogueDetail->setNote($content->note); - $em->flush(); + if (null === $worksheet || $user->getId() !== $worksheet->getUser()->getId()) { + throw new \Exception('not allowed or not exists'); + } - return $this->json( + return $this->render('pages/worksheet.html.twig', [ - 'success' => true, - 'catalogue' => $catalogue->clientMapper(), + 'worksheet' => $worksheet, + 'isPdf' => false ] ); } /** - * @Route("/catalogue-finish", name="catalogue_finish", methods={"PATCH"}) - * - * @param Request $request - * @return \Symfony\Component\HttpFoundation\Response + * @Route("/download/{uuid}", name="download") */ - public function finishCatalog() + public function downloadLastCataloguePdf(Environment $twig, $uuid) { /** @var User $user */ $user = $this->getUser(); $em = $this->getDoctrine()->getManager(); - $catalogue = $user->getActiveCatalogue(); - if ($catalogue === null) { - return $this->json('Kein aktiver Fragenkatalog vorhanden', 409); - } - try { - $catalogue->setFinished(); - } catch (\Exception $e) { - return $this->json('Nicht alle Fragen beantwortet', 409); - } - $em->flush(); - return $this->json(true); - } + /** @var UserWorksheet $worksheet */ + $worksheet = $em->getRepository(UserWorksheet::class)->findOneBy(['id' => $uuid]); - /** - * @Route("/catalogue-finished", name="catalogue_finished", methods={"GET"}) - * - * @param Request $request - * @return \Symfony\Component\HttpFoundation\Response - */ - public function finishedCatalog() - { - /** @var User $user */ - $user = $this->getUser(); - - $catalogues = $user->getCatalogues(); - $numFinishedCatalogues = 0; - /** @var Catalogue $catalogue */ - foreach ($catalogues as $catalogue) { - $numFinishedCatalogues += $catalogue->getFinished() ? 1 : 0; + if (null === $worksheet || $user->getId() !== $worksheet->getUser()->getId()) { + throw new \Exception('not allowed or not exists'); } - return $this->render('pages/catalogue_finished.html.twig', - [ - 'remainingCatalogues' => $user->getMaxCatalogues() - $numFinishedCatalogues, - 'remainingDays' => $userExpiryDays = (new \DateTime('now'))->diff($user->getValidUntilDate())->days - ] - ); + $dompdf = UserRepository::renderCatalogue($twig, $worksheet); + + // Output the generated PDF to Browser (force download) + $fileName = "Arbeitskarte_".$worksheet->getCreationDate()->format('Y-m-d_H-i'); + $dompdf->stream($fileName, [ + "Attachment" => true + ]); + // NOTE: This is required, since method need a result! + exit(0); } /** diff --git a/httpdocs/src/Entity/Catalogue.php b/httpdocs/src/Entity/Catalogue.php deleted file mode 100644 index 29c6671..0000000 --- a/httpdocs/src/Entity/Catalogue.php +++ /dev/null @@ -1,222 +0,0 @@ -user = $user; - $this->finished = false; - $this->creation_date = new \DateTime('now', new \DateTimeZone('Europe/Berlin')); - $questions = $em->getRepository(Question::class)->findBy([], ['questionType' => 'ASC', 'id' => 'ASC']); - $this->numDetails = count($questions); - - $this->catalogueDetails = new ArrayCollection(); - $newCatalogueDetails = []; - $i = 1; - /** @var Question $question */ - foreach ($questions as $question) { - $newCatalogueDetails[] = new CatalogueDetail($question, $i); - $i++; - } - - $i = 0; - $cntDetails = count($newCatalogueDetails); - /** @var CatalogueDetail $newCatalogueDetail */ - foreach ($newCatalogueDetails as $newCatalogueDetail) { - if ($i === 0) { - // First element, set last element as previous - $this->currentCatalogueDetail = $newCatalogueDetail; - $newCatalogueDetail->setPrevCatalogueDetail($newCatalogueDetails[$cntDetails-1]); - } - if ($i > 0) { - $newCatalogueDetail->setPrevCatalogueDetail($newCatalogueDetails[$i-1]); - } - if ($i < ($cntDetails - 1)) { - $newCatalogueDetail->setNextCatalogueDetail($newCatalogueDetails[$i+1]); - } - if ($i === ($cntDetails - 1)) { - // First element, set first element as next - $newCatalogueDetail->setNextCatalogueDetail($newCatalogueDetails[0]); - } - $this->catalogueDetails->add($newCatalogueDetail); - $newCatalogueDetail->setCatalogue($this); - $i++; - } - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getUser() - { - return $this->user; - } - - /** - * @return PersistentCollection - */ - public function getCatalogueDetails(): Collection - { - return $this->catalogueDetails; - } - - /** - * @param Collection $catalogueDetails - */ - public function setCatalogueDetails(Collection $catalogueDetails): void - { - $this->catalogueDetails = $catalogueDetails; - } - - /** - * @return CatalogueDetail - */ - public function getCurrentCatalogueDetail(): CatalogueDetail - { - return $this->currentCatalogueDetail; - } - - /** - * @param CatalogueDetail $currentCatalogueDetail - */ - public function setCurrentCatalogueDetail(CatalogueDetail $currentCatalogueDetail): void - { - $this->currentCatalogueDetail = $currentCatalogueDetail; - } - - /** - * @return mixed - */ - public function getNumDetails() - { - return $this->numDetails; - } - - /** - * @param mixed $numDetails - */ - public function setNumDetails($numDetails): void - { - $this->numDetails = $numDetails; - } - - /** - * @return false - */ - public function getFinished(): bool - { - return $this->finished; - } - - /** - * @throws \Exception - */ - public function setFinished(): void - { - if ($this->getNumAnswers() !== $this->numDetails) { - throw new \Exception('catalogue not finishable'); - } - $this->finish_date = new \DateTime(); - $this->finished = true; - } - - /** - * @return mixed - */ - public function getFinishDate() - { - return $this->finish_date; - } - - /** - * @return \DateTime - */ - public function getCreationDate(): \DateTime - { - return $this->creation_date; - } - - public function getNumAnswers() - { - $numAnswers = 0; - /** @var CatalogueDetail $catalogueDetail */ - foreach ($this->catalogueDetails as $catalogueDetail) { - $numAnswers += $catalogueDetail->getAnswer() !== null ? 1 : 0; - } - return $numAnswers; - } - - public function clientMapper() - { - return [ - 'numAnswers' => $this->getNumAnswers(), - 'numDetails' => $this->numDetails, - ]; - } -} diff --git a/httpdocs/src/Entity/CatalogueDetail.php b/httpdocs/src/Entity/CatalogueDetail.php deleted file mode 100644 index 9a3e2de..0000000 --- a/httpdocs/src/Entity/CatalogueDetail.php +++ /dev/null @@ -1,214 +0,0 @@ - 1, self::ANSWER_WIDELY_FULFILLED => 0.66, self::ANSWER_PARTLY_FULFILLED => 0.33, self::ANSWER_NOT_FULFILLED => 0, self::ANSWER_IRRELEVANT => 0, - ); - - /** - * @ORM\Id() - * @ORM\GeneratedValue() - * @ORM\Column(type="integer") - */ - protected $id; - - /** - * @ORM\ManyToOne(targetEntity="Catalogue", inversedBy="catalogueDetails") - * @ORM\JoinColumn(name="catalogue_id", referencedColumnName="id", onDelete="SET NULL") - */ - protected $catalogue; - - /** - * @ORM\ManyToOne(targetEntity="CatalogueDetail") - * @ORM\JoinColumn(name="prev_catalogue_detail", referencedColumnName="id", onDelete="SET NULL") - */ - protected $prevCatalogueDetail; - - /** - * @ORM\ManyToOne(targetEntity="CatalogueDetail") - * @ORM\JoinColumn(name="next_catalogue_detail", referencedColumnName="id", onDelete="SET NULL") - */ - protected $nextCatalogueDetail; - - /** - * @ORM\ManyToOne(targetEntity="Question") - * @ORM\JoinColumn(name="question", referencedColumnName="id") - */ - protected $question; - - /** - * @ORM\Column(name="answer", type="string", columnDefinition="enum('fulfilled', 'not_fulfilled', 'partly_fulfilled', 'widely_fulfilled', 'irrelevant')", nullable=true) - */ - protected $answer; - - /** - * @ORM\Column(type="smallint", nullable=false, options={"unsigned" = true}) - */ - protected $orderNo; - - /** - * @ORM\Column(type="text", nullable=true) - */ - protected $note; - - /** - * CatalogueDetail constructor. - * @param Question $question - * @param $orderNo - * @param CatalogueDetail|null $prevCatalogueDetail - * @param CatalogueDetail|null $nextCatalogueDetail - */ - public function __construct(Question $question, $orderNo) - { - $this->question = $question; - $this->orderNo = $orderNo; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getCatalogue() - { - return $this->catalogue; - } - - /** - * @param mixed $catalogue - */ - public function setCatalogue($catalogue): void - { - $this->catalogue = $catalogue; - } - - /** - * @return mixed - */ - public function getPrevCatalogueDetail() - { - return $this->prevCatalogueDetail; - } - - /** - * @param mixed $prevCatalogueDetail - */ - public function setPrevCatalogueDetail($prevCatalogueDetail): void - { - $this->prevCatalogueDetail = $prevCatalogueDetail; - } - - /** - * @return mixed - */ - public function getNextCatalogueDetail() - { - return $this->nextCatalogueDetail; - } - - /** - * @param mixed $nextCatalogueDetail - */ - public function setNextCatalogueDetail($nextCatalogueDetail): void - { - $this->nextCatalogueDetail = $nextCatalogueDetail; - } - - /** - * @return Question - */ - public function getQuestion(): Question - { - return $this->question; - } - - /** - * @param Question $question - */ - public function setQuestion(Question $question): void - { - $this->question = $question; - } - - /** - * @return mixed - */ - public function getAnswer() - { - return $this->answer; - } - - /** - * @param mixed $answer - */ - public function setAnswer($answer): void - { - if (!array_key_exists($answer, self::$validAnswers)) { - throw new \Exception('invalid answer'); - } - $this->answer = $answer; - - } - - /** - * @return mixed - */ - public function getOrderNo() - { - return $this->orderNo; - } - - /** - * @param mixed $orderNo - */ - public function setOrderNo($orderNo): void - { - $this->orderNo = $orderNo; - } - - /** - * @return mixed - */ - public function getNote() - { - return $this->note; - } - - /** - * @param mixed $note - */ - public function setNote($note): void - { - $this->note = $note; - } - - public function clientMapper() - { - return [ - 'answer' => $this->answer, - 'orderNo' => $this->orderNo, - 'note' => $this->note - ]; - } -} diff --git a/httpdocs/src/Entity/DinAsset.php b/httpdocs/src/Entity/DinAsset.php index 65ab27c..ee4ffe0 100644 --- a/httpdocs/src/Entity/DinAsset.php +++ b/httpdocs/src/Entity/DinAsset.php @@ -37,25 +37,15 @@ class DinAsset */ protected $cycleMonthsMax; - /** - * @ORM\Column(type="smallint", nullable=false, options={"unsigned" = true}) - */ - protected $cycleMonthsRecInspection; - - /** - * @ORM\Column(type="smallint", nullable=false, options={"unsigned" = true}) - */ - protected $cycleMonthsRecMaintenance; - /** * @ORM\OneToMany(targetEntity="DinAssetTask", mappedBy="dinAsset", cascade={"persist", "remove"}) */ - private $tasks; + protected $tasks; /** * @ORM\OneToMany(targetEntity="DinAssetBenchmark", mappedBy="dinAsset", cascade={"persist", "remove"}) */ - private $benchmarks; + protected $benchmarks; /** * @return mixed @@ -137,44 +127,6 @@ class DinAsset $this->cycleMonthsMax = $cycleMonthsMax; } - /** - * @return mixed - */ - public function getCycleMonthsRecInspection() - { - return $this->cycleMonthsRecInspection; - } - - /** - * @param mixed $cycleMonthsRecInspection - */ - public function setCycleMonthsRecInspection($cycleMonthsRecInspection): void - { - if ($cycleMonthsRecInspection <= 0) { - throw new \Exception('invalid value'); - } - $this->cycleMonthsRecInspection = $cycleMonthsRecInspection; - } - - /** - * @return mixed - */ - public function getCycleMonthsRecMaintenance() - { - return $this->cycleMonthsRecMaintenance; - } - - /** - * @param mixed $cycleMonthsRecMaintenance - */ - public function setCycleMonthsRecMaintenance($cycleMonthsRecMaintenance): void - { - if ($cycleMonthsRecMaintenance <= 0) { - throw new \Exception('invalid value'); - } - $this->cycleMonthsRecMaintenance = $cycleMonthsRecMaintenance; - } - /** * @return mixed */ diff --git a/httpdocs/src/Entity/Question.php b/httpdocs/src/Entity/Question.php deleted file mode 100644 index 315856d..0000000 --- a/httpdocs/src/Entity/Question.php +++ /dev/null @@ -1,96 +0,0 @@ -questionType = $questionType; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getQuestionType() - { - return $this->questionType; - } - - /** - * @return mixed - */ - public function getQuestionText() - { - return $this->questionText; - } - - /** - * @param mixed $questionText - */ - public function setQuestionText($questionText): void - { - $this->questionText = $questionText; - } - - /** - * @return mixed - */ - public function getWeight() - { - return $this->weight; - } - - /** - * @param mixed $weight - */ - public function setWeight($weight): void - { - $this->weight = $weight; - } - - public function clientMapper() - { - return [ - 'questionType' => $this->questionType->getType(), - 'questionText' => $this->questionText, - ]; - } -} diff --git a/httpdocs/src/Entity/QuestionType.php b/httpdocs/src/Entity/QuestionType.php deleted file mode 100644 index ea503db..0000000 --- a/httpdocs/src/Entity/QuestionType.php +++ /dev/null @@ -1,151 +0,0 @@ - [ - self::RES_A => 'Sie haben keines der Kriterien in diesem Handlungsfeld als relevant für Ihre Organisation eingestuft!', - self::RES_B => 'Die benötigten Rahmenbedingungen (organisatorische, strategische, vertragliche bzw. finanzielle Voraussetzungen) sind nicht gegeben.', - self::RES_C => 'Die benötigten Rahmenbedingungen (organisatorische, strategische, vertragliche bzw. finanzielle Voraussetzungen) sind teilweise gegeben.', - self::RES_D => 'Die benötigten Rahmenbedingungen (organisatorische, strategische, vertragliche bzw. finanzielle Voraussetzungen) sind weitgehend gegeben.', - self::RES_E => 'Die benötigten Rahmenbedingungen (organisatorische, strategische, vertragliche bzw. finanzielle Voraussetzungen) sind gegeben.', - ], - 2 => [ - self::RES_A => 'Sie haben keines der Kriterien in diesem Handlungsfeld als relevant für Ihre Organisation eingestuft!', - self::RES_B => 'Die notwendigen Abläufe sind nicht geregelt.', - self::RES_C => 'Die notwendigen Abläufe sind teilweise geregelt.', - self::RES_D => 'Die notwendigen Abläufe sind weitgehend geregelt.', - self::RES_E => 'Die notwendigen Abläufe sind geregelt.', - ], - 3 => [ - self::RES_A => 'Sie haben keines der Kriterien in diesem Handlungsfeld als relevant für Ihre Organisation eingestuft!', - self::RES_B => 'Die erforderlichen personellen Ressourcen sind nicht vorhanden.', - self::RES_C => 'Die erforderlichen personellen Ressourcen sind teilweise vorhanden.', - self::RES_D => 'Die erforderlichen personellen Ressourcen sind weitgehend vorhanden.', - self::RES_E => 'Die erforderlichen personellen Ressourcen sind vorhanden.', - ], - 4 => [ - self::RES_A => 'Sie haben keines der Kriterien in diesem Handlungsfeld als relevant für Ihre Organisation eingestuft!', - self::RES_B => 'Die erforderlichen technischen Voraussetzungen sind nicht erfüllt.', - self::RES_C => 'Die erforderlichen technischen Voraussetzungen sind teilweise erfüllt.', - self::RES_D => 'Die erforderlichen technischen Voraussetzungen sind weitgehend erfüllt.', - self::RES_E => 'Die erforderlichen technischen Voraussetzungen sind erfüllt.', - ] - ]; - - // Text for actions of result pdf per category id - public static $txtActionPerType = [ - 1 => [ - self::RES_A => 'Überprüfen Sie bitte Ihre Antworten. Es ist sehr unwahrscheinlich, dass keines der Kriterien in diesem Handlungsfeld für Ihre Organisation relevant ist.', - self::RES_B => 'Soweit noch nicht geschehen, definieren Sie die für Ihre Organisation relevanten Anwendungsfälle und ermitteln Sie den Mehrwert sowie den Aufwand einer Einführung/Anwendung der BIM-Methodik.', - self::RES_C => 'Legen Sie anhand der ermittelten Mehrwerte und definierten Anwendungsfälle die BIM-Ziele und BIM-Strategie (ggf. auch BIM2FIELD und BIM2FM) für Ihre Organisation fest. Erstellen Sie eine Roadmap/ einen Aktionsplan zur schrittweisen Umsetzung der Strategie und Zielerreichung und sorgen Sie für eine Bereitstellung der für die Einführung der BIM-Methodik benötigten Finanzmittel. Berücksichtigen Sie BIM-spezifische Aufgaben in Ihrer Aufbauorganisation. Definieren Sie die übergeordneten (Organisations- und Asset-bezogenen) sowie projektspezifischen Informationsanforderungen und erstellen Sie BIM-spezifische vertragliche Regelungen oder Vertragsdokumente. ', - self::RES_D => 'Evaluieren Sie die Wirksamkeit durchgeführter Maßnahmen aus der Roadmap/des Aktionsplans zur Einführung der BIM-Methodik (wie die Anpassung der Aufbauorganisation, das Definieren von Informationsanforderungen, Regelungen in Verträgen, das Bereitstellen finanzieller Ressourcen). Schließen Sie identifizierte Lücken in der Roadmap und klären Sie ggf. aufgetretene Widersprüche. Sammeln und analysieren Sie Erfahrungen, indem Sie z. B. Pilotprojekte durchführen.', - self::RES_E => 'Überprüfen Sie, inwieweit Sie die mit der Anwendung der BIM-Methodik verknüpften Ziele bereits erreicht haben. Schließen Sie eventuell noch vorhandene Lücken in der Roadmap und initiieren Sie auf Basis von in durchgeführten Pilotprojekten gewonnenen lessons learned zusätzliche Verbesserungsmaßnahmen.', - ], - 2 => [ - self::RES_A => 'Überprüfen Sie bitte Ihre Antworten. Es ist sehr unwahrscheinlich, dass keines der Kriterien in diesem Handlungsfeld für Ihre Organisation relevant ist.', - self::RES_B => 'Regeln Sie zunächst die zugehörigen elementaren Prozesse vor allem (zunächst) zur Koordination der verschiedenen Fachdisziplinen/-bereiche mit Ihren separaten IT-Systemen im Planen, Bauen und Betreiben. Legen Sie auch die Grundlagen zur Lenkung dokumentierter Informationen (Daten, Modelle und Dokumente und deren Austausch in Papierform oder als elektronische Dokumente) und der Kommunikation fest.', - self::RES_C => 'Überarbeiten Sie die vorhandenen Prozessbeschreibungen für das Planen, Bauen und Betreiben hinsichtlich der Unterstützung durch die IT-Systeme und der Lenkung dokumentierter Informationen bei einer objektbasierten Modellierung (Daten, Modelle und Dokumente in 2D und/oder 3D) sowie den Austausch zwischen den Systemen. Standardisieren Sie dazu die Datenstrukturen und -formate (Klassifizierung und Attributierung von Objekten sowie deren Beziehungen/Hierarchien zur Vererbung, Austauschformate) für Ihre Organisation. Ergänzen Sie auch noch fehlende Ablaufregelungen.', - self::RES_D => 'Überprüfen Sie die Regelungen für Prozesse des Planens, Bauens und Betreibens sowie deren Umsetzung und die Unterstützung der Workflows durch IT-Systeme. Treffen bzw. konkretisieren Sie dabei Festlegungen zur Prüfung und Koordination von Daten und Modellen, zur Ermittlung von Herstell- und Nutzungskosten, zum geforderten Informationsgehalt an Meilensteinen und beim FM-Handover, zum Umfang der zu pflegenden Bestands- und Prozessdaten sowie betriebsrelevanter Dokumente und zu Eignungskriterien für externe Partner sowie zum Frontloading durch Betreiber/Nutzer. Stellen Sie in bereits vorhandenen Insellösungen für Fachgebiete bzw. Fachbereiche eine vollständige modellbasierte Kooperation in einer 3D-Umgebung über proprietäre Schnittstellen bzw. Middleware sicher. Passen Sie die Richtlinien zur Lenkung dokumentierter Informationen (Daten, Modelle und Dokumente) an und, wenn notwendig, verfeinern Sie die Standards für Datenstrukturen und -formate (Klassifizierung und Attributierung von Objekten sowie deren Beziehungen/Hierarchien zur Vererbung, Austauschformate) für Ihre Organisation. Ergänzen Sie auch ggf. noch fehlende Ablaufregelungen.', - self::RES_E => 'Überprüfen Sie, ob die BIM-Methodik in allen definierten Anwendungsfällen wie vorgesehen (auch über 3D hinaus) angewendet wird und dieses auch in der interdisziplinären Zusammenarbeit und Lebenszyklusphasen-übergreifend erfolgt. Überwachen Sie die Erreichung der BIM-Ziele durch Festlegen und Messen von Kennzahlen (KPI).', - ], - 3 => [ - self::RES_A => 'Überprüfen Sie bitte Ihre Antworten. Es ist sehr unwahrscheinlich, dass keines der Kriterien in diesem Handlungsfeld für Ihre Organisation relevant ist.', - self::RES_B => 'Beschreiben Sie die Rollen/Funktionen und deren grundsätzlichen Verantwortlichkeiten in den elementaren Prozessen. Ermitteln Sie die benötigten Qualifikationen interner und externer Prozessbeteiligter zur Einführung sowie Anwendung der BIM-Methodik und gleichen Sie diese mit den vorhandenen ab. Beginnen Sie mit der Planung notwendiger Qualifizierungsmaßnahmen.', - self::RES_C => 'Legen Sie zunächst die für die - projekt- sowie prozessspezifisch - wahrzunehmenden Aufgaben grundsätzlich verantwortlichen und rechenschaftspflichtigen Rollen/Funktionen fest. Delegieren Sie die Verantwortlichkeiten an bereits für die Organisation tätige Personen und statten Sie diese mit den entsprechend notwendigen Kompetenzen aus. Bemessen Sie zu den ermittelten Qualifikationen nun die erforderlichen personellen Kapazitäten zur Einführung und Anwendung der BIM-Methodik. Planen Sie Rekrutierungs- und weitere Qualifizierungsmaßnahmen und beginnen Sie mit deren Umsetzung.', - self::RES_D => 'Legen Sie nach den verantwortlichen und rechenschaftspflichtigen Rollen/Funktionen für die wahrzunehmenden Aufgaben in der Aufbauorganisation und in Projekten nun auch die zu konsultierenden und informierenden fest. Konkretisieren Sie diesbezüglich Funktions-/Stellenbeschreibungen, aber auch Leistungsbeschreibungen und Auswahlkriterien für externe Prozessbeteiligte. Sorgen Sie für eine Umsetzung der geplanten Qualifizierungs- und Rekrutierungsmaßnahmen.', - self::RES_E => 'Detaillieren Sie, soweit notwendig, die für die grundsätzlich in der Aufbauorganisation und in Projekten wahrzunehmenden Aufgaben getroffenen Festlegungen von verantwortlichen, rechenschaftspflichtigen, zu konsultierenden und informierenden Rollen/Funktionen für durchzuführende Tätigkeiten. Überprüfen Sie die Wirksamkeit durchgeführter Qualifizierungsmaßnahmen, die Eignung rekrutierten Personals sowie die Leistung externer Prozessbeteiligter.', - ], - 4 => [ - self::RES_A => 'Überprüfen Sie bitte Ihre Antworten. Es ist sehr unwahrscheinlich, dass keines der Kriterien in diesem Handlungsfeld für Ihre Organisation relevant ist.', - self::RES_B => 'Erfassen Sie die in den Fachdisziplinen/-bereichen vorhandenen, separaten IT-Systeme und wofür Sie derzeit bei den relevanten Prozessen angewendet werden. Überprüfen Sie auch die Möglichkeiten des Datenaustauschs über Ex-/Import und vorhandene Schnittstellen sowie die Voraussetzungen für die Bereitstellung von Kollaborationsplattformen durch Ihre Organisation und die Zugriffsmöglichkeiten darauf durch externe Prozessbeteiligte. Bewerten Sie die Eignung der vorhandenen IT-Infrastruktur für eine Anwendung der BIM-Methodik und ermitteln Sie den Bedarf an zusätzlicher Hard- und Software für die - zeitnah und perspektivisch - in Eigenleistung zu erbringenden Aufgaben sowie ergänzender externer Services.', - self::RES_C => 'Beschaffen Sie schrittweise die als erforderlich ermittelte Hard- und Software zur IT-Unterstützung der verschiedenen BIM-Anwendungsfälle im Betrieb und in Projekten, entsprechend der zeitnah und perspektivisch in Eigenleistung zu erbringenden Aufgaben. Stellen Sie eine für die Kollaboration bei einer objektbasierten Modellierung geeignete gemeinsame Datenumgebung bereit und gewährleisten Sie den notwendigen Datenaustausch mittels Ex-/Import, Schnittstellen bzw. Collaboration-Tools sowie eine ordnungsgemäße Datensicherung.', - self::RES_D => 'Stellen Sie mit den bereits in Fachgebieten/-bereichen vorhandenen Insellösungen eine vollständige modellbasierte Kooperation in einer 3D-Umgebung über Schnittstellen bzw. Middleware sicher. Überprüfen Sie, ob die gemeinsame Datenumgebung den Spezifikationen entspricht und hinterfragen Sie, ob die Zugriffs- und Auswertungsmöglichkeiten und der Informationsgehalt für die internen und externen Anwender zur Wahrnehmung ihrer Aufgaben ausreichend sind, insbesondere an den verschiedenen Meilensteinen und Datenübergabepunkten. Ermitteln Sie den erforderlichen zusätzlichen Bedarf an Hard- und Software sowie externer Services, sowohl für eventuell noch nicht abgedeckte Anwendungsfälle als auch für eine vollständige netzwerkbasierte Integration und zentralisierte Datenhaltung.', - self::RES_E => 'Überführen Sie noch in Fachgebieten/-bereichen vorhandene Insellösungen in eine integrierte, netzwerkbasierte IT-Landschaft mit zentralisierter und strukturierter Datenhaltung auf Organisations-, Asset- und Projektebene. Überprüfen Sie, ob die Zugriffs- und Auswertungsmöglichkeiten und der Informationsgehalt für alle internen und externen Anwender zur Wahrnehmung ihrer Aufgaben ausreichend sind, insbesondere an den verschiedenen Meilensteinen und Datenübergabepunkten. Stellen Sie bei Datenaustausch und Zusammenarbeit möglichst von proprietären auf herstellerneutrale Schnittstellen sowie IFC/IFD-konforme Webservices und spezielle Modelserver um.', - ] - ]; - - public static $txtResultTotal = [ - self::RES_A => 'Sie haben keine einzige Frage als relevant für Ihre Organisation eingestuft!', - self::RES_B => 'Die Voraussetzungen für eine Anwendung der BIM-Methodik in Ihrer Organisation sind offenbar noch nicht erfüllt, auch wenn bereits Maßnahmen dazu initiiert wurden. Der Reifegrad Ihrer Organisation ist noch als "Pre-BIM" zu bezeichnen.', - self::RES_C => 'Die Voraussetzungen für die Anwendung der BIM-Methodik sind offenbar nur in einigen Teilbereichen Ihrer Organisation erfüllt, die Aufbau- und Ablauforganisation nur hierfür definiert. Der Reifegrad Ihrer Organisation erlaubt eine "objektbasierte Modellierung".', - self::RES_D => 'Die BIM-Methodik ist in Ihrer Organisation eingeführt, die Voraussetzungen für eine gelenkte Anwendung sind weitgehend erfüllt. Der Reifegrad Ihrer Organisation entspricht dem einer "modellbasierten Kooperation" oder auch "pBIM" bzw. "little BIM".', - self::RES_E => 'Die BIM-Methodik ist anscheinend in Ihrer Organisation integriert, die Voraussetzungen für eine umfängliche Anwendung ist grundsätzlich erfüllt. Der Reifegrad Ihrer Organisation entspricht dem einer "netzwerkbasierten Integration" oder auch "iBIM" bzw. "big BIM".', - ]; - - public static $txtActionTotal = [ - self::RES_A => 'Überprüfen Sie bitte Ihre Antworten. Da kann was nicht stimmen!', - self::RES_B => 'Das Erreichen der nächst höheren Reifestufe (objektbasierte Modellierung) erfordert fundamentale und dauerhafte Änderungen oder auch „Transformationen“ in Ihrer Organisation. Diese Veränderungen erfolgen in der Regel aber nicht auf einen Schlag, sondern in Form von Schritten, die verschiedenen Handlungsfeldern zugeordnet werden können. Hinweise, welche grundlegenden Voraussetzungen für eine Einführung der BIM-Methodik zu schaffen sind, sind aus den Ergebnissen in den einzelnen Handlungsfeldern abzulesen.', - self::RES_C => 'Das Erreichen der nächst höheren Reifestufe (modellbasierte Kooperation oder auch pBIM bzw. little BIM) erfordert fundamentale und dauerhafte Änderungen oder auch „Transformationen“ in Ihrer Organisation. Diese Veränderungen erfolgen in der Regel aber nicht auf einen Schlag, sondern in Form von Schritten, die verschiedenen Handlungsfeldern zugeordnet werden können. Hinweise, welche Voraussetzungen für eine Anwendung der BIM-Methodik noch zu schaffen sind, sind aus den Ergebnissen in den einzelnen Handlungsfeldern abzulesen.', - self::RES_D => 'Das Erreichen der nächst höheren Reifestufe (vollständige Integration oder auch "iBIM" bzw. "bigBIM") erfordert noch einige fundamentale und dauerhafte Änderungen oder auch „Transformationen“ in Ihrer Organisation. Diese Veränderungen erfolgen in der Regel aber nicht auf einen Schlag, sondern in Form von Schritten, die verschiedenen Handlungsfeldern zugeordnet werden können. Hinweise auf dazu notwendige Schritte sind aus den Ergebnissen in den einzelnen Handlungsfeldern abzulesen.', - self::RES_E => 'Hinweise auf eventuell noch notwendige Schritte zu einer vollständigen Integration der BIM-Methodik in Ihrer Organisation sind aus den Ergebnissen in den einzelnen Handlungsfeldern abzulesen.', - ]; - - - /** - * @ORM\Id() - * @ORM\GeneratedValue() - * @ORM\Column(type="integer") - */ - protected $id; - - /** - * @ORM\Column(name="type", type="string", length=191, nullable=false, unique=true) - */ - protected $type; - - - public function __construct($type) - { - $this->type = $type; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getType() - { - return $this->type; - } - - public static function getResultCategoryTextIdentifier($percentage, $count) - { - if ($count === 0) { - return self::RES_A; - } - if ($percentage < 50) { - return self::RES_B; - } - if ($percentage < 67) { - return self::RES_C; - } - if ($percentage < 81) { - return self::RES_D; - } - return self::RES_E; - } -} diff --git a/httpdocs/src/Entity/User.php b/httpdocs/src/Entity/User.php index 222ad9f..884f522 100644 --- a/httpdocs/src/Entity/User.php +++ b/httpdocs/src/Entity/User.php @@ -17,7 +17,7 @@ use Symfony\Component\Security\Core\User\UserInterface; */ class User implements UserInterface { - const MAX_CATALOGUES_PER_USER = 3; + const MAX_WORKSHEETS_PER_USER = 3; // Costs of password encryption const CRYPT_COST = 12; @@ -62,14 +62,14 @@ class User implements UserInterface protected $lastname; /** - * @ORM\OneToMany(targetEntity="Catalogue", mappedBy="user", cascade={"persist", "remove"}) + * @ORM\OneToMany(targetEntity="UserWorksheet", mappedBy="user", cascade={"persist", "remove"}) */ - protected $catalogues; + protected $worksheets; /** * @ORM\Column(type="smallint", nullable=false, options={"unsigned" = true}) */ - protected $maxCatalogues; + protected $maxWorksheets; /** * @ORM\Column(type="string", length=100, nullable=true) @@ -144,12 +144,12 @@ class User implements UserInterface /** * @ORM\Column(type="datetime", nullable=false) */ - protected $creation_date; + protected $creationDate; /** * @ORM\Column(type="datetime", nullable=true) */ - protected $valid_until_date; + protected $validUntilDate; /** * @ORM\Column(type="boolean", options={"default":"0"}) @@ -198,14 +198,14 @@ class User implements UserInterface $this->setPassword($password); $this->active = true; $this->creationUser = $editingUser; - $this->maxCatalogues = self::MAX_CATALOGUES_PER_USER; - $this->creation_date = new \DateTime('now', new \DateTimeZone('Europe/Berlin')); + $this->maxWorksheets = self::MAX_WORKSHEETS_PER_USER; + $this->creationDate = new \DateTime('now', new \DateTimeZone('Europe/Berlin')); $this->acceptedTerms = false; $this->acceptedLegal = false; if ($userType->getType() === UserTypeRepository::USER_TYPE_USER) { - $this->valid_until_date = new \DateTime('now', new \DateTimeZone('Europe/Berlin')); - $this->valid_until_date->modify('+3 year'); + $this->validUntilDate = new \DateTime('now', new \DateTimeZone('Europe/Berlin')); + $this->validUntilDate->modify('+3 year'); } } @@ -252,57 +252,33 @@ class User implements UserInterface /** * @return mixed */ - public function getCatalogues() + public function getWorksheets() { - return $this->catalogues; + return $this->worksheets; } - - public function addNewCatalogue(ObjectManager $em) - { - if (!$this->isActive()) { - throw new \Exception('user inactive'); - } - - if (count($this->catalogues) >= $this->getMaxCatalogues()) { - throw new \Exception('max number of catalogues reached'); - } - - foreach ($this->catalogues as $catalogue) { - if (!$catalogue->getFinished()) { - throw new \Exception('active catalogue exists'); - } - } - $newCatalogue = new Catalogue($em, $this); - $this->catalogues[] = new Catalogue($em, $this); - return $newCatalogue; - } - - public function getActiveCatalogue() + /** + * @param mixed $worksheets + */ + public function setWorksheets($worksheets): void { - /** @var Catalogue $catalogue */ - foreach ($this->catalogues as $catalogue) { - if (!$catalogue->getFinished()) { - return $catalogue; - } - } - return null; + $this->worksheets = $worksheets; } /** * @return int */ - public function getMaxCatalogues(): int + public function getMaxWorksheets(): int { - return $this->maxCatalogues; + return $this->maxWorksheets; } /** - * @param int $maxCatalogues + * @param int $maxWorksheets */ - public function setMaxCatalogues(int $maxCatalogues): void + public function setMaxWorksheets(int $maxWorksheets): void { - $this->maxCatalogues = $maxCatalogues; + $this->maxWorksheets = $maxWorksheets; } /** @@ -542,7 +518,7 @@ class User implements UserInterface */ public function getCreationDate() { - return $this->creation_date; + return $this->creationDate; } /** @@ -550,7 +526,7 @@ class User implements UserInterface */ public function getValidUntilDate(): ?\DateTime { - return $this->valid_until_date; + return $this->validUntilDate; } /** @@ -642,11 +618,11 @@ class User implements UserInterface } /** - * @param \DateTime $valid_until_date + * @param \DateTime $validUntilDate */ - public function setValidUntilDate(?\DateTime $valid_until_date): void + public function setValidUntilDate(?\DateTime $validUntilDate): void { - $this->valid_until_date = $valid_until_date; + $this->validUntilDate = $validUntilDate; } /** @@ -731,28 +707,4 @@ class User implements UserInterface $this->setEmail($em, $clientData->email); } - /** - * Client mapper - * @param ObjectManager $em - * @param bool $fullMapping - * @return array - */ - public function clientMapper(ObjectManager $em, $fullMapping = false) - { - /** @var UserType $userType */ - $userType = $em->getRepository('App:UserType')->find($this->userTypeId); - - return [ - 'id' => $this->id, - 'email' => $this->email, - 'firstname' => $this->firstname, - 'lastname' => $this->lastname, - 'active' => $this->active, - 'visible' => $this->visible, - 'valid_until_date' => $this->getValidUntilDate(), - 'v_translated_role' => UserType::getTranslatedRole($this->userTypeId), - 'v_user_type' => $userType->clientMapper($em, $fullMapping), - ]; - } - } diff --git a/httpdocs/src/Entity/UserWorksheet.php b/httpdocs/src/Entity/UserWorksheet.php new file mode 100644 index 0000000..d3e43c4 --- /dev/null +++ b/httpdocs/src/Entity/UserWorksheet.php @@ -0,0 +1,367 @@ +user = $user; + $this->creationDate = new \DateTime('now', new \DateTimeZone('Europe/Berlin')); + } + + /** + * @return mixed + */ + public function getId() + { + return $this->id; + } + + /** + * @return mixed + */ + public function getUser() + { + return $this->user; + } + + /** + * @param mixed $user + */ + public function setUser($user): void + { + $this->user = $user; + } + + /** + * @return mixed + */ + public function getDinNumber() + { + return $this->dinNumber; + } + + /** + * @param mixed $dinNumber + */ + public function setDinNumber($dinNumber): void + { + $this->dinNumber = $dinNumber; + } + + /** + * @return mixed + */ + public function getDinAssetName() + { + return $this->dinAssetName; + } + + /** + * @param mixed $dinAssetName + */ + public function setDinAssetName($dinAssetName): void + { + $this->dinAssetName = $dinAssetName; + } + + /** + * @return mixed + */ + public function getFailureProbability() + { + return $this->failureProbability; + } + + /** + * @param mixed $failureProbability + */ + public function setFailureProbability($failureProbability): void + { + $this->failureProbability = $failureProbability; + } + + /** + * @return mixed + */ + public function getFailureDamage() + { + return $this->failureDamage; + } + + /** + * @param mixed $failureDamage + */ + public function setFailureDamage($failureDamage): void + { + $this->failureDamage = $failureDamage; + } + + /** + * @return mixed + */ + public function getMaintenanceAdvantage() + { + return $this->maintenanceAdvantage; + } + + /** + * @param mixed $maintenanceAdvantage + */ + public function setMaintenanceAdvantage($maintenanceAdvantage): void + { + $this->maintenanceAdvantage = $maintenanceAdvantage; + } + + /** + * @return mixed + */ + public function getInspectionAdvantage() + { + return $this->inspectionAdvantage; + } + + /** + * @param mixed $inspectionAdvantage + */ + public function setInspectionAdvantage($inspectionAdvantage): void + { + $this->inspectionAdvantage = $inspectionAdvantage; + } + + /** + * @return mixed + */ + public function getCheckAdvantage() + { + return $this->checkAdvantage; + } + + /** + * @param mixed $checkAdvantage + */ + public function setCheckAdvantage($checkAdvantage): void + { + $this->checkAdvantage = $checkAdvantage; + } + + /** + * @return mixed + */ + public function getUserCycleMonths() + { + return $this->userCycleMonths; + } + + /** + * @param mixed $userCycleMonths + */ + public function setUserCycleMonths($userCycleMonths): void + { + $this->userCycleMonths = $userCycleMonths; + } + + /** + * @return mixed + */ + public function getBandwidth() + { + return $this->bandwidth; + } + + /** + * @param mixed $bandwidth + */ + public function setBandwidth($bandwidth): void + { + $this->bandwidth = $bandwidth; + } + + /** + * @return mixed + */ + public function getRecMaintenanceCycleMonths() + { + return $this->recMaintenanceCycleMonths; + } + + /** + * @param mixed $recMaintenanceCycleMonths + */ + public function setRecMaintenanceCycleMonths($recMaintenanceCycleMonths): void + { + $this->recMaintenanceCycleMonths = $recMaintenanceCycleMonths; + } + + /** + * @return mixed + */ + public function getRecInspectionCycleMonths() + { + return $this->recInspectionCycleMonths; + } + + /** + * @param mixed $recInspectionCycleMonths + */ + public function setRecInspectionCycleMonths($recInspectionCycleMonths): void + { + $this->recInspectionCycleMonths = $recInspectionCycleMonths; + } + + /** + * @return mixed + */ + public function getDeviationCosts() + { + return $this->deviationCosts; + } + + /** + * @param mixed $deviationCosts + */ + public function setDeviationCosts($deviationCosts): void + { + $this->deviationCosts = $deviationCosts; + } + + /** + * @return mixed + */ + public function getDeviationPercentage() + { + return $this->deviationPercentage; + } + + /** + * @param mixed $deviationPercentage + */ + public function setDeviationPercentage($deviationPercentage): void + { + $this->deviationPercentage = $deviationPercentage; + } + + /** + * @return \DateTime + */ + public function getCreationDate(): \DateTime + { + return $this->creationDate; + } + + /** + * @return mixed + */ + public function getUserWorkSheetTasks() + { + return $this->userWorkSheetTasks; + } + + /** + * @param mixed $userWorkSheetTasks + */ + public function setUserWorkSheetTasks($userWorkSheetTasks): void + { + $this->userWorkSheetTasks = $userWorkSheetTasks; + } + + + +} diff --git a/httpdocs/src/Entity/UserWorksheetTask.php b/httpdocs/src/Entity/UserWorksheetTask.php new file mode 100644 index 0000000..ae02824 --- /dev/null +++ b/httpdocs/src/Entity/UserWorksheetTask.php @@ -0,0 +1,239 @@ +id; + } + + /** + * @return mixed + */ + public function getUserWorksheet() + { + return $this->userWorksheet; + } + + /** + * @param mixed $userWorksheet + */ + public function setUserWorksheet($userWorksheet): void + { + $this->userWorksheet = $userWorksheet; + } + + /** + * @return mixed + */ + public function getDelimitation() + { + return $this->delimitation; + } + + /** + * @param mixed $delimitation + */ + public function setDelimitation($delimitation): void + { + $this->delimitation = $delimitation; + } + + /** + * @return mixed + */ + public function getTask() + { + return $this->task; + } + + /** + * @param mixed $task + */ + public function setTask($task): void + { + $this->task = $task; + } + + /** + * @return mixed + */ + public function getInspection() + { + return $this->inspection; + } + + /** + * @param mixed $inspection + */ + public function setInspection($inspection): void + { + $this->inspection = $inspection; + } + + /** + * @return mixed + */ + public function getMaintenance() + { + return $this->maintenance; + } + + /** + * @param mixed $maintenance + */ + public function setMaintenance($maintenance): void + { + $this->maintenance = $maintenance; + } + + /** + * @return mixed + */ + public function getService() + { + return $this->service; + } + + /** + * @param mixed $service + */ + public function setService($service): void + { + $this->service = $service; + } + + /** + * @return mixed + */ + public function getExpert() + { + return $this->expert; + } + + /** + * @param mixed $expert + */ + public function setExpert($expert): void + { + $this->expert = $expert; + } + + /** + * @return mixed + */ + public function getSpecialist() + { + return $this->specialist; + } + + /** + * @param mixed $specialist + */ + public function setSpecialist($specialist): void + { + $this->specialist = $specialist; + } + + /** + * @return mixed + */ + public function getSkilledPersonnel() + { + return $this->skilledPersonnel; + } + + /** + * @param mixed $skilledPersonnel + */ + public function setSkilledPersonnel($skilledPersonnel): void + { + $this->skilledPersonnel = $skilledPersonnel; + } + + /** + * @return mixed + */ + public function getNorm() + { + return $this->norm; + } + + /** + * @param mixed $norm + */ + public function setNorm($norm): void + { + $this->norm = $norm; + } + +} diff --git a/httpdocs/src/Repository/UserRepository.php b/httpdocs/src/Repository/UserRepository.php index 16232a8..7a3433a 100644 --- a/httpdocs/src/Repository/UserRepository.php +++ b/httpdocs/src/Repository/UserRepository.php @@ -8,6 +8,7 @@ use App\Entity\CatalogueDetail; use App\Entity\Question; use App\Entity\QuestionType; use App\Entity\User; +use App\Entity\UserWorksheet; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; use Dompdf\Dompdf; @@ -27,7 +28,7 @@ class UserRepository extends ServiceEntityRepository $user->setFirstname($clientData->firstname); $user->setLastname($clientData->lastname); $user->setPhoneNo($clientData->phoneNo); - $user->setMaxCatalogues($clientData->maxCatalogues); + $user->setMaxWorksheets($clientData->maxCatalogues); $user->setCompany($clientData->company); $user->setDepartment($clientData->department); $user->setOccupation($clientData->occupation); @@ -47,15 +48,8 @@ class UserRepository extends ServiceEntityRepository /** * Renders user catalogue - * - * @param Environment $twig - * @param Catalogue $catalogue - * @return Dompdf - * @throws \Twig\Error\LoaderError - * @throws \Twig\Error\RuntimeError - * @throws \Twig\Error\SyntaxError */ - public static function renderCatalogue(Environment $twig, Catalogue $catalogue) + public static function renderCatalogue(Environment $twig, UserWorksheet $worksheet) { // Configure Dompdf according to your needs $pdfOptions = new Options(); @@ -66,67 +60,14 @@ class UserRepository extends ServiceEntityRepository $dompdf = new Dompdf($pdfOptions); $dompdf->setPaper('A4', 'portrait'); - $result = []; - /** @var CatalogueDetail $catalogueDetail */ - foreach($catalogue->getCatalogueDetails() as $catalogueDetail) { - /** @var Question $question */ - $question = $catalogueDetail->getQuestion(); - $questionType = $question->getQuestionType(); - $questionTypeName = $questionType->getType(); - if (!array_key_exists($questionTypeName, $result)) { - $result[$questionTypeName] = [ - 'count' => 0, - 'maxPoints' => 0, - 'points' => 0, - 'countAll' => 0, - 'percentage' => 0, - 'id' => $questionType->getId(), - 'txtResult' => '', - 'txtAction' => '', - ]; - } - $answer = $catalogueDetail->getAnswer(); - $result[$questionTypeName]['countAll']++; - if ($answer !== CatalogueDetail::ANSWER_IRRELEVANT) { - $result[$questionTypeName]['maxPoints'] += $question->getWeight(); - $result[$questionTypeName]['count']++; - } - if ($answer === CatalogueDetail::ANSWER_FULFILLED || $answer === CatalogueDetail::ANSWER_PARTLY_FULFILLED || $answer === CatalogueDetail::ANSWER_WIDELY_FULFILLED) { - $result[$questionTypeName]['points'] += $question->getWeight() * CatalogueDetail::$validAnswers[$answer]; - } - } - - $total = [ - 'count' => 0, - 'maxPoints' => 0, - 'points' => 0, - 'countAll' => 0, - 'percentage' => 0, - 'txtResult' => '', - 'txtAction' => '', - ]; - foreach ($result as $qTypeName => $item) { - $percentage = $item['maxPoints'] > 0 ? ($item['points'] / $item['maxPoints'] * 100) : 0; - $result[$qTypeName]['percentage'] = $percentage; - $result[$qTypeName]['txtResult'] = QuestionType::$txtResultPerType[$item['id']][QuestionType::getResultCategoryTextIdentifier($percentage, $item['count'])]; - $result[$qTypeName]['txtAction'] = QuestionType::$txtActionPerType[$item['id']][QuestionType::getResultCategoryTextIdentifier($percentage, $item['count'])]; - $total['count'] += $item['count']; - $total['maxPoints'] += $item['maxPoints']; - $total['points'] += $item['points']; - $total['countAll'] += $item['countAll']; - } - $total['percentage'] = $total['maxPoints'] > 0 ? ($total['points'] / $total['maxPoints'] * 100) : 0; - $total['txtResult'] = QuestionType::$txtResultTotal[QuestionType::getResultCategoryTextIdentifier($total['percentage'], $total['count'])]; - $total['txtAction'] = QuestionType::$txtActionTotal[QuestionType::getResultCategoryTextIdentifier($total['percentage'], $total['count'])]; - // Retrieve the HTML generated in our twig file - $html = $twig->render('pdf/pdf.html.twig', [ - 'user' => $catalogue->getUser(), - 'catalogue' => $catalogue, - 'result' => $result, - 'total' => $total - ]); + $html = $twig->render('pages/worksheet.html.twig', + [ + 'worksheet' => $worksheet, + 'isPdf' => true + ] + ); // Load HTML to Dompdf $dompdf->loadHtml($html); diff --git a/httpdocs/src/Service/CalculatorService.php b/httpdocs/src/Service/CalculatorService.php new file mode 100644 index 0000000..063fd6f --- /dev/null +++ b/httpdocs/src/Service/CalculatorService.php @@ -0,0 +1,59 @@ +getDinAsset(); + $userCycle = $params['cycle']; + + $pointsFailure = Utils::$riskFailure[$params['failure']][1]; + $pointsCosts = Utils::$riskCosts[$params['costs']][1]; + if ((int)$params['costs'] === Utils::PERSON_DAMAGE_INDEX) { + $pointsCosts = Utils::PERSON_DAMAGE_BASE - $pointsFailure; + } + $riskPoints = $pointsFailure + $pointsCosts; + $riskFactor = Utils::$riskPoints[$riskPoints]['factor']; + + $recCycleMaintenance = $asset->getCycleMonthsMax(); + if ((int)($params['maintenance']) === 1 && ((int)$params['check']) === 1 ) { + $recCycleMaintenance = (int) ($asset->getCycleMonthsMax() * $riskFactor); + if ($recCycleMaintenance < $asset->getCycleMonthsMin()) { + $recCycleMaintenance = $asset->getCycleMonthsMin(); + } + } + $costsCurrentPerYear = (12 / $userCycle) * $benchmark->getAverageCosts(); + $costsRecPerYear = (12 / $recCycleMaintenance) * $benchmark->getAverageCosts(); + + $recCycleInspection = $asset->getCycleMonthsMax(); + if ( ((int)$params['inspection']) === 1 ) { + $recCycleInspection = (int) ($asset->getCycleMonthsMax() * $riskFactor); + if ($recCycleInspection < $asset->getCycleMonthsMin()) { + $recCycleInspection = $asset->getCycleMonthsMin(); + } + } + $costDiffCurCycleRecCycle = $costsCurrentPerYear - $costsRecPerYear; + $costDiffCurRecPercentage = 1 - ($userCycle / $recCycleMaintenance); + + $res[self::KEY_REC_CYCLE_MAINTENANCE] = $recCycleMaintenance; + $res[self::KEY_REC_CYCLE_INSPECTION] = $recCycleInspection; + $res[self::KEY_COST_DIFF_CUR_REC_PERCENTAGE] = round($costDiffCurRecPercentage, 2); + $res[self::KEY_COST_DIFF_CUR_REC_CYCLE] = round($costDiffCurCycleRecCycle, 2); + return $res; + } + +} \ No newline at end of file diff --git a/httpdocs/symfony.lock b/httpdocs/symfony.lock index 01a3119..79e264c 100644 --- a/httpdocs/symfony.lock +++ b/httpdocs/symfony.lock @@ -1,4 +1,7 @@ { + "brick/math": { + "version": "0.9.3" + }, "composer/package-versions-deprecated": { "version": "1.11.99.1" }, @@ -181,6 +184,24 @@ "psr/simple-cache": { "version": "1.0.1" }, + "ramsey/collection": { + "version": "1.3.0" + }, + "ramsey/uuid": { + "version": "4.2.3" + }, + "ramsey/uuid-doctrine": { + "version": "2.0", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "1.3", + "ref": "471aed0fbf5620b8d7f92b7a5ebbbf6c0945c27a" + }, + "files": [ + "config/packages/ramsey_uuid_doctrine.yaml" + ] + }, "sabberworm/php-css-parser": { "version": "8.3.1" }, diff --git a/httpdocs/templates/pages/risk_analysis.html.twig b/httpdocs/templates/pages/risk_analysis.html.twig index 8a7a1c5..1879062 100644 --- a/httpdocs/templates/pages/risk_analysis.html.twig +++ b/httpdocs/templates/pages/risk_analysis.html.twig @@ -55,6 +55,17 @@ {% endfor %} - Berechnen + Berechnen +
    +
    Inspektion (empfohlener Zyklus in Monaten)
    +
    +
    Wartung (empfohlener Zyklus in Monaten)
    +
    +
    Kostenersparnis in Prozent
    +
    +
    Kostenersparnis in Euro
    +
    +
    + Arbeitskarte erstellen {% endblock %} diff --git a/httpdocs/templates/pages/start.html.twig b/httpdocs/templates/pages/start.html.twig index 21e9d94..19342b6 100644 --- a/httpdocs/templates/pages/start.html.twig +++ b/httpdocs/templates/pages/start.html.twig @@ -4,35 +4,23 @@ {% block body %}

    Übersicht

    -{#

    Hier stehen Infos zum Fragenkatalog.

    #} -

    RealFM und der Arbeitskreis MPP wünschen Ihnen nun viel Spaß bei der Bearbeitung des Fragenkataloges sowie wichtige Erkenntnisse und wertvolle Hinweise für die BIM2FM-Stategie und für notwendige Maßnahmen zur Umsetzung.

    - {% if noMoreCatalogues %} -

    Sie haben die maximale Anzahl an Durchgängen erreicht.

    +

    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore.

    + {% if numWorksheetsLeft <= 0 %} +

    Sie haben die maximale Anzahl an Durchgängen erreicht. Bitte wenden sie sich an uns, wenn sie weitere Analysen benötigen.

    {% else %}
    +
    (noch {{ numWorksheetsLeft }} Durchgänge möglich)
    {% endif %} -

    Ihre Arbeitskarten:

    +

    Ihre bisher abgeschlossenen Arbeitskarten:

    - {% if userHasFinishedCatalogue %} -

    "Ihr MPPScore"

    -

    Hier erhalten Sie eine Zusammenfassung Ihrer Antworten zu den Fragen aus MPPTool und das Ergebnis der Auswertung als PDF-Dokument.

    - Herunterladen -

     

    - {% include 'snippets/sponsors.html.twig' %} - {% endif %} {% endblock %} diff --git a/httpdocs/templates/pages/worksheet.html.twig b/httpdocs/templates/pages/worksheet.html.twig new file mode 100644 index 0000000..3bcfe79 --- /dev/null +++ b/httpdocs/templates/pages/worksheet.html.twig @@ -0,0 +1,79 @@ +{% extends 'base.html.twig' %} + +{% block title %}MPP-Tool{% endblock %} + +{% block body %} +

    Arbeitsblatt (erstellt am: {{ worksheet.creationDate|date("d.m.Y H:i") }})

    + +
    +
    DIN
    +
    {{ worksheet.dinNumber }}
    +
    Anlage
    +
    {{ worksheet.dinAssetName }}
    +
    + +

    Risikoanalyse

    +
    +
    Wie hoch ist die Ausfallwahrscheinlichkeit?
    +
    {{ worksheet.failureProbability }}
    +
    Wie hoch ist der Schaden bei Ausfall?
    +
    {{ worksheet.failureDamage }}
    +
    + +

    Optimierungsckeck

    +
    +
    Wird durch die Wartung der Abnutzungsvorrat positiv beeinflusst?
    +
    {% if worksheet.maintenanceAdvantage == 1 %}Ja{% else %}nein{% endif %}
    +
    Kann durch eine Inspektion der Zustand der Anlage erkannt werden?
    +
    {% if worksheet.inspectionAdvantage == 1 %}Ja{% else %}nein{% endif %}
    +
    Genügt eine einfache Sichtkontrolle im Rahmen des regelmäßigen Rundgangs?
    +
    {% if worksheet.checkAdvantage == 1 %}Ja{% else %}nein{% endif %}
    +
    +
    +
    Aktueller Zyklus (in Monaten)
    +
    {{ worksheet.userCycleMonths }}
    +
    Bandbreite Anlage
    +
    {% if worksheet.bandwidth is not null %}{{ worksheet.bandwidth }}{% else %}-{% endif %}
    +
    + +

    Ergebnis

    +
    +
    Empfehlung Wartung (in Monaten)
    +
    {{ worksheet.recMaintenanceCycleMonths }}
    +
    Empfehlung Inspektion (in Monaten)
    +
    {{ worksheet.recInspectionCycleMonths }}
    +
    Einsparpotential p.a. (%)
    +
    {{ worksheet.deviationPercentage }}
    +
    Einsparpotential p.a. (€)
    +
    {{ worksheet.deviationCosts }}
    +
    + +

    Tätigkeiten

    +
    + {% for task in worksheet.userWorkSheetTasks %} +
    Abgrenzung
    +
    {% if task.delimitation is not null %}{{ task.delimitation }}{% else %}-{% endif %}
    +
    Tätigkeit
    +
    {{ task.task }}
    +
    Inspektion
    +
    {{ task.inspection }}
    +
    Wartung
    +
    {{ task.maintenance }}
    +
    Instandsetzung
    +
    {{ task.service }}
    +
    Sachverständiger
    +
    {{ task.expert }}
    +
    Sachkundige
    +
    {{ task.specialist }}
    +
    Fachkraft
    +
    {{ task.skilledPersonnel }}
    +
    Normative Grundlage
    +
    {{ task.norm }}
    + {% endfor %} +
    + + {% if isPdf == false %} + Arbeitskarte als PDF herunterladen + {% endif %} + +{% endblock %}
    Neue Arbeitskarte erstellen -{#

    Leider ist Ihre Nutzungsdauer von 3 Jahren abgelaufen. Wenn Sie den Fragenkatalog noch einmal bearbeiten möchten, wenden Sie sich bitte an die Geschäftsstelle.

    #}